aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts/include
diff options
context:
space:
mode:
authorTrazom62 <none@none>2010-01-12 20:51:59 +0100
committerTrazom62 <none@none>2010-01-12 20:51:59 +0100
commit6cf82048a5345cab9fb20930268fce7e64b2fdc1 (patch)
tree211e40118270a12c11e36b961a82fa4c007f077f /src/bindings/scripts/include
parentaeb008d4ef3674fd12ec9143def4f5195ba2005c (diff)
Fix normal10/normal25 raid detection in scripts.
Replace HEROIC(n,h) macro by DUNGEON_MODE(n,h), RAID_MODE(n10,n25) and RAID_MODE(n10,n25,h10,h25) functions Cleanup all HeroicMode like flags in ScriptedAI sub-class Fix some missing virtual destructors --HG-- branch : trunk
Diffstat (limited to 'src/bindings/scripts/include')
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp3
-rw-r--r--src/bindings/scripts/include/sc_creature.h65
2 files changed, 64 insertions, 4 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index bb4d3e68888..565eb76cfae 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -87,7 +87,8 @@ ScriptedAI::ScriptedAI(Creature* pCreature) : CreatureAI(pCreature),
m_bCombatMovement(true),
m_uiEvadeCheckCooldown(2500)
{
- HeroicMode = m_creature->GetMap()->IsHeroic();
+ m_heroicMode = m_creature->GetMap()->IsHeroic();
+ m_difficulty = Difficulty(m_creature->GetMap()->GetSpawnMode());
}
void ScriptedAI::AttackStartNoMove(Unit* pWho)
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h
index fdeea02997c..ac6cc4fcba5 100644
--- a/src/bindings/scripts/include/sc_creature.h
+++ b/src/bindings/scripts/include/sc_creature.h
@@ -43,7 +43,7 @@ class SummonList : public std::list<uint64>
struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
{
explicit ScriptedAI(Creature* pCreature);
- ~ScriptedAI() {}
+ virtual ~ScriptedAI() {}
//*************
//CreatureAI Functions
@@ -91,8 +91,6 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
//For fleeing
bool IsFleeing;
- bool HeroicMode;
-
//*************
//Pure virtual functions
//*************
@@ -171,14 +169,74 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
bool EnterEvadeIfOutOfCombatArea(const uint32 uiDiff);
+ // return true for heroic mode. i.e.
+ // - for dungeon in mode 10-heroic,
+ // - for raid in mode 10-Heroic
+ // - for raid in mode 25-heroic
+ // DO NOT USE to check raid in mode 25-normal.
+ bool IsHeroic() { return m_heroicMode; }
+
+ // return the dungeon or raid difficulty
+ Difficulty getDifficulty() { return m_difficulty; }
+
+ template<class T> inline
+ const T& DUNGEON_MODE(const T& normal5, const T& heroic10)
+ {
+ switch(m_difficulty)
+ {
+ case DUNGEON_DIFFICULTY_NORMAL:
+ return normal5;
+ case DUNGEON_DIFFICULTY_HEROIC:
+ return heroic10;
+ }
+
+ return heroic10;
+ }
+
+ template<class T> inline
+ const T& RAID_MODE(const T& normal10, const T& normal25)
+ {
+ switch(m_difficulty)
+ {
+ case RAID_DIFFICULTY_10MAN_NORMAL:
+ return normal10;
+ case RAID_DIFFICULTY_25MAN_NORMAL:
+ return normal25;
+ }
+
+ return normal25;
+ }
+
+ template<class T> inline
+ const T& RAID_MODE(const T& normal10, const T& normal25, const T& heroic10, const T& heroic25)
+ {
+ switch(m_difficulty)
+ {
+ case RAID_DIFFICULTY_10MAN_NORMAL:
+ return normal10;
+ case RAID_DIFFICULTY_25MAN_NORMAL:
+ return normal25;
+ case RAID_DIFFICULTY_10MAN_HEROIC:
+ return heroic10;
+ case RAID_DIFFICULTY_25MAN_HEROIC:
+ return heroic25;
+ }
+
+ return heroic25;
+ }
+
private:
bool m_bCombatMovement;
uint32 m_uiEvadeCheckCooldown;
+
+ bool m_heroicMode;
+ Difficulty m_difficulty;
};
struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI
{
Scripted_NoMovementAI(Creature* creature) : ScriptedAI(creature) {}
+ virtual ~Scripted_NoMovementAI() {}
//Called at each attack of m_creature by any victim
void AttackStart(Unit* who);
@@ -187,6 +245,7 @@ struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI
struct TRINITY_DLL_DECL BossAI : public ScriptedAI
{
BossAI(Creature *c, uint32 id);
+ virtual ~BossAI() {}
const uint32 bossId;
EventMap events;