aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.h1
-rw-r--r--src/server/game/Accounts/AccountMgr.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp31
-rw-r--r--src/server/game/Maps/Map.h8
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp2
-rw-r--r--src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp3
8 files changed, 26 insertions, 25 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
index a7b8b530f66..063a710b0bf 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
@@ -21,6 +21,7 @@
#define CAST_SUM(a) (SCRIPT_CAST_TYPE<TempSummon*>(a))
#define CAST_PET(a) (SCRIPT_CAST_TYPE<Pet*>(a))
#define CAST_AI(a,b) (SCRIPT_CAST_TYPE<a*>(b))
+#define CAST_INST(a,b) (SCRIPT_CAST_TYPE<a*>(b))
#define GET_SPELL(a) (const_cast<SpellEntry*>(GetSpellStore()->LookupEntry(a)))
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp
index 54c4f4ffc35..5aae30fe13d 100644
--- a/src/server/game/Accounts/AccountMgr.cpp
+++ b/src/server/game/Accounts/AccountMgr.cpp
@@ -72,7 +72,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accid)
uint64 guid = MAKE_NEW_GUID(guidlo, 0, HIGHGUID_PLAYER);
// kick if player currently
- if (Player* p = ObjectAccessor::GetObjectInWorld(guid, (Player*)NULL))
+ if (Player* p = ObjectAccessor::FindPlayer(guid))
{
WorldSession* s = p->GetSession();
s->KickPlayer(); // mark session to remove at next session list update
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e0d1ba85327..5c8a89ffac5 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -3616,23 +3616,17 @@ void Unit::_AddAura(UnitAura * aura, Unit * caster)
// register single target aura
caster->GetSingleCastAuras().push_back(aura);
// remove other single target auras
- for (;;)
+ Unit::AuraList& scAuras = caster->GetSingleCastAuras();
+ for (Unit::AuraList::iterator itr = scAuras.begin(); itr != scAuras.end();)
{
- bool restart = false;
- Unit::AuraList& scAuras = caster->GetSingleCastAuras();
- for (Unit::AuraList::iterator itr = scAuras.begin(); itr != scAuras.end(); ++itr)
+ if ((*itr) != aura &&
+ IsSingleTargetSpells((*itr)->GetSpellProto(), aura->GetSpellProto()))
{
- if ((*itr) != aura &&
- IsSingleTargetSpells((*itr)->GetSpellProto(), aura->GetSpellProto()))
- {
- (*itr)->Remove();
- restart = true;
- break;
- }
+ (*itr)->Remove();
+ itr = scAuras.begin();
}
-
- if (!restart)
- break;
+ else
+ ++itr;
}
}
}
@@ -4266,7 +4260,7 @@ void Unit::RemoveNotOwnSingleTargetAuras(uint32 newPhase)
AuraApplication const * aurApp = iter->second;
Aura const * aura = aurApp->GetBase();
- if (aura->GetCasterGUID() !=GetGUID() && IsSingleTargetSpell(aura->GetSpellProto()))
+ if (aura->GetCasterGUID() != GetGUID() && IsSingleTargetSpell(aura->GetSpellProto()))
{
if (!newPhase)
RemoveAura(iter);
@@ -4288,14 +4282,13 @@ void Unit::RemoveNotOwnSingleTargetAuras(uint32 newPhase)
for (AuraList::iterator iter = scAuras.begin(); iter != scAuras.end();)
{
Aura * aura = *iter;
- ++iter;
if (aura->GetUnitOwner() != this && !aura->GetUnitOwner()->InSamePhase(newPhase))
{
- uint32 removedAuras = m_removedAurasCount;
aura->Remove();
- if (m_removedAurasCount > removedAuras + 1)
- iter = scAuras.begin();
+ iter = scAuras.begin();
}
+ else
+ ++iter;
}
}
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index 94352fddc59..83633ca5845 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -51,6 +51,8 @@ struct ScriptInfo;
struct ScriptAction;
struct Position;
class BattleGround;
+class MapInstanced;
+class InstanceMap;
//******************************************
// Map file format defines
@@ -446,6 +448,12 @@ class Map : public GridRefManager<NGridType>
Creature* GetCreature(uint64 guid);
GameObject* GetGameObject(uint64 guid);
DynamicObject* GetDynamicObject(uint64 guid);
+
+ MapInstanced* ToMapInstanced(){ if (Instanceable()) return reinterpret_cast<MapInstanced*>(this); else return NULL; }
+ const MapInstanced* ToMapInstanced() const { if (Instanceable()) return (const MapInstanced*)((MapInstanced*)this); else return NULL; }
+
+ InstanceMap* ToInstanceMap(){ if (IsDungeon()) return reinterpret_cast<InstanceMap*>(this); else return NULL; }
+ const InstanceMap* ToInstanceMap() const { if (IsDungeon()) return (const InstanceMap*)((InstanceMap*)this); else return NULL; }
private:
void LoadMapAndVMap(int gx, int gy);
void LoadVMap(int gx, int gy);
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
index e72e49c47b3..61def91b736 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
@@ -369,7 +369,7 @@ struct boss_kalecgosAI : public ScriptedAI
{
Player* pPlayer = itr->getSource();
if (pPlayer)
- ((InstanceMap*)me->GetMap())->PermBindAllPlayers(pPlayer);
+ me->GetMap()->ToInstanceMap()->PermBindAllPlayers(pPlayer);
}
}
}
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index 6ca2e0886c6..63bbb3f2f8b 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -505,7 +505,7 @@ bool GOHello_altar(Player * /*pPlayer*/, GameObject *pGO)
case 192519: uiStatue = pInstance->GetData64(DATA_MOORABI_STATUE); break;
case 192520: uiStatue = pInstance->GetData64(DATA_DRAKKARI_COLOSSUS_STATUE); break;
}
- if (((instance_gundrak*)pInstance)->QueueActivation(uiStatue, 3500))
+ if (CAST_INST(instance_gundrak, pInstance)->QueueActivation(uiStatue, 3500))
{
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
pGO->SetGoState(GO_STATE_ACTIVE);
diff --git a/src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp
index 8095fefc4e4..3921b559f27 100644
--- a/src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp
+++ b/src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp
@@ -1497,7 +1497,7 @@ struct mob_twilight_eggsAI : public Scripted_NoMovementAI
{
Creature* Tenebron = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TENEBRON));
if(Tenebron)
- ((mob_tenebronAI*)Tenebron->AI())->m_bHasPortalOpen = false;
+ (CAST_AI(mob_tenebronAI,Tenebron->AI()))->m_bHasPortalOpen = false;
SpawnWhelps();
}
else
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 964f30adb91..59d6baeded7 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -446,8 +446,7 @@ struct boss_skadiAI : public ScriptedAI
bool GOHello_go_harpoon_launcher(Player *pPlayer, GameObject *pGO)
{
- ScriptedInstance* m_pInstance;
- m_pInstance = (ScriptedInstance*)pGO->GetInstanceData();
+ ScriptedInstance* m_pInstance = pGO->GetInstanceData();
if (!m_pInstance) return false;
if (Creature* pSkadi = Unit::GetCreature((*pGO),m_pInstance->GetData64(DATA_SKADI_THE_RUTHLESS)))