Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps

This commit is contained in:
Vincent_Michael
2013-01-04 01:27:51 +01:00
13 changed files with 99 additions and 76 deletions

View File

@@ -0,0 +1,2 @@
DROP TABLE `gameobject_scripts`;
DELETE FROM `command` WHERE `name`='reload gameobject_scripts';

View File

@@ -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);

View File

@@ -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!

View File

@@ -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);

View File

@@ -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");

View File

@@ -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);
}
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);
sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_CREATURE_GUID can not be used without invoker");
break;
}
if (target)
target = FindCreatureNear(trigger ? trigger : GetBaseObject(), e.target.unitGUID.dbGuid);
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);
}
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);
sLog->outError(LOG_FILTER_SQL, "SMART_TARGET_GAMEOBJECT_GUID can not be used without invoker");
break;
}
if (target)
target = FindGameObjectNear(trigger ? trigger : GetBaseObject(), e.target.goGUID.dbGuid);
if (target && (!e.target.goGUID.entry || target->GetEntry() == e.target.goGUID.entry))
l->push_back(target);
break;
}

View File

@@ -996,7 +996,7 @@ struct SmartTarget
struct
{
uint32 guid;
uint32 dbGuid;
uint32 entry;
} unitGUID;
@@ -1031,7 +1031,7 @@ struct SmartTarget
struct
{
uint32 guid;
uint32 dbGuid;
uint32 entry;
} goGUID;

View File

@@ -1098,11 +1098,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)

View File

@@ -50,7 +50,6 @@
#include "World.h"
ScriptMapMap sSpellScripts;
ScriptMapMap sGameObjectScripts;
ScriptMapMap sEventScripts;
ScriptMapMap sWaypointScripts;
@@ -60,7 +59,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;
@@ -74,7 +72,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;
@@ -4667,18 +4664,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);

View File

@@ -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;
@@ -863,7 +861,6 @@ class ObjectMgr
return _creatureQuestInvolvedRelations.equal_range(creature_entry);
}
void LoadGameObjectScripts();
void LoadEventScripts();
void LoadSpellScripts();
void LoadWaypointScripts();

View File

@@ -2011,7 +2011,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:

View File

@@ -1656,7 +1656,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();

View File

@@ -97,7 +97,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 },
@@ -260,7 +259,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.");
@@ -951,26 +949,6 @@ public:
return true;
}
static bool HandleReloadGameObjectScriptsCommand(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.");
return true;
}
static bool HandleReloadEventScriptsCommand(ChatHandler* handler, const char* args)
{
if (sScriptMgr->IsScriptScheduled())