From 56f46e3ce543af8ffdc708eaa4ceecc173a5eb29 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 14 Sep 2014 23:23:23 +0200 Subject: Scripts * Introduced GetGuidData/SetGuidData to store guids in instance scripts (GetData64/SetData64 are still there) * CONDITION_INSTANCE_INFO: Changed existing DATA64 condition to GUID_DATA to preserve current use of this instance info type (most/all assume the data is a guid) and moved DATA64 to a different value - no db changes needed * Fixed compile in boss scripts starting with letter A --- src/server/game/AI/SmartScripts/SmartScript.cpp | 2 +- src/server/game/Conditions/ConditionMgr.cpp | 7 +++++-- src/server/game/Conditions/ConditionMgr.h | 5 +++-- src/server/game/Maps/ZoneScript.h | 3 +++ 4 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/server/game') diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index acac8663122..1e60cde90d0 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -956,7 +956,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!targets) break; - instance->SetData64(e.action.setInstanceData64.field, targets->front()->GetGUID().GetRawValue()); + instance->SetGuidData(e.action.setInstanceData64.field, targets->front()->GetGUID()); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_SET_INST_DATA64: Field: %u, data: " UI64FMTD, e.action.setInstanceData64.field, targets->front()->GetGUID()); diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 03051451193..094a8345395 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -166,12 +166,15 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) case INSTANCE_INFO_DATA: condMeets = instance->GetData(ConditionValue1) == ConditionValue2; break; - case INSTANCE_INFO_DATA64: - condMeets = instance->GetData64(ConditionValue1) == ConditionValue2; + case INSTANCE_INFO_GUID_DATA: + condMeets = instance->GetGuidData(ConditionValue1) == ObjectGuid(uint64(ConditionValue2)); break; case INSTANCE_INFO_BOSS_STATE: condMeets = instance->GetBossState(ConditionValue1) == EncounterState(ConditionValue2); break; + case INSTANCE_INFO_DATA64: + condMeets = instance->GetData64(ConditionValue1) == ConditionValue2; + break; } } } diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index ff508210fb1..24e44c662ba 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -146,8 +146,9 @@ enum RelationType enum InstanceInfo { INSTANCE_INFO_DATA = 0, - INSTANCE_INFO_DATA64, - INSTANCE_INFO_BOSS_STATE + INSTANCE_INFO_GUID_DATA, + INSTANCE_INFO_BOSS_STATE, + INSTANCE_INFO_DATA64 }; enum MaxConditionTargets diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h index 5925806db75..9b1f7622b54 100644 --- a/src/server/game/Maps/ZoneScript.h +++ b/src/server/game/Maps/ZoneScript.h @@ -41,6 +41,9 @@ class ZoneScript virtual void OnUnitDeath(Unit*) { } //All-purpose data storage 64 bit + virtual ObjectGuid GetGuidData(uint32 /*DataId*/) const { return ObjectGuid::Empty; } + virtual void SetGuidData(uint32 /*DataId*/, ObjectGuid /*Value*/) { } + virtual uint64 GetData64(uint32 /*DataId*/) const { return 0; } virtual void SetData64(uint32 /*DataId*/, uint64 /*Value*/) { } -- cgit v1.2.3