@@ -807,15 +807,58 @@ void __fastcall ScriptLog::HOOK_SetConditionResult(CLEO::CRunningScript* script,
807807 g_Instance->m_conditionResultUpdated = true ;
808808 g_Instance->m_conditionResultValue = state;
809809
810- // call original function
811- auto funcAddress = (size_t )g_Instance->m_patchSetConditionResult .GetAddress ();
810+ if (script->NotFlag ) state = !state;
812811
813- g_Instance->m_patchSetConditionResult .Apply (); // restore original function code
814-
815- // ((::CRunningScript*)script)->UpdateCompareFlag(state);
816- plugin::CallMethodDynGlobal<CLEO::CRunningScript*, bool >(funcAddress, script, state); // faster
812+ switch (script->LogicalOp )
813+ {
814+ default :
815+ case eLogicalOperation::NONE:
816+ script->bCondResult = state;
817+ return ;
818+
819+ case eLogicalOperation::AND_2:
820+ case eLogicalOperation::AND_3:
821+ case eLogicalOperation::AND_4:
822+ case eLogicalOperation::AND_5:
823+ case eLogicalOperation::AND_6:
824+ case eLogicalOperation::AND_7:
825+ case eLogicalOperation::AND_8:
826+ case eLogicalOperation::AND_9:
827+ script->bCondResult &= state;
828+ *((WORD*)&script->LogicalOp ) -= 1 ;
829+ return ;
830+
831+ case eLogicalOperation::OR_2:
832+ script->bCondResult |= state;
833+ script->LogicalOp = eLogicalOperation::NONE;
834+ return ;
835+
836+ case eLogicalOperation::OR_3:
837+ case eLogicalOperation::OR_4:
838+ case eLogicalOperation::OR_5:
839+ case eLogicalOperation::OR_6:
840+ case eLogicalOperation::OR_7:
841+ case eLogicalOperation::OR_8:
842+ case eLogicalOperation::OR_9:
843+ script->bCondResult |= state;
844+ *((WORD*)&script->LogicalOp ) -= 1 ;
845+ return ;
846+ }
817847
818- MemPatchJump (funcAddress, &HOOK_SetConditionResult); // reinstall our hook
848+ /* if (script->LogicalOp == eLogicalOperation::NONE)
849+ {
850+ script->bCondResult = state;
851+ }
852+ else if (script->LogicalOp >= eLogicalOperation::AND_2 && script->LogicalOp < eLogicalOperation::AND_END)
853+ {
854+ script->bCondResult &= state;
855+ --script->LogicalOp;
856+ }
857+ else if (script->LogicalOp >= eLogicalOperation::OR_2 && script->LogicalOp < eLogicalOperation::OR_END)
858+ {
859+ script->bCondResult |= state;
860+ --script->LogicalOp;
861+ }*/
819862}
820863
821864void ScriptLog::OnGameBegin (DWORD saveSlot)
0 commit comments