diff options
| author | Trazom62 <none@none> | 2010-01-12 20:51:59 +0100 |
|---|---|---|
| committer | Trazom62 <none@none> | 2010-01-12 20:51:59 +0100 |
| commit | 6cf82048a5345cab9fb20930268fce7e64b2fdc1 (patch) | |
| tree | 211e40118270a12c11e36b961a82fa4c007f077f /src/bindings/scripts/include | |
| parent | aeb008d4ef3674fd12ec9143def4f5195ba2005c (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.cpp | 3 | ||||
| -rw-r--r-- | src/bindings/scripts/include/sc_creature.h | 65 |
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; |
