From 335fe8e1b05edfe41d29fee92ee32f356270cff9 Mon Sep 17 00:00:00 2001 From: Warpten Date: Thu, 10 Apr 2014 14:28:58 +0200 Subject: Scripts/Ruby Sanctum: Fixed Halion engaging combat outside of his Flame Ring. --- .../scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index c35c9ba2d11..47c876f2a52 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -394,6 +394,13 @@ class boss_halion : public CreatureScript if (events.IsInPhase(PHASE_TWO)) return; + // Rough radius, it is not an exactly perfect circle + if (me->GetDistance2d(HalionControllerSpawnPos.GetPositionX(), HalionControllerSpawnPos.GetPositionY()) > 48.5f) + { + EnterEvadeMode(); + return; + } + generic_halionAI::UpdateAI(diff); } -- cgit v1.2.3 From 7b9b0edb5dd4108ea4658f9651c1681012a2c76e Mon Sep 17 00:00:00 2001 From: jackpoz Date: Thu, 10 Apr 2014 20:41:34 +0200 Subject: Core/GameObjects: Fix crash with Summoning Ritual GOs Fix a crash happening with GAMEOBJECT_TYPE_SUMMONING_RITUAL GameObjects if a Player clicked on the GO, logged out and let another Player click on it. Issue added in 464c0c16116dfd22b3c104165ce6edd7b7f4a3d4 Fixes #11856 --- src/server/game/Entities/GameObject/GameObject.cpp | 11 +++++++++-- src/server/game/Entities/GameObject/GameObject.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 67f7b1a46b2..cdd9e1441e7 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -52,7 +52,7 @@ GameObject::GameObject() : WorldObject(false), MapObject(), m_spellId = 0; m_cooldownTime = 0; m_goInfo = NULL; - m_ritualOwner = NULL; + m_ritualOwnerGUID = 0; m_goData = NULL; m_DBTableGuid = 0; @@ -1444,9 +1444,16 @@ void GameObject::Use(Unit* user) GameObjectTemplate const* info = GetGOInfo(); + Player* m_ritualOwner = NULL; + if (m_ritualOwnerGUID) + m_ritualOwner = ObjectAccessor::FindPlayer(m_ritualOwnerGUID); + // ritual owner is set for GO's without owner (not summoned) if (!m_ritualOwner && !owner) + { + m_ritualOwnerGUID = player->GetGUID(); m_ritualOwner = player; + } if (owner) { @@ -1517,7 +1524,7 @@ void GameObject::Use(Unit* user) else { // reset ritual for this GO - m_ritualOwner = NULL; + m_ritualOwnerGUID = 0; m_unique_users.clear(); m_usetimes = 0; } diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 48db64a3687..581208f1abd 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -846,7 +846,7 @@ class GameObject : public WorldObject, public GridObject, public Map // For traps this: spell casting cooldown, for doors/buttons: reset time. std::list m_SkillupList; - Player* m_ritualOwner; // used for GAMEOBJECT_TYPE_SUMMONING_RITUAL where GO is not summoned (no owner) + uint64 m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_SUMMONING_RITUAL where GO is not summoned (no owner) std::set m_unique_users; uint32 m_usetimes; -- cgit v1.2.3 From 870d5d9c45ddf8331f7029072f44f4b1cfa3b54b Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Fri, 4 Apr 2014 23:57:48 -0300 Subject: [TW278] - Core/Scripts: Prevent multiple spawns of Ulag http://www.wowhead.com/quest=1819/ulag-the-cleaver --- src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp index 925d0d73a70..e11e387ab0a 100644 --- a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp +++ b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp @@ -177,12 +177,13 @@ public: if (player->GetQuestStatus(QUEST_ULAG) != QUEST_STATUS_INCOMPLETE) return false; - if (GameObject* pTrigger = player->FindNearestGameObject(GO_TRIGGER, 30.0f)) - { - pTrigger->SetGoState(GO_STATE_READY); - player->SummonCreature(NPC_ULAG, 2390.26f, 336.47f, 40.01f, 2.26f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000); - return false; - } + if (!player->FindNearestCreature(NPC_ULAG, 50.0f)) + if (GameObject* pTrigger = player->FindNearestGameObject(GO_TRIGGER, 30.0f)) + { + pTrigger->SetGoState(GO_STATE_READY); + player->SummonCreature(NPC_ULAG, 2390.26f, 336.47f, 40.01f, 2.26f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000); + return false; + } return false; } -- cgit v1.2.3