From 258458d0a4f3e2dcba5fbae66b1c223d07e2b8cf Mon Sep 17 00:00:00 2001 From: DMD Date: Sat, 10 Feb 2018 09:57:39 +0200 Subject: [PATCH] Fixed issue with Feared characters not getting their radial menu --- TemplePlus/party.cpp | 38 ++++++++++++++++++++++++++++++++++++++ TemplePlus/party.h | 5 +++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/TemplePlus/party.cpp b/TemplePlus/party.cpp index 3d36675ac..7e89e3082 100644 --- a/TemplePlus/party.cpp +++ b/TemplePlus/party.cpp @@ -9,6 +9,8 @@ #include "gamesystems/gamesystems.h" #include "gamesystems/objects/objsystem.h" #include "condition.h" +#include "combat.h" +#include "turn_based.h" struct LegacyPartySystemAddresses : temple::AddressTable { @@ -54,6 +56,10 @@ class LegacyPartySystemHacks : TempleFix return FALSE; return orgFearfulResponse(handle); }); + + replaceFunction(0x1002BE60, [](){ + return party.GetConsciousPartyLeader(); + }); } } partyHacks; @@ -211,6 +217,38 @@ objHndl LegacyPartySystem::GetLeader() return leader; } +objHndl LegacyPartySystem::GetConsciousPartyLeader(){ + + auto selectedCount = CurrentlySelectedNum(); + for (auto i=0; i (0x1002BD50); diff --git a/TemplePlus/party.h b/TemplePlus/party.h index 75bed65da..7953c4651 100644 --- a/TemplePlus/party.h +++ b/TemplePlus/party.h @@ -47,7 +47,8 @@ struct LegacyPartySystem : temple::AddressTable void (__cdecl *SetStoryState)(int newState); objHndl GetLeader(); - objHndl(__cdecl*GetConsciousPartyLeader)(); + objHndl GetConsciousPartyLeader(); + objHndl(__cdecl*_GetConsciousPartyLeader)(); objHndl PartyMemberWithHighestSkill(SkillEnum skillEnum); int MoneyAdj(int plat, int gold, int silver, int copper); // this is a direct manipulator which doesn't convert currencies void DebitMoney(int plat, int gold, int silver, int copper); @@ -62,7 +63,7 @@ struct LegacyPartySystem : temple::AddressTable rebase(GroupPCsLen, 0x1002B370); rebase(GroupListGetMemberN, 0x1002B150); rebase(GroupListGetLen, 0x1002B2B0); - rebase(GetConsciousPartyLeader, 0x1002BE60); + rebase(_GetConsciousPartyLeader, 0x1002BE60); rebase(ObjFindInGroupArray, 0x100DF780); rebase(ObjIsInGroupArray, 0x100DF960); rebase(ObjIsAIFollower, 0x1002B220);