diff options
-rw-r--r-- | sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql | 2 | ||||
-rw-r--r-- | sql/updates/world/2013_01_03_12_world_misc.sql | 3 | ||||
-rw-r--r-- | sql/updates/world/2013_01_03_13_world_quest_template.sql | 3 | ||||
-rw-r--r-- | sql/updates/world/2013_01_03_14_world_spell_area.sql | 4 | ||||
-rw-r--r-- | sql/updates/world/2013_01_03_15_world_various_fixes.sql | 73 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 36 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 4 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 3 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 1 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 1 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 22 |
13 files changed, 101 insertions, 70 deletions
diff --git a/sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql b/sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql new file mode 100644 index 00000000000..aede83aa0c8 --- /dev/null +++ b/sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql @@ -0,0 +1,2 @@ +DROP TABLE `gameobject_scripts`; +DELETE FROM `command` WHERE `name`='reload gameobject_scripts'; diff --git a/sql/updates/world/2013_01_03_12_world_misc.sql b/sql/updates/world/2013_01_03_12_world_misc.sql new file mode 100644 index 00000000000..79d2e2daea9 --- /dev/null +++ b/sql/updates/world/2013_01_03_12_world_misc.sql @@ -0,0 +1,3 @@ +-- Fix startup errors: +-- Set correct questid for Many Wyrm +UPDATE `smart_scripts` SET `action_param1`=8346 WHERE `entryorguid` IN (15273,15274,15294,15298) AND `source_type`=0 AND `id` IN (0,1); diff --git a/sql/updates/world/2013_01_03_13_world_quest_template.sql b/sql/updates/world/2013_01_03_13_world_quest_template.sql new file mode 100644 index 00000000000..12adb1e94ba --- /dev/null +++ b/sql/updates/world/2013_01_03_13_world_quest_template.sql @@ -0,0 +1,3 @@ +UPDATE `quest_template` SET `PrevQuestId`=7022 WHERE `Id`=7025; -- Treats for Greatfather Winter (7025) Alliance version +UPDATE `quest_template` SET `RequiredRaces`=690,`PrevQuestId`=7021 WHERE `Id`=6962; -- Treats for Great-father Winter (6962) Horde version +UPDATE `quest_template` SET `ExclusiveGroup`=7021 WHERE `Id`=6961; -- Great-father Winter is Here! diff --git a/sql/updates/world/2013_01_03_14_world_spell_area.sql b/sql/updates/world/2013_01_03_14_world_spell_area.sql new file mode 100644 index 00000000000..a670ed7c455 --- /dev/null +++ b/sql/updates/world/2013_01_03_14_world_spell_area.sql @@ -0,0 +1,4 @@ +-- add aura to be able to hand in quests +DELETE FROM `spell_area` WHERE `spell`=52217; +INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES +(52217,4306,12574,1,0,0,0,2,1); diff --git a/sql/updates/world/2013_01_03_15_world_various_fixes.sql b/sql/updates/world/2013_01_03_15_world_various_fixes.sql new file mode 100644 index 00000000000..d3db9afa6e5 --- /dev/null +++ b/sql/updates/world/2013_01_03_15_world_various_fixes.sql @@ -0,0 +1,73 @@ +-- Issue 7541: Shambling Horror immunities +UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|1|2|4|8|16|64|512|1024|4096|8192|65536|131072|524288|4194304|536870912 WHERE `entry`=37698; + +-- Issue 7436: Ground bound Highperch +-- Highperch Soarer +SET @NPC := 21708; +SET @PATH := @NPC*10; +UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=6139; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-5155.09,`position_y`=-1194.89,`position_z`=73.70869 WHERE `guid`=@NPC; +UPDATE `creature_addon` SET `path_id`=@PATH WHERE `guid`=@NPC; +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-5155.09,-1194.89,73.70869,0,0,0,100,0), +(@PATH,2,-5155.986,-1199.748,81.49023,0,0,0,100,0), +(@PATH,3,-5166.314,-1220.043,81.76808,0,0,0,100,0), +(@PATH,4,-5170.551,-1226.347,76.71234,0,0,0,100,0), +(@PATH,5,-5178.024,-1237.037,72.43468,0,0,0,100,0), +(@PATH,6,-5190.296,-1239.181,71.90687,0,0,0,100,0), +(@PATH,7,-5215.796,-1225.133,69.76797,0,0,0,100,0), +(@PATH,8,-5221.52,-1209.387,67.79574,0,0,0,100,0), +(@PATH,9,-5219.366,-1194.92,67.15694,0,0,0,100,0), +(@PATH,10,-5209.852,-1187.224,65.96239,0,0,0,100,0), +(@PATH,11,-5194.886,-1188.915,70.71236,0,0,0,100,0), +(@PATH,12,-5181.055,-1199.332,60.29574,0,0,0,100,0), +(@PATH,13,-5158.846,-1213.597,57.6291,0,0,0,100,0), +(@PATH,14,-5122.129,-1222.279,42.46242,0,0,0,100,0), +(@PATH,15,-5110.988,-1230.767,15.32349,0,0,0,100,0), +(@PATH,16,-5084.673,-1227.625,-11.81538,0,0,0,100,0), +(@PATH,17,-5065.282,-1209.691,-34.89864,0,0,0,100,0), +(@PATH,18,-5052.477,-1181.261,-39.42649,0,0,0,100,0), +(@PATH,19,-5025.058,-1165.288,-32.56528,0,0,0,100,0), +(@PATH,20,-5004.282,-1140.431,-38.3154,0,0,0,100,0), +(@PATH,21,-4984.813,-1123.683,-38.17639,0,0,0,100,0), +(@PATH,22,-4971.478,-1109.776,-38.17639,0,0,0,100,0), +(@PATH,23,-4949.74,-1096.296,-32.42633,0,0,0,100,0), +(@PATH,24,-4927.954,-1090.275,-24.84298,0,0,0,100,0), +(@PATH,25,-4909.837,-1080.728,-14.0652,0,0,0,100,0), +(@PATH,26,-4914.713,-1066.641,-7.898551,0,0,0,100,0), +(@PATH,27,-4927.922,-1056.954,-3.352009,0,0,0,100,0), +(@PATH,28,-4942.696,-1055.217,8.220422,0,0,0,100,0), +(@PATH,29,-4951.954,-1049.145,14.62554,0,0,0,100,0), +(@PATH,30,-4960.176,-1028.92,20.03323,0,0,0,100,0), +(@PATH,31,-4970.474,-1008.432,22.08879,0,0,0,100,0), +(@PATH,32,-4980.969,-992.9671,23.42848,0,0,0,100,0), +(@PATH,33,-4993.734,-980.054,23.75917,0,0,0,100,0), +(@PATH,34,-5012.753,-967.9377,24.0925,0,0,0,100,0), +(@PATH,35,-5032.862,-971.138,30.92584,0,0,0,100,0), +(@PATH,36,-5052.127,-982.1085,39.0092,0,0,0,100,0), +(@PATH,37,-5060.675,-991.1913,52.28708,0,0,0,100,0), +(@PATH,38,-5072.277,-1008.99,67.84268,0,0,0,100,0), +(@PATH,39,-5090.256,-1005.558,79.18673,0,0,0,100,0), +(@PATH,40,-5106.005,-1004.311,73.88409,0,0,0,100,0); + +-- Issue 8639: Eyes of the Eagle +-- Talonshrike's Egg +SET @ENTRY := 186814; +SET @SOURCETYPE := 1; +UPDATE gameobject_template SET AIName="SmartGameObjectAI" WHERE entry IN(186814,190283); +UPDATE creature_template SET AIName="SmartAI" WHERE entry=24518; +DELETE FROM `smart_scripts` WHERE `entryorguid`IN(186814,190283) AND `source_type`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid`=24518 AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +-- first egg +(186814,1,0,0,70,0,100,0,2,0,0,0,45,0,1,0,0,0,0,11,24518,500,0,0.0,0.0,0.0,0.0,"ON egg USE notify Talonshrike"), +(186814,1,1,0,70,0,100,0,2,0,0,0,45,0,2,0,0,0,0,11,24518,500,0,0.0,0.0,0.0,0.0,"ON egg USE notify Talonshrike to set attackable"), +-- second egg +(190283,1,0,0,70,0,100,0,2,0,0,0,45,0,1,0,0,0,0,11,24518,500,0,0.0,0.0,0.0,0.0,"ON egg USE notify Talonshrike"), +(190283,1,1,0,70,0,100,0,2,0,0,0,45,0,2,0,0,0,0,11,24518,500,0,0.0,0.0,0.0,0.0,"ON egg USE notify Talonshrike to set attackable"), +-- Talonshrike +(24518,0,0,0,38,0,100,0,0,1,0,0,69,0,0,0,0,0,0,8,0,0,0,1597.4,-3903.79,79.702,0.0,"ON notification fly TO nest"), +(24518,0,1,0,0,0,100,0,5000,5000,10000,12000,11,49865,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0," USE Eye Peck"), +(24518,0,2,0,0,0,100,0,3000,3000,5000,7000,11,32909,0,0,0,0,0,2,0,0,0,0.0,0.0,0.0,0.0," USE Talon Strike"), +(24518,0,3,0,38,0,100,0,0,2,0,0,19,256,0,0,0,0,0,1, 0, 0, 0, 0, 0, 0, 0, "Talonshrike - On notification - Remove UNIT_FLAG_IMMUNE_TO_PC"); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 4b147e080e2..e68c8c27194 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2260,46 +2260,30 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* case SMART_TARGET_CREATURE_GUID: { Creature* target = NULL; - if (e.target.unitGUID.entry) + if (!trigger && !GetBaseObject()) { - uint64 guid = MAKE_NEW_GUID(e.target.unitGUID.guid, e.target.unitGUID.entry, HIGHGUID_UNIT); - target = HashMapHolder<Creature>::Find(guid); + sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_CREATURE_GUID can not be used without invoker"); + break; } - else - { - if (!trigger && !GetBaseObject()) - { - sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_CREATURE_GUID can not be used without invoker and without entry"); - break; - } - target = FindCreatureNear(trigger ? trigger : GetBaseObject(), e.target.unitGUID.guid); - } + target = FindCreatureNear(trigger ? trigger : GetBaseObject(), e.target.unitGUID.dbGuid); - if (target) + if (target && (!e.target.unitGUID.entry || target->GetEntry() == e.target.unitGUID.entry)) l->push_back(target); break; } case SMART_TARGET_GAMEOBJECT_GUID: { GameObject* target = NULL; - if (e.target.unitGUID.entry) + if (!trigger && !GetBaseObject()) { - uint64 guid = MAKE_NEW_GUID(e.target.goGUID.guid, e.target.goGUID.entry, HIGHGUID_GAMEOBJECT); - target = HashMapHolder<GameObject>::Find(guid); + sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_GAMEOBJECT_GUID can not be used without invoker"); + break; } - else - { - if (!trigger && !GetBaseObject()) - { - sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_GAMEOBJECT_GUID can not be used without invoker and without entry"); - break; - } - target = FindGameObjectNear(trigger ? trigger : GetBaseObject(), e.target.goGUID.guid); - } + target = FindGameObjectNear(trigger ? trigger : GetBaseObject(), e.target.goGUID.dbGuid); - if (target) + if (target && (!e.target.goGUID.entry || target->GetEntry() == e.target.goGUID.entry)) l->push_back(target); break; } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 4c010284e5f..ea5a77cbbf7 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -997,7 +997,7 @@ struct SmartTarget struct { - uint32 guid; + uint32 dbGuid; uint32 entry; } unitGUID; @@ -1032,7 +1032,7 @@ struct SmartTarget struct { - uint32 guid; + uint32 dbGuid; uint32 entry; } goGUID; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 7830c566634..a837f2313e8 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1099,11 +1099,7 @@ void GameObject::Use(Unit* user) case GAMEOBJECT_TYPE_BUTTON: //1 //doors/buttons never really despawn, only reset to default state/flags UseDoorOrButton(0, false, user); - - // activate script - GetMap()->ScriptsStart(sGameObjectScripts, GetDBTableGUIDLow(), spellCaster, this); return; - case GAMEOBJECT_TYPE_QUESTGIVER: //2 { if (user->GetTypeId() != TYPEID_PLAYER) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index df5136781de..b5340164028 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -52,7 +52,6 @@ #include "World.h" ScriptMapMap sSpellScripts; -ScriptMapMap sGameObjectScripts; ScriptMapMap sEventScripts; ScriptMapMap sWaypointScripts; @@ -62,7 +61,6 @@ std::string GetScriptsTableNameByType(ScriptsType type) switch (type) { case SCRIPTS_SPELL: res = "spell_scripts"; break; - case SCRIPTS_GAMEOBJECT: res = "gameobject_scripts"; break; case SCRIPTS_EVENT: res = "event_scripts"; break; case SCRIPTS_WAYPOINT: res = "waypoint_scripts"; break; default: break; @@ -76,7 +74,6 @@ ScriptMapMap* GetScriptsMapByType(ScriptsType type) switch (type) { case SCRIPTS_SPELL: res = &sSpellScripts; break; - case SCRIPTS_GAMEOBJECT: res = &sGameObjectScripts; break; case SCRIPTS_EVENT: res = &sEventScripts; break; case SCRIPTS_WAYPOINT: res = &sWaypointScripts; break; default: break; @@ -4609,18 +4606,6 @@ void ObjectMgr::LoadScripts(ScriptsType type) sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u script definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } -void ObjectMgr::LoadGameObjectScripts() -{ - LoadScripts(SCRIPTS_GAMEOBJECT); - - // check ids - for (ScriptMapMap::const_iterator itr = sGameObjectScripts.begin(); itr != sGameObjectScripts.end(); ++itr) - { - if (!GetGOData(itr->first)) - sLog->outError(LOG_FILTER_SQL, "Table `gameobject_scripts` has not existing gameobject (GUID: %u) as script id", itr->first); - } -} - void ObjectMgr::LoadSpellScripts() { LoadScripts(SCRIPTS_SPELL); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 73ce62efa1e..eb56bb09b93 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -128,7 +128,6 @@ enum ScriptsType SCRIPTS_FIRST = 1, SCRIPTS_SPELL = SCRIPTS_FIRST, - SCRIPTS_GAMEOBJECT, SCRIPTS_EVENT, SCRIPTS_WAYPOINT, @@ -361,7 +360,6 @@ typedef std::map<uint32, ScriptMap > ScriptMapMap; typedef std::multimap<uint32, uint32> SpellScriptsContainer; typedef std::pair<SpellScriptsContainer::iterator, SpellScriptsContainer::iterator> SpellScriptsBounds; extern ScriptMapMap sSpellScripts; -extern ScriptMapMap sGameObjectScripts; extern ScriptMapMap sEventScripts; extern ScriptMapMap sWaypointScripts; @@ -857,7 +855,6 @@ class ObjectMgr return _creatureQuestInvolvedRelations.equal_range(creature_entry); } - void LoadGameObjectScripts(); void LoadEventScripts(); void LoadSpellScripts(); void LoadWaypointScripts(); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 9ee8b8d1cf1..e86ac6ef97f 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1856,7 +1856,6 @@ void Spell::SendLoot(uint64 guid, LootType loottype) case GAMEOBJECT_TYPE_DOOR: case GAMEOBJECT_TYPE_BUTTON: gameObjTarget->UseDoorOrButton(0, false, player); - player->GetMap()->ScriptsStart(sGameObjectScripts, gameObjTarget->GetDBTableGUIDLow(), player, gameObjTarget); return; case GAMEOBJECT_TYPE_QUESTGIVER: diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 2d37148e546..39ff431161f 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1699,7 +1699,6 @@ void World::SetInitialWorldSettings() ///- Load and initialize scripts sObjectMgr->LoadSpellScripts(); // must be after load Creature/Gameobject(Template/Data) - sObjectMgr->LoadGameObjectScripts(); // must be after load Creature/Gameobject(Template/Data) sObjectMgr->LoadEventScripts(); // must be after load Creature/Gameobject(Template/Data) sObjectMgr->LoadWaypointScripts(); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 07f383eddc4..16fe5991461 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -93,7 +93,6 @@ public: { "gameobject_involvedrelation", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestInvRelationsCommand, "", NULL }, { "gameobject_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesGameobjectCommand, "", NULL }, { "gameobject_questrelation", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestRelationsCommand, "", NULL }, - { "gameobject_scripts", SEC_ADMINISTRATOR, true, &HandleReloadGameObjectScriptsCommand, "", NULL }, { "gm_tickets", SEC_ADMINISTRATOR, true, &HandleReloadGMTicketsCommand, "", NULL }, { "gossip_menu", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuCommand, "", NULL }, { "gossip_menu_option", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuOptionCommand, "", NULL }, @@ -254,7 +253,6 @@ public: } sLog->outInfo(LOG_FILTER_GENERAL, "Re-Loading Scripts..."); - HandleReloadGameObjectScriptsCommand(handler, "a"); HandleReloadEventScriptsCommand(handler, "a"); HandleReloadSpellScriptsCommand(handler, "a"); handler->SendGlobalGMSysMessage("DB tables `*_scripts` reloaded."); @@ -931,23 +929,11 @@ public: return true; } - static bool HandleReloadGameObjectScriptsCommand(ChatHandler* handler, const char* args) + static bool HandleReloadItemSetNamesCommand(ChatHandler* handler, const char* /*args*/) { - if (sScriptMgr->IsScriptScheduled()) - { - handler->SendSysMessage("DB scripts used currently, please attempt reload later."); - handler->SetSentErrorMessage(true); - return false; - } - - if (*args != 'a') - sLog->outInfo(LOG_FILTER_GENERAL, "Re-Loading Scripts from `gameobject_scripts`..."); - - sObjectMgr->LoadGameObjectScripts(); - - if (*args != 'a') - handler->SendGlobalGMSysMessage("DB table `gameobject_scripts` reloaded."); - + sLog->outInfo(LOG_FILTER_GENERAL, "Re-Loading Item set names..."); + sObjectMgr->LoadItemSetNames(); + handler->SendGlobalGMSysMessage("DB table `item_set_names` reloaded."); return true; } |