Fixed PlayIdleAnimOnReload causing critters to lose highlights in combat

* happens when the Target Highlight pref is set to "targeting only".
(closes #528)
This commit is contained in:
NovaRain
2024-05-02 09:38:32 +08:00
parent d4ca2b9ff1
commit 6d276cceca
2 changed files with 4 additions and 0 deletions
+1
View File
@@ -45,6 +45,7 @@
#define FO_VAR_colorTable 0x6A38D0 #define FO_VAR_colorTable 0x6A38D0
#define FO_VAR_combat_end_due_to_load 0x517F98 #define FO_VAR_combat_end_due_to_load 0x517F98
#define FO_VAR_combat_free_move 0x56D39C #define FO_VAR_combat_free_move 0x56D39C
#define FO_VAR_combat_highlight 0x56D38C
#define FO_VAR_combat_list 0x56D390 #define FO_VAR_combat_list 0x56D390
#define FO_VAR_combat_obj 0x51805C #define FO_VAR_combat_obj 0x51805C
#define FO_VAR_combat_state 0x510944 #define FO_VAR_combat_state 0x510944
+3
View File
@@ -120,7 +120,10 @@ static void __declspec(naked) intface_item_reload_hook() {
call fo::funcoffs::register_begin_; call fo::funcoffs::register_begin_;
mov eax, dword ptr ds:[FO_VAR_obj_dude]; mov eax, dword ptr ds:[FO_VAR_obj_dude];
call fo::funcoffs::register_object_animate_; call fo::funcoffs::register_object_animate_;
mov ecx, dword ptr ds:[FO_VAR_combat_highlight]; // backup setting
mov dword ptr ds:[FO_VAR_combat_highlight], eax; // prevent calling combat_outline_off_ (eax is never 2)
call fo::funcoffs::register_end_; call fo::funcoffs::register_end_;
mov dword ptr ds:[FO_VAR_combat_highlight], ecx; // restore setting
pop eax; pop eax;
jmp fo::funcoffs::gsound_play_sfx_file_; jmp fo::funcoffs::gsound_play_sfx_file_;
} }