diff options
| -rw-r--r-- | sql/base/world_database.sql | 1 | ||||
| -rw-r--r-- | sql/updates/9196_world_conditions.sql | 1 | ||||
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 2 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 2 |
5 files changed, 8 insertions, 1 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 100a578f60b..b354c82316c 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -725,6 +725,7 @@ CREATE TABLE `conditions` ( `ConditionValue2` mediumint(8) unsigned NOT NULL DEFAULT '0', `ConditionValue3` mediumint(8) unsigned NOT NULL DEFAULT '0', `ErrorTextId` mediumint(8) unsigned NOT NULL DEFAULT '0', + `ScriptName` char(64) NOT NULL DEFAULT '', `Comment` varchar(255) DEFAULT NULL, PRIMARY KEY (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Condition System'; diff --git a/sql/updates/9196_world_conditions.sql b/sql/updates/9196_world_conditions.sql new file mode 100644 index 00000000000..f0db979c87e --- /dev/null +++ b/sql/updates/9196_world_conditions.sql @@ -0,0 +1 @@ +ALTER TABLE `conditions` ADD `ScriptName` char(64) NOT NULL DEFAULT '' AFTER `ErrorTextId`; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index c835b4e8963..2ce666bede5 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -313,7 +313,7 @@ void ConditionMgr::LoadConditions(bool isReload) } uint32 count = 0; - QueryResult_AutoPtr result = WorldDatabase.Query("SELECT SourceTypeOrReferenceId, SourceGroup, SourceEntry, ElseGroup, ConditionTypeOrReference, ConditionValue1, ConditionValue2, ConditionValue3, ErrorTextId FROM conditions"); + QueryResult_AutoPtr result = WorldDatabase.Query("SELECT SourceTypeOrReferenceId, SourceGroup, SourceEntry, ElseGroup, ConditionTypeOrReference, ConditionValue1, ConditionValue2, ConditionValue3, ErrorTextId, ScriptName FROM conditions"); if (!result) { @@ -344,6 +344,7 @@ void ConditionMgr::LoadConditions(bool isReload) cond->mConditionValue2 = fields[6].GetUInt32(); cond->mConditionValue3 = fields[7].GetUInt32(); cond->ErrorTextd = fields[8].GetUInt32(); + cond->mScriptId = objmgr.GetScriptId(fields[9].GetString()); if (iConditionTypeOrReference >= 0) cond->mConditionType = ConditionType(iConditionTypeOrReference); diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index bb9fc2708fa..11c148783ea 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -95,6 +95,7 @@ struct Condition uint32 mConditionValue3; uint32 ErrorTextd; uint32 mReferenceId; + uint32 mScriptId; Condition() { @@ -108,6 +109,7 @@ struct Condition mConditionValue3 = 0; mReferenceId = 0; ErrorTextd = 0; + mScriptId = 0; } bool Meets(Player * player, Unit* targetOverride = NULL); bool isLoaded() { return mConditionType > CONDITION_NONE || mReferenceId; } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 5ab7c515601..23ce129d0d3 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8748,6 +8748,8 @@ void ObjectMgr::LoadScriptNames() "UNION " "SELECT DISTINCT(ScriptName) FROM game_weather WHERE ScriptName <> '' " "UNION " + "SELECT DISTINCT(ScriptName) FROM conditions WHERE ScriptName <> '' " + "UNION " "SELECT DISTINCT(script) FROM instance_template WHERE script <> ''"); if (!result) |
