aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql1
-rw-r--r--sql/updates/9196_world_conditions.sql1
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp3
-rw-r--r--src/server/game/Conditions/ConditionMgr.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp2
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)