aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/AI/CoreAI/CombatAI.cpp12
-rw-r--r--src/server/game/AI/CoreAI/CombatAI.h12
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h2
-rw-r--r--src/server/game/AI/CoreAI/PassiveAI.cpp4
-rw-r--r--src/server/game/AI/CoreAI/PassiveAI.h6
-rw-r--r--src/server/game/AI/CoreAI/PetAI.cpp2
-rw-r--r--src/server/game/AI/CoreAI/PetAI.h2
-rw-r--r--src/server/game/AI/CoreAI/ReactorAI.cpp2
-rw-r--r--src/server/game/AI/CoreAI/ReactorAI.h2
-rw-r--r--src/server/game/AI/CoreAI/TotemAI.cpp2
-rw-r--r--src/server/game/AI/CoreAI/TotemAI.h2
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h6
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.cpp6
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.h10
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp4
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.h2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp4
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h4
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp10
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp36
-rw-r--r--src/server/game/Maps/Map.h17
23 files changed, 81 insertions, 72 deletions
diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp
index 95a5a9a5116..7f0cec1a41d 100644
--- a/src/server/game/AI/CoreAI/CombatAI.cpp
+++ b/src/server/game/AI/CoreAI/CombatAI.cpp
@@ -32,7 +32,7 @@ int AggressorAI::Permissible(const Creature* creature)
return PERMIT_BASE_NO;
}
-void AggressorAI::UpdateAI(const uint32 /*diff*/)
+void AggressorAI::UpdateAI(uint32 /*diff*/)
{
if (!UpdateVictim())
return;
@@ -93,7 +93,7 @@ void CombatAI::EnterCombat(Unit* who)
}
}
-void CombatAI::UpdateAI(const uint32 diff)
+void CombatAI::UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
@@ -157,7 +157,7 @@ void CasterAI::EnterCombat(Unit* who)
}
}
-void CasterAI::UpdateAI(const uint32 diff)
+void CasterAI::UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
@@ -219,7 +219,7 @@ void ArcherAI::AttackStart(Unit* who)
me->GetMotionMaster()->MoveIdle();
}
-void ArcherAI::UpdateAI(const uint32 /*diff*/)
+void ArcherAI::UpdateAI(uint32 /*diff*/)
{
if (!UpdateVictim())
return;
@@ -260,7 +260,7 @@ void TurretAI::AttackStart(Unit* who)
me->Attack(who, false);
}
-void TurretAI::UpdateAI(const uint32 /*diff*/)
+void TurretAI::UpdateAI(uint32 /*diff*/)
{
if (!UpdateVictim())
return;
@@ -280,7 +280,7 @@ VehicleAI::VehicleAI(Creature* c) : CreatureAI(c), m_vehicle(c->GetVehicleKit())
}
//NOTE: VehicleAI::UpdateAI runs even while the vehicle is mounted
-void VehicleAI::UpdateAI(const uint32 diff)
+void VehicleAI::UpdateAI(uint32 diff)
{
CheckConditions(diff);
diff --git a/src/server/game/AI/CoreAI/CombatAI.h b/src/server/game/AI/CoreAI/CombatAI.h
index 8b10a8d6190..315ff861da9 100644
--- a/src/server/game/AI/CoreAI/CombatAI.h
+++ b/src/server/game/AI/CoreAI/CombatAI.h
@@ -30,7 +30,7 @@ class AggressorAI : public CreatureAI
public:
explicit AggressorAI(Creature* c) : CreatureAI(c) {}
- void UpdateAI(const uint32);
+ void UpdateAI(uint32);
static int Permissible(const Creature*);
};
@@ -45,7 +45,7 @@ class CombatAI : public CreatureAI
void Reset();
void EnterCombat(Unit* who);
void JustDied(Unit* killer);
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
void SpellInterrupted(uint32 spellId, uint32 unTimeMs);
static int Permissible(const Creature*);
protected:
@@ -59,7 +59,7 @@ class CasterAI : public CombatAI
explicit CasterAI(Creature* c) : CombatAI(c) { m_attackDist = MELEE_RANGE; }
void InitializeAI();
void AttackStart(Unit* victim) { AttackStartCaster(victim, m_attackDist); }
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
void EnterCombat(Unit* /*who*/);
private:
float m_attackDist;
@@ -70,7 +70,7 @@ struct ArcherAI : public CreatureAI
public:
explicit ArcherAI(Creature* c);
void AttackStart(Unit* who);
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
static int Permissible(const Creature*);
protected:
@@ -83,7 +83,7 @@ struct TurretAI : public CreatureAI
explicit TurretAI(Creature* c);
bool CanAIAttack(const Unit* who) const;
void AttackStart(Unit* who);
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
static int Permissible(const Creature*);
protected:
@@ -97,7 +97,7 @@ struct VehicleAI : public CreatureAI
public:
explicit VehicleAI(Creature* c);
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
static int Permissible(const Creature*);
void Reset();
void MoveInLineOfSight(Unit*) {}
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index feb3bbefcb8..32a6e9a670c 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -40,7 +40,7 @@ class GameObjectAI
virtual void Reset() { }
// Pass parameters between AI
- virtual void DoAction(const int32 /*param = 0 */) {}
+ virtual void DoAction(int32 /*param = 0 */) {}
virtual void SetGUID(uint64 /*guid*/, int32 /*id = 0 */) {}
virtual uint64 GetGUID(int32 /*id = 0 */) const { return 0; }
diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp
index 2407b1f71e6..187a72bae92 100644
--- a/src/server/game/AI/CoreAI/PassiveAI.cpp
+++ b/src/server/game/AI/CoreAI/PassiveAI.cpp
@@ -24,7 +24,7 @@ PassiveAI::PassiveAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASS
PossessedAI::PossessedAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
NullCreatureAI::NullCreatureAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
-void PassiveAI::UpdateAI(const uint32)
+void PassiveAI::UpdateAI(uint32)
{
if (me->isInCombat() && me->getAttackers().empty())
EnterEvadeMode();
@@ -35,7 +35,7 @@ void PossessedAI::AttackStart(Unit* target)
me->Attack(target, true);
}
-void PossessedAI::UpdateAI(const uint32 /*diff*/)
+void PossessedAI::UpdateAI(uint32 /*diff*/)
{
if (me->getVictim())
{
diff --git a/src/server/game/AI/CoreAI/PassiveAI.h b/src/server/game/AI/CoreAI/PassiveAI.h
index cb513234be3..cb047ff364b 100644
--- a/src/server/game/AI/CoreAI/PassiveAI.h
+++ b/src/server/game/AI/CoreAI/PassiveAI.h
@@ -28,7 +28,7 @@ class PassiveAI : public CreatureAI
void MoveInLineOfSight(Unit*) {}
void AttackStart(Unit*) {}
- void UpdateAI(const uint32);
+ void UpdateAI(uint32);
static int Permissible(const Creature*) { return PERMIT_BASE_IDLE; }
};
@@ -40,7 +40,7 @@ class PossessedAI : public CreatureAI
void MoveInLineOfSight(Unit*) {}
void AttackStart(Unit* target);
- void UpdateAI(const uint32);
+ void UpdateAI(uint32);
void EnterEvadeMode() {}
void JustDied(Unit*);
@@ -56,7 +56,7 @@ class NullCreatureAI : public CreatureAI
void MoveInLineOfSight(Unit*) {}
void AttackStart(Unit*) {}
- void UpdateAI(const uint32) {}
+ void UpdateAI(uint32) {}
void EnterEvadeMode() {}
void OnCharmed(bool /*apply*/) {}
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp
index 2792f68004f..dd32d2363d7 100644
--- a/src/server/game/AI/CoreAI/PetAI.cpp
+++ b/src/server/game/AI/CoreAI/PetAI.cpp
@@ -74,7 +74,7 @@ void PetAI::_stopAttack()
HandleReturnMovement();
}
-void PetAI::UpdateAI(const uint32 diff)
+void PetAI::UpdateAI(uint32 diff)
{
if (!me->isAlive() || !me->GetCharmInfo())
return;
diff --git a/src/server/game/AI/CoreAI/PetAI.h b/src/server/game/AI/CoreAI/PetAI.h
index 674c3dc1748..efb088160f3 100644
--- a/src/server/game/AI/CoreAI/PetAI.h
+++ b/src/server/game/AI/CoreAI/PetAI.h
@@ -31,7 +31,7 @@ class PetAI : public CreatureAI
explicit PetAI(Creature* c);
- void UpdateAI(const uint32);
+ void UpdateAI(uint32);
static int Permissible(const Creature*);
void KilledUnit(Unit* /*victim*/);
diff --git a/src/server/game/AI/CoreAI/ReactorAI.cpp b/src/server/game/AI/CoreAI/ReactorAI.cpp
index b9c235176bc..b99885088d4 100644
--- a/src/server/game/AI/CoreAI/ReactorAI.cpp
+++ b/src/server/game/AI/CoreAI/ReactorAI.cpp
@@ -31,7 +31,7 @@ int ReactorAI::Permissible(const Creature* creature)
return PERMIT_BASE_NO;
}
-void ReactorAI::UpdateAI(uint32 const /*diff*/)
+void ReactorAI::UpdateAI(uint32 /*diff*/)
{
if (!UpdateVictim())
return;
diff --git a/src/server/game/AI/CoreAI/ReactorAI.h b/src/server/game/AI/CoreAI/ReactorAI.h
index f7de3b99565..449458f39be 100644
--- a/src/server/game/AI/CoreAI/ReactorAI.h
+++ b/src/server/game/AI/CoreAI/ReactorAI.h
@@ -30,7 +30,7 @@ class ReactorAI : public CreatureAI
explicit ReactorAI(Creature* c) : CreatureAI(c) {}
void MoveInLineOfSight(Unit*) {}
- void UpdateAI(uint32 const diff);
+ void UpdateAI(uint32 diff);
static int Permissible(const Creature*);
};
diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp
index 8846066fee4..45865c5dbc2 100644
--- a/src/server/game/AI/CoreAI/TotemAI.cpp
+++ b/src/server/game/AI/CoreAI/TotemAI.cpp
@@ -49,7 +49,7 @@ void TotemAI::EnterEvadeMode()
me->CombatStop(true);
}
-void TotemAI::UpdateAI(uint32 const /*diff*/)
+void TotemAI::UpdateAI(uint32 /*diff*/)
{
if (me->ToTotem()->GetTotemType() != TOTEM_ACTIVE)
return;
diff --git a/src/server/game/AI/CoreAI/TotemAI.h b/src/server/game/AI/CoreAI/TotemAI.h
index f9a6acc7fce..897cfea1c44 100644
--- a/src/server/game/AI/CoreAI/TotemAI.h
+++ b/src/server/game/AI/CoreAI/TotemAI.h
@@ -35,7 +35,7 @@ class TotemAI : public CreatureAI
void AttackStart(Unit* victim);
void EnterEvadeMode();
- void UpdateAI(uint32 const diff);
+ void UpdateAI(uint32 diff);
static int Permissible(Creature const* creature);
private:
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index 3cb7c15dce4..5ab97ac5978 100644
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -125,7 +125,7 @@ class UnitAI
virtual bool CanAIAttack(Unit const* /*target*/) const { return true; }
virtual void AttackStart(Unit* /*target*/);
- virtual void UpdateAI(uint32 const diff) = 0;
+ virtual void UpdateAI(uint32 diff) = 0;
virtual void InitializeAI() { if (!me->isDead()) Reset(); }
@@ -135,7 +135,7 @@ class UnitAI
virtual void OnCharmed(bool apply) = 0;
// Pass parameters between AI
- virtual void DoAction(int32 const /*param*/) {}
+ virtual void DoAction(int32 /*param*/) {}
virtual uint32 GetData(uint32 /*id = 0*/) const { return 0; }
virtual void SetData(uint32 /*id*/, uint32 /*value*/) {}
virtual void SetGUID(uint64 /*guid*/, int32 /*id*/ = 0) {}
@@ -278,7 +278,7 @@ class PlayerAI : public UnitAI
class SimpleCharmedAI : public PlayerAI
{
public:
- void UpdateAI(uint32 const diff);
+ void UpdateAI(uint32 diff);
SimpleCharmedAI(Player* player): PlayerAI(player) {}
};
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
index 7cee0e20dd5..1b7948c4774 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
@@ -116,7 +116,7 @@ void ScriptedAI::AttackStart(Unit* who)
AttackStartNoMove(who);
}
-void ScriptedAI::UpdateAI(uint32 const /*diff*/)
+void ScriptedAI::UpdateAI(uint32 /*diff*/)
{
//Check if we have a current target
if (!UpdateVictim())
@@ -566,7 +566,7 @@ void BossAI::SummonedCreatureDespawn(Creature* summon)
summons.Despawn(summon);
}
-void BossAI::UpdateAI(uint32 const diff)
+void BossAI::UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
@@ -639,7 +639,7 @@ void WorldBossAI::SummonedCreatureDespawn(Creature* summon)
summons.Despawn(summon);
}
-void WorldBossAI::UpdateAI(uint32 const diff)
+void WorldBossAI::UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
index a9da02fda38..5098d353cac 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
@@ -90,7 +90,7 @@ struct ScriptedAI : public CreatureAI
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) {}
//Called at World update tick
- virtual void UpdateAI(uint32 const diff);
+ virtual void UpdateAI(uint32 diff);
//Called at creature death
void JustDied(Unit* /*killer*/) {}
@@ -288,13 +288,13 @@ class BossAI : public ScriptedAI
void JustSummoned(Creature* summon);
void SummonedCreatureDespawn(Creature* summon);
- virtual void UpdateAI(uint32 const diff);
+ virtual void UpdateAI(uint32 diff);
// Hook used to execute events scheduled into EventMap without the need
// to override UpdateAI
// note: You must re-schedule the event within this method if the event
// is supposed to run more than once
- virtual void ExecuteEvent(uint32 const /*eventId*/) { }
+ virtual void ExecuteEvent(uint32 /*eventId*/) { }
void Reset() { _Reset(); }
void EnterCombat(Unit* /*who*/) { _EnterCombat(); }
@@ -337,13 +337,13 @@ class WorldBossAI : public ScriptedAI
void JustSummoned(Creature* summon);
void SummonedCreatureDespawn(Creature* summon);
- virtual void UpdateAI(uint32 const diff);
+ virtual void UpdateAI(uint32 diff);
// Hook used to execute events scheduled into EventMap without the need
// to override UpdateAI
// note: You must re-schedule the event within this method if the event
// is supposed to run more than once
- virtual void ExecuteEvent(uint32 const /*eventId*/) { }
+ virtual void ExecuteEvent(uint32 /*eventId*/) { }
void Reset() { _Reset(); }
void EnterCombat(Unit* /*who*/) { _EnterCombat(); }
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index 3f5952a210d..b43cd1e7cd4 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -205,7 +205,7 @@ bool npc_escortAI::IsPlayerOrGroupInRange()
return false;
}
-void npc_escortAI::UpdateAI(uint32 const diff)
+void npc_escortAI::UpdateAI(uint32 diff)
{
//Waypoint Updating
if (HasEscortState(STATE_ESCORT_ESCORTING) && !me->getVictim() && m_uiWPWaitTimer && !HasEscortState(STATE_ESCORT_RETURNING))
@@ -293,7 +293,7 @@ void npc_escortAI::UpdateAI(uint32 const diff)
UpdateEscortAI(diff);
}
-void npc_escortAI::UpdateEscortAI(uint32 const /*diff*/)
+void npc_escortAI::UpdateEscortAI(uint32 /*diff*/)
{
if (!UpdateVictim())
return;
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
index 4b4f3656a8d..4a350acab2c 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
@@ -54,7 +54,7 @@ struct npc_escortAI : public ScriptedAI
void EnterEvadeMode();
- void UpdateAI(uint32 const diff); //the "internal" update, calls UpdateEscortAI()
+ void UpdateAI(uint32 diff); //the "internal" update, calls UpdateEscortAI()
virtual void UpdateEscortAI(uint32 const diff); //used when it's needed to add code in update (abilities, scripted events, etc)
void MovementInform(uint32, uint32);
diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
index 96209084240..63d5ad1fd05 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
@@ -184,7 +184,7 @@ void FollowerAI::EnterEvadeMode()
Reset();
}
-void FollowerAI::UpdateAI(const uint32 uiDiff)
+void FollowerAI::UpdateAI(uint32 uiDiff)
{
if (HasFollowState(STATE_FOLLOW_INPROGRESS) && !me->getVictim())
{
@@ -246,7 +246,7 @@ void FollowerAI::UpdateAI(const uint32 uiDiff)
UpdateFollowerAI(uiDiff);
}
-void FollowerAI::UpdateFollowerAI(const uint32 /*uiDiff*/)
+void FollowerAI::UpdateFollowerAI(uint32 /*uiDiff*/)
{
if (!UpdateVictim())
return;
diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h
index 1c81b5f73fc..ccc8af6197a 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h
@@ -38,8 +38,8 @@ class FollowerAI : public ScriptedAI
void JustRespawned();
- void UpdateAI(const uint32); //the "internal" update, calls UpdateFollowerAI()
- virtual void UpdateFollowerAI(const uint32); //used when it's needed to add code in update (abilities, scripted events, etc)
+ void UpdateAI(uint32); //the "internal" update, calls UpdateFollowerAI()
+ virtual void UpdateFollowerAI(uint32); //used when it's needed to add code in update (abilities, scripted events, etc)
void StartFollow(Player* player, uint32 factionForFollower = 0, const Quest* quest = NULL);
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 501bc35b77a..30cc3cf246b 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -330,7 +330,7 @@ void SmartAI::UpdatePath(const uint32 diff)
}
}
-void SmartAI::UpdateAI(const uint32 diff)
+void SmartAI::UpdateAI(uint32 diff)
{
GetScript()->OnUpdate(diff);
UpdatePath(diff);
@@ -422,6 +422,9 @@ void SmartAI::MovepointReached(uint32 id)
void SmartAI::MovementInform(uint32 MovementType, uint32 Data)
{
+ if ((MovementType == POINT_MOTION_TYPE && Data == SMART_ESCORT_LAST_OOC_POINT) || MovementType == FOLLOW_MOTION_TYPE)
+ me->ClearUnitState(UNIT_STATE_EVADE);
+
GetScript()->ProcessEventsFor(SMART_EVENT_MOVEMENTINFORM, NULL, MovementType, Data);
if (MovementType != POINT_MOTION_TYPE || !HasEscortState(SMART_ESCORT_ESCORTING))
return;
@@ -443,11 +446,12 @@ void SmartAI::RemoveAuras()
void SmartAI::EnterEvadeMode()
{
- if (!me->isAlive())
+ if (!me->isAlive() || me->IsInEvadeMode())
return;
RemoveAuras();
+ me->AddUnitState(UNIT_STATE_EVADE);
me->DeleteThreatList();
me->CombatStop(true);
me->LoadCreaturesAddon();
@@ -694,7 +698,7 @@ void SmartAI::OnCharmed(bool apply)
GetScript()->ProcessEventsFor(SMART_EVENT_CHARMED, NULL, 0, 0, apply);
}
-void SmartAI::DoAction(const int32 param)
+void SmartAI::DoAction(int32 param)
{
GetScript()->ProcessEventsFor(SMART_EVENT_ACTION_DONE, NULL, param);
}
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index ab2ffb7229d..b5b92efdcd2 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -111,7 +111,7 @@ class SmartAI : public CreatureAI
void HealReceived(Unit* doneBy, uint32& addhealth);
// Called at World update tick
- void UpdateAI(const uint32 diff);
+ void UpdateAI(uint32 diff);
// Called at text emote receive from player
void ReceiveEmote(Player* player, uint32 textEmote);
@@ -147,7 +147,7 @@ class SmartAI : public CreatureAI
bool CanAIAttack(const Unit* who) const;
// Used in scripts to share variables
- void DoAction(const int32 param = 0);
+ void DoAction(int32 param = 0);
// Used in scripts to share variables
uint32 GetData(uint32 id = 0) const;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 85022c9164c..b5273c72468 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -1013,7 +1013,7 @@ EquipmentInfo const* ObjectMgr::GetEquipmentInfo(uint32 entry, int8& id)
if (id == -1) // select a random element
{
EquipmentInfoContainerInternal::const_iterator ritr = itr->second.begin();
- std::advance(ritr, urand(0u, itr->second.size()));
+ std::advance(ritr, urand(0u, itr->second.size() - 1));
id = std::distance(itr->second.begin(), ritr) + 1;
return &ritr->second;
}
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 30ed39932ae..45fee50c5e5 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -36,12 +36,6 @@
#include "Vehicle.h"
#include "VMapFactory.h"
-union u_map_magic
-{
- char asChar[4];
- uint32 asUInt;
-};
-
u_map_magic MapMagic = { {'M','A','P','S'} };
u_map_magic MapVersionMagic = { {'v','1','.','3'} };
u_map_magic MapAreaMagic = { {'A','R','E','A'} };
@@ -77,28 +71,30 @@ Map::~Map()
bool Map::ExistMap(uint32 mapid, int gx, int gy)
{
- int len = sWorld->GetDataPath().length()+strlen("maps/%03u%02u%02u.map")+1;
- char* tmp = new char[len];
- snprintf(tmp, len, (char *)(sWorld->GetDataPath()+"maps/%03u%02u%02u.map").c_str(), mapid, gx, gy);
+ int len = sWorld->GetDataPath().length() + strlen("maps/%03u%02u%02u.map") + 1;
+ char* fileName = new char[len];
+ snprintf(fileName, len, (char *)(sWorld->GetDataPath() + "maps/%03u%02u%02u.map").c_str(), mapid, gx, gy);
bool ret = false;
- FILE* pf=fopen(tmp, "rb");
+ FILE* pf = fopen(fileName, "rb");
if (!pf)
- sLog->outError(LOG_FILTER_MAPS, "Map file '%s': does not exist!", tmp);
+ sLog->outError(LOG_FILTER_MAPS, "Map file '%s': does not exist!", fileName);
else
{
map_fileheader header;
if (fread(&header, sizeof(header), 1, pf) == 1)
{
- if (header.mapMagic != MapMagic.asUInt || header.versionMagic != MapVersionMagic.asUInt)
- sLog->outError(LOG_FILTER_MAPS, "Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", tmp);
+ if (header.mapMagic.asUInt != MapMagic.asUInt || header.versionMagic.asUInt != MapVersionMagic.asUInt)
+ sLog->outError(LOG_FILTER_MAPS, "Map file '%s' is from an incompatible map version (%.*s %.*s), %.*s %.*s is expected. Please recreate using the mapextractor.",
+ fileName, 4, header.mapMagic.asChar, 4, header.versionMagic.asChar, 4, MapMagic.asChar, 4, MapVersionMagic.asChar);
else
ret = true;
}
fclose(pf);
}
- delete [] tmp;
+
+ delete[] fileName;
return ret;
}
@@ -1102,23 +1098,23 @@ bool GridMap::loadData(char* filename)
return false;
}
- if (header.mapMagic == MapMagic.asUInt && header.versionMagic == MapVersionMagic.asUInt)
+ if (header.mapMagic.asUInt == MapMagic.asUInt && header.versionMagic.asUInt == MapVersionMagic.asUInt)
{
- // loadup area data
+ // load up area data
if (header.areaMapOffset && !loadAreaData(in, header.areaMapOffset, header.areaMapSize))
{
sLog->outError(LOG_FILTER_MAPS, "Error loading map area data\n");
fclose(in);
return false;
}
- // loadup height data
+ // load up height data
if (header.heightMapOffset && !loadHeightData(in, header.heightMapOffset, header.heightMapSize))
{
sLog->outError(LOG_FILTER_MAPS, "Error loading map height data\n");
fclose(in);
return false;
}
- // loadup liquid data
+ // load up liquid data
if (header.liquidMapOffset && !loadLiquidData(in, header.liquidMapOffset, header.liquidMapSize))
{
sLog->outError(LOG_FILTER_MAPS, "Error loading map liquids data\n");
@@ -1128,7 +1124,9 @@ bool GridMap::loadData(char* filename)
fclose(in);
return true;
}
- sLog->outError(LOG_FILTER_MAPS, "Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", filename);
+
+ sLog->outError(LOG_FILTER_MAPS, "Map file '%s' is from an incompatible map version (%.*s %.*s), %.*s %.*s is expected. Please recreate using the mapextractor.",
+ filename, 4, header.mapMagic.asChar, 4, header.versionMagic.asChar, 4, MapMagic.asChar, 4, MapVersionMagic.asChar);
fclose(in);
return false;
}
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index e66e0869686..cbc17901d02 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -58,8 +58,15 @@ struct ScriptAction
{
uint64 sourceGUID;
uint64 targetGUID;
- uint64 ownerGUID; // owner of source if source is item
- ScriptInfo const* script; // pointer to static script data
+ uint64 ownerGUID; ///> owner of source if source is item
+ ScriptInfo const* script; ///> pointer to static script data
+};
+
+/// Represents a map magic value of 4 bytes (used in versions)
+union u_map_magic
+{
+ char asChar[4]; ///> Non-null terminated string
+ uint32 asUInt; ///> uint32 representation
};
// ******************************************
@@ -67,9 +74,9 @@ struct ScriptAction
// ******************************************
struct map_fileheader
{
- uint32 mapMagic;
- uint32 versionMagic;
- uint32 buildMagic;
+ u_map_magic mapMagic;
+ u_map_magic versionMagic;
+ u_map_magic buildMagic;
uint32 areaMapOffset;
uint32 areaMapSize;
uint32 heightMapOffset;