From 1f4872b25d297688daaf8cfa665aed511b58c226 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Wed, 12 Apr 2023 20:43:04 -0400 Subject: [PATCH] [jak2] fix hitting enemies after they die (#2475) Closes #2473 The return type of a method was wrong. --- decompiler/config/jak2/all-types.gc | 2 +- goal_src/jak2/engine/ai/enemy-h.gc | 2 +- goal_src/jak2/engine/ai/enemy.gc | 1 - goal_src/jak2/levels/temple/rhino.gc | 1 - .../reference/jak2/engine/ai/enemy-h_REF.gc | 2 +- .../reference/jak2/engine/ai/enemy_REF.gc | 4 +- .../reference/jak2/levels/temple/rhino_REF.gc | 64 ++++++++++--------- 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 5402eec29f..392f46d708 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -32921,7 +32921,7 @@ "Handles various events for the enemy @TODO - unsure if there is a pattern for the events and this should have a more specific name" (_type_ process int symbol event-message-block) object 74) - (enemy-method-75 (_type_ process touching-shapes-entry) none 75) + (enemy-method-75 (_type_ process touching-shapes-entry) object 75) (enemy-method-76 (_type_ process event-message-block) symbol 76) (enemy-method-77 (_type_ (pointer float)) symbol 77) (enemy-method-78 (_type_ (pointer float)) symbol 78) diff --git a/goal_src/jak2/engine/ai/enemy-h.gc b/goal_src/jak2/engine/ai/enemy-h.gc index 4d0d353485..06e9253961 100644 --- a/goal_src/jak2/engine/ai/enemy-h.gc +++ b/goal_src/jak2/engine/ai/enemy-h.gc @@ -355,7 +355,7 @@ (react-to-focus (_type_) none 72) (kill-prefer-falling (_type_) object 73) (general-event-handler (_type_ process int symbol event-message-block) object 74) - (enemy-method-75 (_type_ process touching-shapes-entry) none 75) + (enemy-method-75 (_type_ process touching-shapes-entry) object 75) (enemy-method-76 (_type_ process event-message-block) symbol 76) (enemy-method-77 (_type_ (pointer float)) symbol 77) (enemy-method-78 (_type_ (pointer float)) symbol 78) diff --git a/goal_src/jak2/engine/ai/enemy.gc b/goal_src/jak2/engine/ai/enemy.gc index 577a2f251c..782f0da92e 100644 --- a/goal_src/jak2/engine/ai/enemy.gc +++ b/goal_src/jak2/engine/ai/enemy.gc @@ -2099,7 +2099,6 @@ This commonly includes things such as: ) ) ) - (none) ) (defmethod enemy-method-76 enemy ((obj enemy) (arg0 process) (arg1 event-message-block)) diff --git a/goal_src/jak2/levels/temple/rhino.gc b/goal_src/jak2/levels/temple/rhino.gc index 3636d27569..19d4b1648a 100644 --- a/goal_src/jak2/levels/temple/rhino.gc +++ b/goal_src/jak2/levels/temple/rhino.gc @@ -823,7 +823,6 @@ ) ) ) - (none) ) (defmethod enemy-method-104 rhino ((obj rhino) (arg0 process) (arg1 uint) (arg2 uint)) diff --git a/test/decompiler/reference/jak2/engine/ai/enemy-h_REF.gc b/test/decompiler/reference/jak2/engine/ai/enemy-h_REF.gc index 9f23b758bd..84926057ca 100644 --- a/test/decompiler/reference/jak2/engine/ai/enemy-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/ai/enemy-h_REF.gc @@ -455,7 +455,7 @@ (react-to-focus (_type_) none 72) (kill-prefer-falling (_type_) object 73) (general-event-handler (_type_ process int symbol event-message-block) object 74) - (enemy-method-75 (_type_ process touching-shapes-entry) none 75) + (enemy-method-75 (_type_ process touching-shapes-entry) object 75) (enemy-method-76 (_type_ process event-message-block) symbol 76) (enemy-method-77 (_type_ (pointer float)) symbol 77) (enemy-method-78 (_type_ (pointer float)) symbol 78) diff --git a/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc b/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc index 9bb7e4eaec..4967545d6a 100644 --- a/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc +++ b/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc @@ -1707,9 +1707,11 @@ This commonly includes things such as: ;; WARN: Return type mismatch none vs object. ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 17] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 37] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 89] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 105] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 202] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 211] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 274] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 346] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 407] @@ -2141,7 +2143,6 @@ This commonly includes things such as: ) ;; definition for method 75 of type enemy -;; WARN: Return type mismatch object vs none. (defmethod enemy-method-75 enemy ((obj enemy) (arg0 process) (arg1 touching-shapes-entry)) (let* ((s4-0 (-> arg1 handle1)) (s2-0 arg0) @@ -2190,7 +2191,6 @@ This commonly includes things such as: ) ) ) - (none) ) ;; definition for method 76 of type enemy diff --git a/test/decompiler/reference/jak2/levels/temple/rhino_REF.gc b/test/decompiler/reference/jak2/levels/temple/rhino_REF.gc index f691a18146..0a2b50a540 100644 --- a/test/decompiler/reference/jak2/levels/temple/rhino_REF.gc +++ b/test/decompiler/reference/jak2/levels/temple/rhino_REF.gc @@ -1046,7 +1046,7 @@ ) ;; definition for method 75 of type rhino -;; WARN: Return type mismatch symbol vs none. +;; WARN: Return type mismatch symbol vs object. (defmethod enemy-method-75 rhino ((obj rhino) (arg0 process) (arg1 touching-shapes-entry)) (let* ((s5-0 (-> arg1 handle1)) (s3-0 arg0) @@ -1055,41 +1055,43 @@ ) ) ) - (when (and s5-0 v1-0) - (cond - ((and (focus-test? obj dangerous) ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry s5-0) - (-> obj root-override2) - (collide-action deadly) - (collide-action) - ) - ) - (let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry s5-0) - (-> obj root-override2) - (collide-action persistent-attack) - (collide-action) - ) - (-> obj persistent-attack-id) - (-> obj attack-id) - ) - ) - ) - (enemy-method-104 obj arg0 (the-as uint s5-0) a3-2) + (the-as + object + (when (and s5-0 v1-0) + (cond + ((and (focus-test? obj dangerous) ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry s5-0) + (-> obj root-override2) + (collide-action deadly) + (collide-action) + ) + ) + (let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry s5-0) + (-> obj root-override2) + (collide-action persistent-attack) + (collide-action) + ) + (-> obj persistent-attack-id) + (-> obj attack-id) + ) + ) + ) + (enemy-method-104 obj arg0 (the-as uint s5-0) a3-2) + ) + ) + (((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry s5-0) + (-> obj root-override2) + (collide-action no-standon) + (collide-action) + ) + (send-shoves (-> obj root-override2) arg0 (the-as touching-shapes-entry s5-0) 0.7 6144.0 16384.0) ) - ) - (((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry s5-0) - (-> obj root-override2) - (collide-action no-standon) - (collide-action) ) - (send-shoves (-> obj root-override2) arg0 (the-as touching-shapes-entry s5-0) 0.7 6144.0 16384.0) - ) ) ) ) - (none) ) ;; definition for method 104 of type rhino