aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent_Michael <Vincent_Michael@gmx.de>2013-01-03 23:41:36 +0100
committerVincent_Michael <Vincent_Michael@gmx.de>2013-01-03 23:41:36 +0100
commit00ca57e2cf65b2ad27055b0fe6edd8b105cbe880 (patch)
treef671c210aa990b82422fd7e83a3e61e72de4caa3
parenta28d2d22f3899208554332882d64543abdd1e1dc (diff)
parent51b5e04a88977e4ce43ce465c514e22857d41a8b (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/scripts/Commands/cs_reload.cpp
-rw-r--r--sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql2
-rw-r--r--sql/updates/world/2013_01_03_12_world_misc.sql3
-rw-r--r--sql/updates/world/2013_01_03_13_world_quest_template.sql3
-rw-r--r--sql/updates/world/2013_01_03_14_world_spell_area.sql4
-rw-r--r--sql/updates/world/2013_01_03_15_world_various_fixes.sql73
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp36
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h4
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp15
-rw-r--r--src/server/game/Globals/ObjectMgr.h3
-rw-r--r--src/server/game/Spells/SpellEffects.cpp1
-rw-r--r--src/server/game/World/World.cpp1
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp22
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;
}