From 2a89658e969e28caae7f3d11d722ffbdcd284d72 Mon Sep 17 00:00:00 2001 From: Spp Date: Wed, 19 Sep 2012 10:01:30 +0200 Subject: Battlegrounds: Better log message for unhandled area triggers in battlegrounds --- src/server/game/Battlegrounds/Battleground.cpp | 8 ++++++ src/server/game/Battlegrounds/Battleground.h | 2 +- .../game/Battlegrounds/Zones/BattlegroundAB.cpp | 19 ++++++------- .../game/Battlegrounds/Zones/BattlegroundAV.cpp | 24 ++++++---------- .../game/Battlegrounds/Zones/BattlegroundBE.cpp | 16 ++--------- .../game/Battlegrounds/Zones/BattlegroundDS.cpp | 11 ++++---- .../game/Battlegrounds/Zones/BattlegroundEY.cpp | 33 +++++++++++----------- .../game/Battlegrounds/Zones/BattlegroundNA.cpp | 12 ++------ .../game/Battlegrounds/Zones/BattlegroundRL.cpp | 13 ++------- .../game/Battlegrounds/Zones/BattlegroundRV.cpp | 9 +++--- .../game/Battlegrounds/Zones/BattlegroundWS.cpp | 16 +++++------ 11 files changed, 68 insertions(+), 95 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index d395bccf3a2..647f55c4ffa 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1937,3 +1937,11 @@ void Battleground::RewardXPAtKill(Player* killer, Player* victim) if (sWorld->getBoolConfig(CONFIG_BG_XP_FOR_KILL) && killer && victim) killer->RewardPlayerAndGroupAtKill(victim, true); } + +void Battleground::HandleAreaTrigger(Player* player, uint32 trigger) +{ + sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger %u in Battleground %u. Player coords (x: %f, y: %f, z: %f)", + trigger, player->GetMapId(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); + if (player->isGameMaster()) + player->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", trigger); +} diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index e658ac4ecbd..fc292aa5bc1 100755 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -507,7 +507,7 @@ class Battleground // Triggers handle // must be implemented in BG subclass - virtual void HandleAreaTrigger(Player* /*Source*/, uint32 /*Trigger*/) {} + virtual void HandleAreaTrigger(Player* /*Source*/, uint32 /*Trigger*/); // must be implemented in BG subclass if need AND call base class generic code virtual void HandleKillPlayer(Player* player, Player* killer); virtual void HandleKillUnit(Creature* /*unit*/, Player* /*killer*/); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index 365ffb853d2..dfd7af583a5 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -210,24 +210,24 @@ void BattlegroundAB::RemovePlayer(Player* /*player*/, uint64 /*guid*/, uint32 /* } -void BattlegroundAB::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundAB::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; - switch (Trigger) + switch (trigger) { case 3948: // Arathi Basin Alliance Exit. - if (Source->GetTeam() != ALLIANCE) - Source->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal"); + if (player->GetTeam() != ALLIANCE) + player->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal"); else - Source->LeaveBattleground(); + player->LeaveBattleground(); break; case 3949: // Arathi Basin Horde Exit. - if (Source->GetTeam() != HORDE) - Source->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal"); + if (player->GetTeam() != HORDE) + player->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal"); else - Source->LeaveBattleground(); + player->LeaveBattleground(); break; case 3866: // Stables case 3869: // Gold Mine @@ -238,8 +238,7 @@ void BattlegroundAB::HandleAreaTrigger(Player* Source, uint32 Trigger) case 4021: // Unk2 //break; default: - //sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - //Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 37072866238..aeebfb945f9 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -489,27 +489,25 @@ void BattlegroundAV::RemovePlayer(Player* player, uint64 /*guid*/, uint32 /*team player->RemoveAurasDueToSpell(AV_BUFF_H_CAPTAIN); } -void BattlegroundAV::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundAV::HandleAreaTrigger(Player* player, uint32 trigger) { - // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; - uint32 SpellId = 0; - switch (Trigger) + switch (trigger) { case 95: case 2608: - if (Source->GetTeam() != ALLIANCE) - Source->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal"); + if (player->GetTeam() != ALLIANCE) + player->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal"); else - Source->LeaveBattleground(); + player->LeaveBattleground(); break; case 2606: - if (Source->GetTeam() != HORDE) - Source->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal"); + if (player->GetTeam() != HORDE) + player->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal"); else - Source->LeaveBattleground(); + player->LeaveBattleground(); break; case 3326: case 3327: @@ -520,13 +518,9 @@ void BattlegroundAV::HandleAreaTrigger(Player* Source, uint32 Trigger) //Source->Unmount(); break; default: - sLog->outDebug(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); -// Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } - - if (SpellId) - Source->CastSpell(Source, SpellId, true); } void BattlegroundAV::UpdatePlayerScore(Player* Source, uint32 type, uint32 value, bool doAddHonor) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp index 78cf6b9863f..4b34422f31b 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp @@ -105,30 +105,20 @@ bool BattlegroundBE::HandlePlayerUnderMap(Player* player) return true; } -void BattlegroundBE::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundBE::HandleAreaTrigger(Player* player, uint32 trigger) { - // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; - //uint32 SpellId = 0; - //uint64 buff_guid = 0; - switch (Trigger) + switch (trigger) { case 4538: // buff trigger? - //buff_guid = BgObjects[BG_BE_OBJECT_BUFF_1]; - break; case 4539: // buff trigger? - //buff_guid = BgObjects[BG_BE_OBJECT_BUFF_2]; break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } - - //if (buff_guid) - // HandleTriggerBuff(buff_guid, Source); } void BattlegroundBE::FillInitialWorldStates(WorldPacket &data) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp index 20eba2a7f67..be947458964 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp @@ -181,18 +181,18 @@ void BattlegroundDS::HandleKillPlayer(Player* player, Player* killer) CheckArenaWinConditions(); } -void BattlegroundDS::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundDS::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; - switch (Trigger) + switch (trigger) { case 5347: case 5348: // Remove effects of Demonic Circle Summon - if (Source->HasAura(48018)) - Source->RemoveAurasDueToSpell(48018); + if (player->HasAura(48018)) + player->RemoveAurasDueToSpell(48018); // Someone has get back into the pipes and the knockback has already been performed, // so we reset the knockback count for kicking the player again into the arena. @@ -200,8 +200,7 @@ void BattlegroundDS::HandleAreaTrigger(Player* Source, uint32 Trigger) setPipeKnockBackCount(0); break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 35ea94ba607..bad56a95cfb 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -368,35 +368,35 @@ void BattlegroundEY::RemovePlayer(Player* player, uint64 guid, uint32 /*team*/) } } -void BattlegroundEY::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; - if (!Source->isAlive()) //hack code, must be removed later + if (!player->isAlive()) //hack code, must be removed later return; - switch (Trigger) + switch (trigger) { case TR_BLOOD_ELF_POINT: - if (m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BLOOD_ELF] == Source->GetTeam()) - if (m_FlagState && GetFlagPickerGUID() == Source->GetGUID()) - EventPlayerCapturedFlag(Source, BG_EY_OBJECT_FLAG_BLOOD_ELF); + if (m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BLOOD_ELF] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_BLOOD_ELF); break; case TR_FEL_REAVER_POINT: - if (m_PointState[FEL_REAVER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[FEL_REAVER] == Source->GetTeam()) - if (m_FlagState && GetFlagPickerGUID() == Source->GetGUID()) - EventPlayerCapturedFlag(Source, BG_EY_OBJECT_FLAG_FEL_REAVER); + if (m_PointState[FEL_REAVER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[FEL_REAVER] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); break; case TR_MAGE_TOWER_POINT: - if (m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[MAGE_TOWER] == Source->GetTeam()) - if (m_FlagState && GetFlagPickerGUID() == Source->GetGUID()) - EventPlayerCapturedFlag(Source, BG_EY_OBJECT_FLAG_MAGE_TOWER); + if (m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[MAGE_TOWER] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_MAGE_TOWER); break; case TR_DRAENEI_RUINS_POINT: - if (m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[DRAENEI_RUINS] == Source->GetTeam()) - if (m_FlagState && GetFlagPickerGUID() == Source->GetGUID()) - EventPlayerCapturedFlag(Source, BG_EY_OBJECT_FLAG_DRAENEI_RUINS); + if (m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[DRAENEI_RUINS] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_DRAENEI_RUINS); break; case 4512: case 4515: @@ -411,8 +411,7 @@ void BattlegroundEY::HandleAreaTrigger(Player* Source, uint32 Trigger) case 5866: break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp index f39b1ba5540..6c45d4a8873 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp @@ -102,26 +102,20 @@ bool BattlegroundNA::HandlePlayerUnderMap(Player* player) return true; } -void BattlegroundNA::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundNA::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; - //uint32 SpellId = 0; - //uint64 buff_guid = 0; - switch (Trigger) + switch (trigger) { case 4536: // buff trigger? case 4537: // buff trigger? break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } - - //if (buff_guid) - // HandleTriggerBuff(buff_guid, Source); } void BattlegroundNA::FillInitialWorldStates(WorldPacket &data) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp index 7fa9980a77c..3dd4fb32da4 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp @@ -102,27 +102,20 @@ bool BattlegroundRL::HandlePlayerUnderMap(Player* player) return true; } -void BattlegroundRL::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundRL::HandleAreaTrigger(Player* player, uint32 trigger) { - // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; - //uint32 SpellId = 0; - //uint64 buff_guid = 0; - switch (Trigger) + switch (trigger) { case 4696: // buff trigger? case 4697: // buff trigger? break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } - - //if (buff_guid) - // HandleTriggerBuff(buff_guid, Source); } void BattlegroundRL::FillInitialWorldStates(WorldPacket &data) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp index 769df5445c7..2cc48648022 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp @@ -148,12 +148,12 @@ bool BattlegroundRV::HandlePlayerUnderMap(Player* player) return true; } -void BattlegroundRV::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundRV::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; - switch (Trigger) + switch (trigger) { case 5224: case 5226: @@ -162,8 +162,7 @@ void BattlegroundRV::HandleAreaTrigger(Player* Source, uint32 Trigger) case 5474: break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } } @@ -247,4 +246,4 @@ void BattlegroundRV::TogglePillarCollision() } SetPillarCollision(!apply); -} \ No newline at end of file +} diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index dd94606b4cd..a50553d2fa3 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -595,15 +595,14 @@ void BattlegroundWS::UpdateTeamScore(uint32 team) UpdateWorldState(BG_WS_FLAG_CAPTURES_HORDE, GetTeamScore(team)); } -void BattlegroundWS::HandleAreaTrigger(Player* Source, uint32 Trigger) +void BattlegroundWS::HandleAreaTrigger(Player* player, uint32 trigger) { - // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; - switch (Trigger) + switch (trigger) { case 3686: // Alliance elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in Battleground::Update(). //buff_guid = BgObjects[BG_WS_OBJECT_SPEEDBUFF_1]; @@ -625,13 +624,13 @@ void BattlegroundWS::HandleAreaTrigger(Player* Source, uint32 Trigger) break; case 3646: // Alliance Flag spawn if (_flagState[BG_TEAM_HORDE] && !_flagState[BG_TEAM_ALLIANCE]) - if (GetFlagPickerGUID(BG_TEAM_HORDE) == Source->GetGUID()) - EventPlayerCapturedFlag(Source); + if (GetFlagPickerGUID(BG_TEAM_HORDE) == player->GetGUID()) + EventPlayerCapturedFlag(player); break; case 3647: // Horde Flag spawn if (_flagState[BG_TEAM_ALLIANCE] && !_flagState[BG_TEAM_HORDE]) - if (GetFlagPickerGUID(BG_TEAM_ALLIANCE) == Source->GetGUID()) - EventPlayerCapturedFlag(Source); + if (GetFlagPickerGUID(BG_TEAM_ALLIANCE) == player->GetGUID()) + EventPlayerCapturedFlag(player); break; case 3649: // unk1 case 3688: // unk2 @@ -639,8 +638,7 @@ void BattlegroundWS::HandleAreaTrigger(Player* Source, uint32 Trigger) case 4629: // unk4 break; default: - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); - Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); + Battleground::HandleAreaTrigger(player, trigger); break; } -- cgit v1.2.3 From 54bd7d9773c4c35de3a518712a3057fd41a67f71 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Wed, 19 Sep 2012 11:34:49 +0200 Subject: Core/Spells: Fix Crash --- src/server/game/Spells/Auras/SpellAuras.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 3de11b98e30..1c129c4d57c 100755 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1637,6 +1637,9 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b } if (GetSpellInfo()->GetSpellSpecific() == SPELL_SPECIFIC_AURA) { + if (!caster) + break; + // Improved devotion aura if (caster->HasAura(20140) || caster->HasAura(20138) || caster->HasAura(20139)) { -- cgit v1.2.3 From b2a7d5d34ad0fb2c8d91906e62c8707a146e759e Mon Sep 17 00:00:00 2001 From: Kandera Date: Wed, 19 Sep 2012 10:00:46 -0400 Subject: Core/SmartAI: revert previous setfly change. --- src/server/game/AI/SmartScripts/SmartScript.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index db79925cc7f..32b9f8b5903 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1268,7 +1268,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetFly(e.action.setFly.fly ? false : true); + CAST_AI(SmartAI, me->AI())->SetFly(e.action.setFly.fly ? true : false); break; } case SMART_ACTION_SET_RUN: -- cgit v1.2.3 From e34b7e70c54522e8ae933fffddaae04136b48103 Mon Sep 17 00:00:00 2001 From: thesensei Date: Fri, 21 Sep 2012 00:07:56 +0300 Subject: Core/Conditions: Add relation to creator * This is used in spells with effect summon where the summoned creature doesn't get a *summonedby* flag and so relation to owner is not working. This way the unit get relation to the master who created it. * World case where I'm going to use this is summoning Oculus drakes * Blizzard seems to handle such cases with special spells in dbc that are missing and sniff gives nothing for them. The number of spells is unknown, but existence of atleast 10 is seen. They are used usually as bonus effects to make the check however mechanic is unknown. Guessing it is good as adding this. --- src/server/game/Conditions/ConditionMgr.cpp | 3 +++ src/server/game/Conditions/ConditionMgr.h | 1 + 2 files changed, 4 insertions(+) (limited to 'src') diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 546c4f303b2..7dc4b57d188 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -223,6 +223,9 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) case RELATION_PASSENGER_OF: condMeets = unit->IsOnVehicle(toUnit); break; + case RELATION_CREATED_BY: + condMeets = unit->GetCreatorGUID() == toUnit->GetGUID(); + break; } } } diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index bd72015d76f..57af0562dcd 100755 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -144,6 +144,7 @@ enum RelationType RELATION_IN_RAID_OR_PARTY, RELATION_OWNED_BY, RELATION_PASSENGER_OF, + RELATION_CREATED_BY, RELATION_MAX }; -- cgit v1.2.3