converted all tabs to 4 spaces

This commit is contained in:
Yehonal
2016-06-26 19:23:57 +02:00
parent 52f305111c
commit f6eefedcd5
717 changed files with 132388 additions and 132388 deletions

View File

@@ -10,470 +10,470 @@ REWRITTEN FROM SCRATCH BY PUSSYWIZARD, IT OWNS NOW!
enum Spells
{
SPELL_RAISE_DEAD_JAEREN = 67715,
SPELL_RAISE_DEAD_ARELAS = 67705,
SPELL_BK_FEIGN_DEATH = 67691,
SPELL_BLACK_KNIGHT_RES = 67693,
SPELL_BK_KILL_CREDIT = 68663,
SPELL_RAISE_DEAD_JAEREN = 67715,
SPELL_RAISE_DEAD_ARELAS = 67705,
SPELL_BK_FEIGN_DEATH = 67691,
SPELL_BLACK_KNIGHT_RES = 67693,
SPELL_BK_KILL_CREDIT = 68663,
// phase 1
SPELL_PLAGUE_STRIKE_N = 67724,
SPELL_PLAGUE_STRIKE_H = 67884,
SPELL_ICY_TOUCH_N = 67718,
SPELL_ICY_TOUCH_H = 67881,
SPELL_DEATH_RESPITE_N = 67745,
SPELL_DEATH_RESPITE_H = 68306,
SPELL_DEATH_RESPITE_DUMMY = 66798,
SPELL_OBLITERATE_N = 67725,
SPELL_OBLITERATE_H = 67883,
// phase 1
SPELL_PLAGUE_STRIKE_N = 67724,
SPELL_PLAGUE_STRIKE_H = 67884,
SPELL_ICY_TOUCH_N = 67718,
SPELL_ICY_TOUCH_H = 67881,
SPELL_DEATH_RESPITE_N = 67745,
SPELL_DEATH_RESPITE_H = 68306,
SPELL_DEATH_RESPITE_DUMMY = 66798,
SPELL_OBLITERATE_N = 67725,
SPELL_OBLITERATE_H = 67883,
// phase 2 (+ abilities from phase 1 without death respite)
SPELL_ARMY_DEAD_N = 67761,
SPELL_ARMY_DEAD_H = 67874,
SPELL_DESECRATION_N = 67778,
SPELL_DESECRATION_H = 67877,
SPELL_DESECRATION_SUMMON = 67779,
SPELL_BK_GHOUL_EXPLODE = 67751,
// phase 2 (+ abilities from phase 1 without death respite)
SPELL_ARMY_DEAD_N = 67761,
SPELL_ARMY_DEAD_H = 67874,
SPELL_DESECRATION_N = 67778,
SPELL_DESECRATION_H = 67877,
SPELL_DESECRATION_SUMMON = 67779,
SPELL_BK_GHOUL_EXPLODE = 67751,
// phase 3
SPELL_DEATH_BITE_N = 67808,
SPELL_DEATH_BITE_H = 67875,
SPELL_MARKED_DEATH_N = 67823,
SPELL_MARKED_DEATH_H = 67882,
// phase 3
SPELL_DEATH_BITE_N = 67808,
SPELL_DEATH_BITE_H = 67875,
SPELL_MARKED_DEATH_N = 67823,
SPELL_MARKED_DEATH_H = 67882,
// ghouls
SPELL_CLAW_N = 67774,
SPELL_CLAW_H = 67879,
SPELL_EXPLODE_N = 67729,
SPELL_EXPLODE_H = 67886,
SPELL_LEAP_N = 67749,
SPELL_LEAP_H = 67880,
// ghouls
SPELL_CLAW_N = 67774,
SPELL_CLAW_H = 67879,
SPELL_EXPLODE_N = 67729,
SPELL_EXPLODE_H = 67886,
SPELL_LEAP_N = 67749,
SPELL_LEAP_H = 67880,
};
#define SPELL_LEAP DUNGEON_MODE(SPELL_LEAP_N, SPELL_LEAP_H)
#define SPELL_EXPLODE DUNGEON_MODE(SPELL_EXPLODE_N, SPELL_EXPLODE_H)
#define SPELL_LEAP DUNGEON_MODE(SPELL_LEAP_N, SPELL_LEAP_H)
#define SPELL_EXPLODE DUNGEON_MODE(SPELL_EXPLODE_N, SPELL_EXPLODE_H)
#define SPELL_PLAGUE_STRIKE DUNGEON_MODE(SPELL_PLAGUE_STRIKE_N, SPELL_PLAGUE_STRIKE_H)
#define SPELL_ICY_TOUCH DUNGEON_MODE(SPELL_ICY_TOUCH_N, SPELL_ICY_TOUCH_H)
#define SPELL_DEATH_RESPITE DUNGEON_MODE(SPELL_DEATH_RESPITE_N, SPELL_DEATH_RESPITE_H)
#define SPELL_OBLITERATE DUNGEON_MODE(SPELL_OBLITERATE_N, SPELL_OBLITERATE_H)
#define SPELL_ARMY_DEAD DUNGEON_MODE(SPELL_ARMY_DEAD_N, SPELL_ARMY_DEAD_H)
#define SPELL_DESECRATION DUNGEON_MODE(SPELL_DESECRATION_N, SPELL_DESECRATION_H)
#define SPELL_DEATH_BITE DUNGEON_MODE(SPELL_DEATH_BITE_N, SPELL_DEATH_BITE_H)
#define SPELL_MARKED_DEATH DUNGEON_MODE(SPELL_MARKED_DEATH_N, SPELL_MARKED_DEATH_H)
#define SPELL_PLAGUE_STRIKE DUNGEON_MODE(SPELL_PLAGUE_STRIKE_N, SPELL_PLAGUE_STRIKE_H)
#define SPELL_ICY_TOUCH DUNGEON_MODE(SPELL_ICY_TOUCH_N, SPELL_ICY_TOUCH_H)
#define SPELL_DEATH_RESPITE DUNGEON_MODE(SPELL_DEATH_RESPITE_N, SPELL_DEATH_RESPITE_H)
#define SPELL_OBLITERATE DUNGEON_MODE(SPELL_OBLITERATE_N, SPELL_OBLITERATE_H)
#define SPELL_ARMY_DEAD DUNGEON_MODE(SPELL_ARMY_DEAD_N, SPELL_ARMY_DEAD_H)
#define SPELL_DESECRATION DUNGEON_MODE(SPELL_DESECRATION_N, SPELL_DESECRATION_H)
#define SPELL_DEATH_BITE DUNGEON_MODE(SPELL_DEATH_BITE_N, SPELL_DEATH_BITE_H)
#define SPELL_MARKED_DEATH DUNGEON_MODE(SPELL_MARKED_DEATH_N, SPELL_MARKED_DEATH_H)
enum Events
{
EVENT_ANNOUNCER_SAY_ZOMBIE = 1,
EVENT_SPELL_PLAGUE_STRIKE,
EVENT_SPELL_ICY_TOUCH,
EVENT_SPELL_DEATH_RESPITE,
EVENT_SPELL_OBLITERATE,
EVENT_SPELL_DESECRATION,
EVENT_SPELL_DEATH_BITE,
EVENT_SPELL_MARKED_DEATH,
EVENT_ANNOUNCER_SAY_ZOMBIE = 1,
EVENT_SPELL_PLAGUE_STRIKE,
EVENT_SPELL_ICY_TOUCH,
EVENT_SPELL_DEATH_RESPITE,
EVENT_SPELL_OBLITERATE,
EVENT_SPELL_DESECRATION,
EVENT_SPELL_DEATH_BITE,
EVENT_SPELL_MARKED_DEATH,
};
enum NPCs
{
NPC_RISEN_CHAMPION = 35590,
NPC_RISEN_CHAMPION = 35590,
};
enum Models
{
MODEL_SKELETON = 29846,
MODEL_GHOST = 21300
MODEL_SKELETON = 29846,
MODEL_GHOST = 21300
};
class boss_black_knight : public CreatureScript
{
public:
boss_black_knight() : CreatureScript("boss_black_knight") { }
boss_black_knight() : CreatureScript("boss_black_knight") { }
struct boss_black_knightAI : public ScriptedAI
{
boss_black_knightAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me)
{
pInstance = pCreature->GetInstanceScript();
}
struct boss_black_knightAI : public ScriptedAI
{
boss_black_knightAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me)
{
pInstance = pCreature->GetInstanceScript();
}
InstanceScript* pInstance;
EventMap events;
SummonList summons;
uint8 Phase;
InstanceScript* pInstance;
EventMap events;
SummonList summons;
uint8 Phase;
void Reset()
{
events.Reset();
summons.DespawnAll();
Phase = 1;
me->SetDisplayId(me->GetNativeDisplayId());
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_PASSIVE);
if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, NOT_STARTED);
void Reset()
{
events.Reset();
summons.DespawnAll();
Phase = 1;
me->SetDisplayId(me->GetNativeDisplayId());
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_PASSIVE);
if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, NOT_STARTED);
//me->SetLootMode(0); // [LOOT]
}
//me->SetLootMode(0); // [LOOT]
}
void EnterEvadeMode()
{
me->DespawnOrUnsummon(1);
ScriptedAI::EnterEvadeMode();
}
void EnterEvadeMode()
{
me->DespawnOrUnsummon(1);
ScriptedAI::EnterEvadeMode();
}
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
{
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
{
damage = 0;
return;
}
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
{
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
{
damage = 0;
return;
}
if( Phase < 3 && damage >= me->GetHealth() )
{
damage = 0;
me->SetHealth(me->GetMaxHealth());
events.Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->RemoveAllAuras();
me->SetControlled(true, UNIT_STATE_STUNNED);
me->CastSpell(me, SPELL_BK_GHOUL_EXPLODE, true);
summons.clear();
if( Phase < 3 && damage >= me->GetHealth() )
{
damage = 0;
me->SetHealth(me->GetMaxHealth());
events.Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->RemoveAllAuras();
me->SetControlled(true, UNIT_STATE_STUNNED);
me->CastSpell(me, SPELL_BK_GHOUL_EXPLODE, true);
summons.clear();
me->CastSpell(me, SPELL_BK_FEIGN_DEATH, true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_29);
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->AddUnitState(UNIT_STATE_DIED);
me->CastSpell(me, SPELL_BK_FEIGN_DEATH, true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_29);
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->AddUnitState(UNIT_STATE_DIED);
}
}
}
}
void DoAction(int32 param)
{
if( param == -1 )
{
summons.DespawnAll();
}
else if( param == 1 )
{
if( !pInstance )
return;
void DoAction(int32 param)
{
if( param == -1 )
{
summons.DespawnAll();
}
else if( param == 1 )
{
if( !pInstance )
return;
pInstance->SetData(BOSS_BLACK_KNIGHT, IN_PROGRESS);
Talk(TEXT_BK_AGGRO);
me->CastSpell((Unit*)NULL, (pInstance->GetData(DATA_TEAMID_IN_INSTANCE)==TEAM_HORDE ? SPELL_RAISE_DEAD_JAEREN : SPELL_RAISE_DEAD_ARELAS), false);
if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetData64(DATA_ANNOUNCER)) )
announcer->DespawnOrUnsummon();
pInstance->SetData(BOSS_BLACK_KNIGHT, IN_PROGRESS);
Talk(TEXT_BK_AGGRO);
me->CastSpell((Unit*)NULL, (pInstance->GetData(DATA_TEAMID_IN_INSTANCE)==TEAM_HORDE ? SPELL_RAISE_DEAD_JAEREN : SPELL_RAISE_DEAD_ARELAS), false);
if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetData64(DATA_ANNOUNCER)) )
announcer->DespawnOrUnsummon();
events.Reset();
events.ScheduleEvent(EVENT_ANNOUNCER_SAY_ZOMBIE, 2500);
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, urand(7000,9000));
events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, urand(3500,7000));
events.ScheduleEvent(EVENT_SPELL_DEATH_RESPITE, urand(13000,15000));
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, urand(11000,19000));
}
}
events.Reset();
events.ScheduleEvent(EVENT_ANNOUNCER_SAY_ZOMBIE, 2500);
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, urand(7000,9000));
events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, urand(3500,7000));
events.ScheduleEvent(EVENT_SPELL_DEATH_RESPITE, urand(13000,15000));
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, urand(11000,19000));
}
}
void SpellHitTarget(Unit* target, const SpellInfo* spell)
{
switch( spell->Id )
{
case SPELL_BLACK_KNIGHT_RES:
me->SetHealth(me->GetMaxHealth());
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_29);
me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->ClearUnitState(UNIT_STATE_DIED);
void SpellHitTarget(Unit* target, const SpellInfo* spell)
{
switch( spell->Id )
{
case SPELL_BLACK_KNIGHT_RES:
me->SetHealth(me->GetMaxHealth());
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_29);
me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->ClearUnitState(UNIT_STATE_DIED);
++Phase;
++Phase;
switch( Phase )
{
case 2:
me->SetDisplayId(MODEL_SKELETON);
Talk(TEXT_BK_SKELETON_RES);
me->CastSpell(me, SPELL_ARMY_DEAD, false);
switch( Phase )
{
case 2:
me->SetDisplayId(MODEL_SKELETON);
Talk(TEXT_BK_SKELETON_RES);
me->CastSpell(me, SPELL_ARMY_DEAD, false);
events.Reset();
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, urand(7000,9000));
events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, urand(3500,7000));
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, urand(11000,19000));
events.ScheduleEvent(EVENT_SPELL_DESECRATION, urand(2000,3000));
break;
case 3:
me->SetDisplayId(MODEL_GHOST);
Talk(TEXT_BK_GHOST_RES);
events.Reset();
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, urand(7000,9000));
events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, urand(3500,7000));
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, urand(11000,19000));
events.ScheduleEvent(EVENT_SPELL_DESECRATION, urand(2000,3000));
break;
case 3:
me->SetDisplayId(MODEL_GHOST);
Talk(TEXT_BK_GHOST_RES);
events.Reset();
events.ScheduleEvent(EVENT_SPELL_DEATH_BITE, 2000);
events.ScheduleEvent(EVENT_SPELL_MARKED_DEATH, 1000);
break;
default:
EnterEvadeMode();
break;
}
break;
}
}
events.Reset();
events.ScheduleEvent(EVENT_SPELL_DEATH_BITE, 2000);
events.ScheduleEvent(EVENT_SPELL_MARKED_DEATH, 1000);
break;
default:
EnterEvadeMode();
break;
}
break;
}
}
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
events.Update(diff);
events.Update(diff);
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_ANNOUNCER_SAY_ZOMBIE:
if( pInstance && !summons.empty() )
if( Creature* ghoul = pInstance->instance->GetCreature(*summons.begin()) )
ghoul->MonsterYell("[Zombie] .... . Brains ....", LANG_UNIVERSAL, 0);
events.PopEvent();
break;
case EVENT_SPELL_PLAGUE_STRIKE:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_PLAGUE_STRIKE, false);
events.RepeatEvent(urand(10000,12000));
break;
case EVENT_SPELL_ICY_TOUCH:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_ICY_TOUCH, false);
events.RepeatEvent(urand(5000,6000));
break;
case EVENT_SPELL_DEATH_RESPITE:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true) )
me->CastSpell(target, SPELL_DEATH_RESPITE, false);
events.RepeatEvent(urand(13000,15000));
break;
case EVENT_SPELL_OBLITERATE:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_OBLITERATE, false);
events.RepeatEvent(urand(15000,17000));
break;
case EVENT_SPELL_DESECRATION:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true) )
me->CastSpell(target, SPELL_DESECRATION, false);
events.RepeatEvent(urand(14000,17000));
break;
case EVENT_SPELL_DEATH_BITE:
me->CastSpell((Unit*)NULL, SPELL_DEATH_BITE, false);
events.RepeatEvent(urand(2000,4000));
break;
case EVENT_SPELL_MARKED_DEATH:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.000000f, true) )
me->CastSpell(target, SPELL_MARKED_DEATH, false);
events.RepeatEvent(9000);
break;
}
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_ANNOUNCER_SAY_ZOMBIE:
if( pInstance && !summons.empty() )
if( Creature* ghoul = pInstance->instance->GetCreature(*summons.begin()) )
ghoul->MonsterYell("[Zombie] .... . Brains ....", LANG_UNIVERSAL, 0);
events.PopEvent();
break;
case EVENT_SPELL_PLAGUE_STRIKE:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_PLAGUE_STRIKE, false);
events.RepeatEvent(urand(10000,12000));
break;
case EVENT_SPELL_ICY_TOUCH:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_ICY_TOUCH, false);
events.RepeatEvent(urand(5000,6000));
break;
case EVENT_SPELL_DEATH_RESPITE:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true) )
me->CastSpell(target, SPELL_DEATH_RESPITE, false);
events.RepeatEvent(urand(13000,15000));
break;
case EVENT_SPELL_OBLITERATE:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_OBLITERATE, false);
events.RepeatEvent(urand(15000,17000));
break;
case EVENT_SPELL_DESECRATION:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true) )
me->CastSpell(target, SPELL_DESECRATION, false);
events.RepeatEvent(urand(14000,17000));
break;
case EVENT_SPELL_DEATH_BITE:
me->CastSpell((Unit*)NULL, SPELL_DEATH_BITE, false);
events.RepeatEvent(urand(2000,4000));
break;
case EVENT_SPELL_MARKED_DEATH:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.000000f, true) )
me->CastSpell(target, SPELL_MARKED_DEATH, false);
events.RepeatEvent(9000);
break;
}
DoMeleeAttackIfReady();
}
DoMeleeAttackIfReady();
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
if( Unit* target = summon->SelectNearestTarget(200.0f) )
{
summon->AI()->AttackStart(target);
DoZoneInCombat(summon);
}
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
if( Unit* target = summon->SelectNearestTarget(200.0f) )
{
summon->AI()->AttackStart(target);
DoZoneInCombat(summon);
}
}
void KilledUnit(Unit* victim)
{
if( victim->GetTypeId() == TYPEID_PLAYER )
{
if( urand(0,1) )
Talk(TEXT_BK_SLAIN_1);
else
Talk(TEXT_BK_SLAIN_2);
}
}
void KilledUnit(Unit* victim)
{
if( victim->GetTypeId() == TYPEID_PLAYER )
{
if( urand(0,1) )
Talk(TEXT_BK_SLAIN_1);
else
Talk(TEXT_BK_SLAIN_2);
}
}
void JustDied(Unit* /*killer*/)
{
me->CastSpell((Unit*)NULL, SPELL_BK_KILL_CREDIT, true);
Talk(TEXT_BK_DEATH);
if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, DONE);
if( me->ToTempSummon() )
me->ToTempSummon()->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN);
}
};
void JustDied(Unit* /*killer*/)
{
me->CastSpell((Unit*)NULL, SPELL_BK_KILL_CREDIT, true);
Talk(TEXT_BK_DEATH);
if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, DONE);
if( me->ToTempSummon() )
me->ToTempSummon()->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN);
}
};
CreatureAI* GetAI(Creature *pCreature) const
{
return new boss_black_knightAI (pCreature);
}
CreatureAI* GetAI(Creature *pCreature) const
{
return new boss_black_knightAI (pCreature);
}
};
class npc_black_knight_skeletal_gryphon : public CreatureScript
{
public:
npc_black_knight_skeletal_gryphon() : CreatureScript("npc_black_knight_skeletal_gryphon") {}
npc_black_knight_skeletal_gryphon() : CreatureScript("npc_black_knight_skeletal_gryphon") {}
struct npc_black_knight_skeletal_gryphonAI : public npc_escortAI
{
npc_black_knight_skeletal_gryphonAI(Creature* pCreature) : npc_escortAI(pCreature) {}
struct npc_black_knight_skeletal_gryphonAI : public npc_escortAI
{
npc_black_knight_skeletal_gryphonAI(Creature* pCreature) : npc_escortAI(pCreature) {}
void Reset()
{
Start(false,true,0,NULL);
SetDespawnAtEnd(true);
}
void Reset()
{
Start(false,true,0,NULL);
SetDespawnAtEnd(true);
}
void DoAction(int32 param)
{
if( param == 1 )
{
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
SetEscortPaused(false);
}
}
void DoAction(int32 param)
{
if( param == 1 )
{
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
SetEscortPaused(false);
}
}
void WaypointReached(uint32 i)
{
if( i == 12 )
{
SetEscortPaused(true);
me->SetOrientation(3.62f);
me->SetControlled(true, UNIT_STATE_ROOT);
me->DisableRotate(true);
me->SetFacingTo(3.62f);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_MOUNT_SPECIAL);
if( InstanceScript* pInstance = me->GetInstanceScript() )
pInstance->SetData(DATA_SKELETAL_GRYPHON_LANDED, 0);
}
}
void WaypointReached(uint32 i)
{
if( i == 12 )
{
SetEscortPaused(true);
me->SetOrientation(3.62f);
me->SetControlled(true, UNIT_STATE_ROOT);
me->DisableRotate(true);
me->SetFacingTo(3.62f);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_MOUNT_SPECIAL);
if( InstanceScript* pInstance = me->GetInstanceScript() )
pInstance->SetData(DATA_SKELETAL_GRYPHON_LANDED, 0);
}
}
void UpdateAI(uint32 uiDiff)
{
npc_escortAI::UpdateAI(uiDiff);
}
void UpdateAI(uint32 uiDiff)
{
npc_escortAI::UpdateAI(uiDiff);
}
};
};
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_black_knight_skeletal_gryphonAI(pCreature);
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_black_knight_skeletal_gryphonAI(pCreature);
}
};
class npc_black_knight_ghoul : public CreatureScript
{
public:
npc_black_knight_ghoul() : CreatureScript("npc_black_knight_ghoul") { }
npc_black_knight_ghoul() : CreatureScript("npc_black_knight_ghoul") { }
struct npc_black_knight_ghoulAI : public ScriptedAI
{
npc_black_knight_ghoulAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceScript();
}
struct npc_black_knight_ghoulAI : public ScriptedAI
{
npc_black_knight_ghoulAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceScript();
}
InstanceScript* pInstance;
EventMap events;
InstanceScript* pInstance;
EventMap events;
void Reset()
{
events.Reset();
}
void Reset()
{
events.Reset();
}
void EnterCombat(Unit* who)
{
events.Reset();
if (me->GetEntry() == NPC_RISEN_JAEREN || me->GetEntry() == NPC_RISEN_ARELAS)
events.RescheduleEvent(1, 1000); // leap
events.RescheduleEvent(2, urand(3000,4000)); // claw
}
void EnterCombat(Unit* who)
{
events.Reset();
if (me->GetEntry() == NPC_RISEN_JAEREN || me->GetEntry() == NPC_RISEN_ARELAS)
events.RescheduleEvent(1, 1000); // leap
events.RescheduleEvent(2, urand(3000,4000)); // claw
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
if (spell->Id == SPELL_BK_GHOUL_EXPLODE)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
me->CastSpell(me, SPELL_EXPLODE, false);
}
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
if (spell->Id == SPELL_BK_GHOUL_EXPLODE)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
me->CastSpell(me, SPELL_EXPLODE, false);
}
}
void SpellHitTarget(Unit* target, const SpellInfo* spell)
{
switch(spell->Id)
{
case SPELL_CLAW_N:
case SPELL_CLAW_H:
DoResetThreat();
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f))
{
me->AddThreat(target, 100.0f);
AttackStart(target);
}
break;
case SPELL_EXPLODE_H:
if (target && target->GetTypeId() == TYPEID_PLAYER)
if (pInstance)
pInstance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
break;
}
}
void SpellHitTarget(Unit* target, const SpellInfo* spell)
{
switch(spell->Id)
{
case SPELL_CLAW_N:
case SPELL_CLAW_H:
DoResetThreat();
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f))
{
me->AddThreat(target, 100.0f);
AttackStart(target);
}
break;
case SPELL_EXPLODE_H:
if (target && target->GetTypeId() == TYPEID_PLAYER)
if (pInstance)
pInstance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
break;
}
}
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
events.Update(diff);
events.Update(diff);
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
break;
case 1: // leap
if (Unit* target = me->GetVictim())
if (me->GetDistance(target) > 5.0f && me->GetDistance(target) < 30.0f)
{
me->CastSpell(target, SPELL_LEAP, false);
events.PopEvent();
break;
}
events.RepeatEvent(1000);
break;
case 2: // claw
if (Unit* target = me->GetVictim())
me->CastSpell(target, SPELL_CLAW_N, false);
events.RepeatEvent(urand(6000,8000));
break;
}
switch( events.GetEvent() )
{
case 0:
break;
case 1: // leap
if (Unit* target = me->GetVictim())
if (me->GetDistance(target) > 5.0f && me->GetDistance(target) < 30.0f)
{
me->CastSpell(target, SPELL_LEAP, false);
events.PopEvent();
break;
}
events.RepeatEvent(1000);
break;
case 2: // claw
if (Unit* target = me->GetVictim())
me->CastSpell(target, SPELL_CLAW_N, false);
events.RepeatEvent(urand(6000,8000));
break;
}
DoMeleeAttackIfReady();
}
};
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI(Creature *pCreature) const
{
return new npc_black_knight_ghoulAI (pCreature);
}
CreatureAI* GetAI(Creature *pCreature) const
{
return new npc_black_knight_ghoulAI (pCreature);
}
};
void AddSC_boss_black_knight()
{
new boss_black_knight();
new npc_black_knight_skeletal_gryphon();
new npc_black_knight_ghoul();
new boss_black_knight();
new npc_black_knight_skeletal_gryphon();
new npc_black_knight_ghoul();
}

View File

@@ -10,109 +10,109 @@ REWRITTEN FROM SCRATCH BY PUSSYWIZARD, IT OWNS NOW!
#define GOSSIP_START_EVENT1a "I am ready."
#define GOSSIP_START_EVENT1b "I am ready. However I'd like to skip the pageantry."
#define GOSSIP_START_EVENT2 "I'm ready for the next challenge."
#define GOSSIP_START_EVENT2 "I'm ready for the next challenge."
#define GOSSIP_START_EVENT3 "I'm ready."
class npc_announcer_toc5 : public CreatureScript
{
public:
npc_announcer_toc5() : CreatureScript("npc_announcer_toc5") {}
npc_announcer_toc5() : CreatureScript("npc_announcer_toc5") {}
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
uint32 gossipTextId = 0;
switch( pInstance->GetData(DATA_INSTANCE_PROGRESS) )
{
case INSTANCE_PROGRESS_INITIAL:
gossipTextId = 14688;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1338);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1341);
break;
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
gossipTextId = 14737;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1339);
break;
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
gossipTextId = 14738;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1340);
break;
default:
return true;
}
uint32 gossipTextId = 0;
switch( pInstance->GetData(DATA_INSTANCE_PROGRESS) )
{
case INSTANCE_PROGRESS_INITIAL:
gossipTextId = 14688;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1338);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1341);
break;
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
gossipTextId = 14737;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1339);
break;
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
gossipTextId = 14738;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1340);
break;
default:
return true;
}
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
return true;
}
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
if( uiAction == GOSSIP_ACTION_INFO_DEF+1338 || uiAction == GOSSIP_ACTION_INFO_DEF+1341 || uiAction == GOSSIP_ACTION_INFO_DEF+1339 || uiAction == GOSSIP_ACTION_INFO_DEF+1340 )
{
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF+1341 ? 1 : 0));
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
if( uiAction == GOSSIP_ACTION_INFO_DEF+1338 || uiAction == GOSSIP_ACTION_INFO_DEF+1341 || uiAction == GOSSIP_ACTION_INFO_DEF+1339 || uiAction == GOSSIP_ACTION_INFO_DEF+1340 )
{
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF+1341 ? 1 : 0));
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_announcer_toc5AI(pCreature);
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_announcer_toc5AI(pCreature);
}
struct npc_announcer_toc5AI : public CreatureAI
{
npc_announcer_toc5AI(Creature *pCreature) : CreatureAI(pCreature) {}
struct npc_announcer_toc5AI : public CreatureAI
{
npc_announcer_toc5AI(Creature *pCreature) : CreatureAI(pCreature) {}
void Reset()
{
InstanceScript* pInstance = me->GetInstanceScript();
if( !pInstance )
return;
if( pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_ALLIANCE )
me->UpdateEntry(NPC_ARELAS);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // removed during black knight scene
}
void Reset()
{
InstanceScript* pInstance = me->GetInstanceScript();
if( !pInstance )
return;
if( pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_ALLIANCE )
me->UpdateEntry(NPC_ARELAS);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // removed during black knight scene
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
{
if (damage >= me->GetHealth()) // for bk scene so strangulate doesn't kill him
damage = me->GetHealth()-1;
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
{
if (damage >= me->GetHealth()) // for bk scene so strangulate doesn't kill him
damage = me->GetHealth()-1;
}
void MovementInform(uint32 type, uint32 id)
{
if (type != EFFECT_MOTION_TYPE)
return;
InstanceScript* pInstance = me->GetInstanceScript();
if( !pInstance )
return;
if (pInstance->GetData(DATA_INSTANCE_PROGRESS) < INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED)
return;
void MovementInform(uint32 type, uint32 id)
{
if (type != EFFECT_MOTION_TYPE)
return;
InstanceScript* pInstance = me->GetInstanceScript();
if( !pInstance )
return;
if (pInstance->GetData(DATA_INSTANCE_PROGRESS) < INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED)
return;
Unit::Kill(me, me); // for bk scene, die after knockback
}
Unit::Kill(me, me); // for bk scene, die after knockback
}
void UpdateAI(uint32 diff) {}
};
void UpdateAI(uint32 diff) {}
};
};
void AddSC_trial_of_the_champion()
{
new npc_announcer_toc5();
new npc_announcer_toc5();
}

View File

@@ -7,216 +7,216 @@ REWRITTEN FROM SCRATCH BY PUSSYWIZARD, IT OWNS NOW!
enum eData
{
BOSS_GRAND_CHAMPIONS = 0,
BOSS_ARGENT_CHALLENGE = 1,
BOSS_BLACK_KNIGHT = 2,
MAX_ENCOUNTER = 3,
DATA_INSTANCE_PROGRESS = 4,
BOSS_GRAND_CHAMPIONS = 0,
BOSS_ARGENT_CHALLENGE = 1,
BOSS_BLACK_KNIGHT = 2,
MAX_ENCOUNTER = 3,
DATA_INSTANCE_PROGRESS = 4,
DATA_ANNOUNCER = 5,
DATA_ANNOUNCER_GOSSIP_SELECT,
DATA_GRAND_CHAMPION_REACHED_DEST,
DATA_MOUNT_DIED,
DATA_REACHED_NEW_MOUNT,
DATA_GRAND_CHAMPION_PICKED_NEW_VEHICLE,
DATA_GRAND_CHAMPION_DIED,
DATA_ARGENT_SOLDIER_DEFEATED,
DATA_SKELETAL_GRYPHON_LANDED,
DATA_TEAMID_IN_INSTANCE,
DATA_PALETRESS,
DATA_MEMORY_ENTRY,
DATA_ACHIEV_IVE_HAD_WORSE,
DATA_ANNOUNCER = 5,
DATA_ANNOUNCER_GOSSIP_SELECT,
DATA_GRAND_CHAMPION_REACHED_DEST,
DATA_MOUNT_DIED,
DATA_REACHED_NEW_MOUNT,
DATA_GRAND_CHAMPION_PICKED_NEW_VEHICLE,
DATA_GRAND_CHAMPION_DIED,
DATA_ARGENT_SOLDIER_DEFEATED,
DATA_SKELETAL_GRYPHON_LANDED,
DATA_TEAMID_IN_INSTANCE,
DATA_PALETRESS,
DATA_MEMORY_ENTRY,
DATA_ACHIEV_IVE_HAD_WORSE,
};
enum eProgress
{
INSTANCE_PROGRESS_INITIAL = 0,
INSTANCE_PROGRESS_GRAND_CHAMPIONS_REACHED_DEST,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_1,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_2,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_3,
INSTANCE_PROGRESS_CHAMPIONS_UNMOUNTED,
INSTANCE_PROGRESS_CHAMPIONS_DEAD,
INSTANCE_PROGRESS_ARGENT_SOLDIERS_DIED,
INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED,
INSTANCE_PROGRESS_FINISHED,
INSTANCE_PROGRESS_INITIAL = 0,
INSTANCE_PROGRESS_GRAND_CHAMPIONS_REACHED_DEST,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_1,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_2,
INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_3,
INSTANCE_PROGRESS_CHAMPIONS_UNMOUNTED,
INSTANCE_PROGRESS_CHAMPIONS_DEAD,
INSTANCE_PROGRESS_ARGENT_SOLDIERS_DIED,
INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED,
INSTANCE_PROGRESS_FINISHED,
};
enum eEvents
{
EVENT_NULL = 0,
EVENT_CHECK_PLAYERS,
EVENT_CLOSE_GATE,
EVENT_SUMMON_GRAND_CHAMPION_1,
EVENT_SUMMON_GRAND_CHAMPION_2,
EVENT_SUMMON_GRAND_CHAMPION_3,
EVENT_YELL_WELCOME_2,
EVENT_GRAND_GROUP_1_MOVE_MIDDLE,
EVENT_GRAND_GROUP_1_ATTACK,
EVENT_GRAND_GROUP_2_MOVE_MIDDLE,
EVENT_GRAND_GROUP_2_ATTACK,
EVENT_GRAND_GROUP_3_MOVE_MIDDLE,
EVENT_GRAND_GROUP_3_ATTACK,
EVENT_GRAND_CHAMPIONS_MOVE_MIDDLE,
EVENT_GRAND_CHAMPIONS_MOUNTS_ATTACK,
EVENT_GRAND_CHAMPIONS_MOVE_SIDE,
EVENT_GRAND_CHAMPIONS_ATTACK,
EVENT_GRATZ_SLAIN_CHAMPIONS,
EVENT_RESTORE_ANNOUNCER_GOSSIP,
EVENT_START_ARGENT_CHALLENGE_INTRO,
EVENT_SUMMON_ARGENT_CHALLENGE,
EVENT_ARGENT_CHALLENGE_SAY_1,
EVENT_ARGENT_CHALLENGE_SAY_2,
EVENT_ARGENT_SOLDIER_GROUP_ATTACK,
EVENT_ARGENT_CHALLENGE_MOVE_FORWARD,
EVENT_ARGENT_CHALLENGE_ATTACK,
EVENT_ARGENT_CHALLENGE_RUN_MIDDLE,
EVENT_ARGENT_CHALLENGE_LEAVE_CHEST,
EVENT_ARGENT_CHALLENGE_DISAPPEAR,
EVENT_SUMMON_BLACK_KNIGHT,
EVENT_START_BLACK_KNIGHT_SCENE,
EVENT_BLACK_KNIGHT_CAST_ANNOUNCER,
EVENT_BLACK_KNIGHT_KILL_ANNOUNCER,
EVENT_BLACK_KNIGHT_MOVE_FORWARD,
EVENT_BLACK_KNIGHT_SAY_TASK,
EVENT_BLACK_KNIGHT_ATTACK,
EVENT_NULL = 0,
EVENT_CHECK_PLAYERS,
EVENT_CLOSE_GATE,
EVENT_SUMMON_GRAND_CHAMPION_1,
EVENT_SUMMON_GRAND_CHAMPION_2,
EVENT_SUMMON_GRAND_CHAMPION_3,
EVENT_YELL_WELCOME_2,
EVENT_GRAND_GROUP_1_MOVE_MIDDLE,
EVENT_GRAND_GROUP_1_ATTACK,
EVENT_GRAND_GROUP_2_MOVE_MIDDLE,
EVENT_GRAND_GROUP_2_ATTACK,
EVENT_GRAND_GROUP_3_MOVE_MIDDLE,
EVENT_GRAND_GROUP_3_ATTACK,
EVENT_GRAND_CHAMPIONS_MOVE_MIDDLE,
EVENT_GRAND_CHAMPIONS_MOUNTS_ATTACK,
EVENT_GRAND_CHAMPIONS_MOVE_SIDE,
EVENT_GRAND_CHAMPIONS_ATTACK,
EVENT_GRATZ_SLAIN_CHAMPIONS,
EVENT_RESTORE_ANNOUNCER_GOSSIP,
EVENT_START_ARGENT_CHALLENGE_INTRO,
EVENT_SUMMON_ARGENT_CHALLENGE,
EVENT_ARGENT_CHALLENGE_SAY_1,
EVENT_ARGENT_CHALLENGE_SAY_2,
EVENT_ARGENT_SOLDIER_GROUP_ATTACK,
EVENT_ARGENT_CHALLENGE_MOVE_FORWARD,
EVENT_ARGENT_CHALLENGE_ATTACK,
EVENT_ARGENT_CHALLENGE_RUN_MIDDLE,
EVENT_ARGENT_CHALLENGE_LEAVE_CHEST,
EVENT_ARGENT_CHALLENGE_DISAPPEAR,
EVENT_SUMMON_BLACK_KNIGHT,
EVENT_START_BLACK_KNIGHT_SCENE,
EVENT_BLACK_KNIGHT_CAST_ANNOUNCER,
EVENT_BLACK_KNIGHT_KILL_ANNOUNCER,
EVENT_BLACK_KNIGHT_MOVE_FORWARD,
EVENT_BLACK_KNIGHT_SAY_TASK,
EVENT_BLACK_KNIGHT_ATTACK,
};
enum eNpcs
{
// Horde Champions
NPC_MOKRA = 35572,
NPC_ERESSEA = 35569,
NPC_RUNOK = 35571,
NPC_ZULTORE = 35570,
NPC_VISCERI = 35617,
// Horde Champions
NPC_MOKRA = 35572,
NPC_ERESSEA = 35569,
NPC_RUNOK = 35571,
NPC_ZULTORE = 35570,
NPC_VISCERI = 35617,
// Alliance Champions
NPC_JACOB = 34705,
NPC_AMBROSE = 34702,
NPC_COLOSOS = 34701,
NPC_JAELYNE = 34657,
NPC_LANA = 34703,
// Alliance Champions
NPC_JACOB = 34705,
NPC_AMBROSE = 34702,
NPC_COLOSOS = 34701,
NPC_JAELYNE = 34657,
NPC_LANA = 34703,
// Grand Champion Minions
NPC_IRONFORGE_MINION = 35329,
NPC_STORMWIND_MINION = 35328,
NPC_GNOMEREGAN_MINION = 35331,
NPC_EXODAR_MINION = 35330,
NPC_DARNASSUS_MINION = 35332,
NPC_ORGRIMMAR_MINION = 35314,
NPC_SILVERMOON_MINION = 35326,
NPC_THUNDER_BLUFF_MINION = 35325,
NPC_SENJIN_MINION = 35323,
NPC_UNDERCITY_MINION = 35327,
// Grand Champion Minions
NPC_IRONFORGE_MINION = 35329,
NPC_STORMWIND_MINION = 35328,
NPC_GNOMEREGAN_MINION = 35331,
NPC_EXODAR_MINION = 35330,
NPC_DARNASSUS_MINION = 35332,
NPC_ORGRIMMAR_MINION = 35314,
NPC_SILVERMOON_MINION = 35326,
NPC_THUNDER_BLUFF_MINION = 35325,
NPC_SENJIN_MINION = 35323,
NPC_UNDERCITY_MINION = 35327,
NPC_EADRIC = 35119,
NPC_EADRIC_H = 35518,
NPC_PALETRESS = 34928,
NPC_PALETRESS_H = 35517,
NPC_EADRIC = 35119,
NPC_EADRIC_H = 35518,
NPC_PALETRESS = 34928,
NPC_PALETRESS_H = 35517,
NPC_ARGENT_LIGHTWIELDER = 35309,
NPC_ARGENT_MONK = 35305,
NPC_PRIESTESS = 35307,
NPC_ARGENT_LIGHTWIELDER = 35309,
NPC_ARGENT_MONK = 35305,
NPC_PRIESTESS = 35307,
NPC_BLACK_KNIGHT = 35451,
NPC_BLACK_KNIGHT = 35451,
NPC_JAEREN = 35004,
NPC_ARELAS = 35005,
NPC_RISEN_JAEREN = 35545,
NPC_RISEN_ARELAS = 35564,
NPC_TIRION = 33628,
NPC_JAEREN = 35004,
NPC_ARELAS = 35005,
NPC_RISEN_JAEREN = 35545,
NPC_RISEN_ARELAS = 35564,
NPC_TIRION = 33628,
};
enum eGameObjects
{
GO_MAIN_GATE = 195647,
GO_SOUTH_PORTCULLIS = 195649,
GO_EAST_PORTCULLIS = 195648,
GO_MAIN_GATE = 195647,
GO_SOUTH_PORTCULLIS = 195649,
GO_EAST_PORTCULLIS = 195648,
GO_CHAMPIONS_LOOT = 195709,
GO_CHAMPIONS_LOOT_H = 195710,
GO_CHAMPIONS_LOOT = 195709,
GO_CHAMPIONS_LOOT_H = 195710,
GO_EADRIC_LOOT = 195374,
GO_EADRIC_LOOT_H = 195375,
GO_EADRIC_LOOT = 195374,
GO_EADRIC_LOOT_H = 195375,
GO_PALETRESS_LOOT = 195323,
GO_PALETRESS_LOOT_H = 195324,
GO_PALETRESS_LOOT = 195323,
GO_PALETRESS_LOOT_H = 195324,
};
enum eVehicles
{
VEHICLE_ARGENT_WARHORSE = 35644,
VEHICLE_ARGENT_BATTLEWORG = 36558,
VEHICLE_ARGENT_WARHORSE = 35644,
VEHICLE_ARGENT_BATTLEWORG = 36558,
VEHICLE_BLACK_KNIGHT = 35491,
VEHICLE_BLACK_KNIGHT = 35491,
};
enum eTexts
{
TEXT_LANA_STOUTHAMMER = 1,
TEXT_CHEER_LANA_STOUTHAMMER = 2,
TEXT_COLOSOS = 3,
TEXT_CHEER_COLOSOS = 4,
TEXT_EVENSONG = 5,
TEXT_CHEER_EVENSONG = 6,
TEXT_MARSHAL_JACOB_ALERIUS = 7,
TEXT_CHEER_MARSHAL_JACOB_ALERIUS = 8,
TEXT_AMBROSE_BOLTSPARK = 9,
TEXT_CHEER_AMBROSE_BOLTSPARK = 10,
TEXT_LANA_STOUTHAMMER = 1,
TEXT_CHEER_LANA_STOUTHAMMER = 2,
TEXT_COLOSOS = 3,
TEXT_CHEER_COLOSOS = 4,
TEXT_EVENSONG = 5,
TEXT_CHEER_EVENSONG = 6,
TEXT_MARSHAL_JACOB_ALERIUS = 7,
TEXT_CHEER_MARSHAL_JACOB_ALERIUS = 8,
TEXT_AMBROSE_BOLTSPARK = 9,
TEXT_CHEER_AMBROSE_BOLTSPARK = 10,
TEXT_DEATHSTALKER_VESCERI = 11,
TEXT_CHEER_DEATHSTALKER_VESCERI = 12,
TEXT_RUNOK_WILDMANE = 13,
TEXT_CHEER_RUNOK_WILDMANE = 14,
TEXT_ZUL_TORE = 15,
TEXT_CHEER_ZUL_TORE = 16,
TEXT_MOKRA_SKILLCRUSHER = 17,
TEXT_CHEER_MOKRA_SKILLCRUSHER = 18,
TEXT_ERESSEA_DAWNSINGER = 19,
TEXT_CHEER_ERESSEA_DAWNSINGER = 20,
TEXT_DEATHSTALKER_VESCERI = 11,
TEXT_CHEER_DEATHSTALKER_VESCERI = 12,
TEXT_RUNOK_WILDMANE = 13,
TEXT_CHEER_RUNOK_WILDMANE = 14,
TEXT_ZUL_TORE = 15,
TEXT_CHEER_ZUL_TORE = 16,
TEXT_MOKRA_SKILLCRUSHER = 17,
TEXT_CHEER_MOKRA_SKILLCRUSHER = 18,
TEXT_ERESSEA_DAWNSINGER = 19,
TEXT_CHEER_ERESSEA_DAWNSINGER = 20,
TEXT_WELCOME = 21,
TEXT_WELCOME_2 = 22,
TEXT_BEGIN = 23,
TEXT_GRATZ_SLAIN_CHAMPIONS = 24,
TEXT_INTRODUCE_EADRIC = 25,
TEXT_INTRODUCE_PALETRESS = 26,
TEXT_CHEER_EADRIC_1 = 27,
TEXT_CHEER_EADRIC_2 = 28,
TEXT_EADRIC_SAY_1 = 39,
TEXT_CHEER_PALETRESS_1 = 29,
TEXT_CHEER_PALETRESS_2 = 30,
TEXT_PALETRESS_SAY_1 = 37,
TEXT_PALETRESS_SAY_2 = 38,
TEXT_YOU_MAY_BEGIN = 41,
TEXT_WELCOME = 21,
TEXT_WELCOME_2 = 22,
TEXT_BEGIN = 23,
TEXT_GRATZ_SLAIN_CHAMPIONS = 24,
TEXT_INTRODUCE_EADRIC = 25,
TEXT_INTRODUCE_PALETRESS = 26,
TEXT_CHEER_EADRIC_1 = 27,
TEXT_CHEER_EADRIC_2 = 28,
TEXT_EADRIC_SAY_1 = 39,
TEXT_CHEER_PALETRESS_1 = 29,
TEXT_CHEER_PALETRESS_2 = 30,
TEXT_PALETRESS_SAY_1 = 37,
TEXT_PALETRESS_SAY_2 = 38,
TEXT_YOU_MAY_BEGIN = 41,
TEXT_BK_INTRO = 31,
TEXT_BK_RAFTERS = 32,
TEXT_BK_SPOILED = 33,
TEXT_BK_MEANING = 34,
TEXT_BK_LICH = 35,
TEXT_BK_TASK = 36,
TEXT_BK_INTRO = 31,
TEXT_BK_RAFTERS = 32,
TEXT_BK_SPOILED = 33,
TEXT_BK_MEANING = 34,
TEXT_BK_LICH = 35,
TEXT_BK_TASK = 36,
TEXT_EADRIC_AGGRO = 42,
TEXT_EADRIC_HAMMER = 43,
TEXT_EADRIC_SLAIN_1 = 44,
TEXT_EADRIC_SLAIN_2 = 45,
TEXT_EADRIC_DEATH = 46,
TEXT_EADRIC_AGGRO = 42,
TEXT_EADRIC_HAMMER = 43,
TEXT_EADRIC_SLAIN_1 = 44,
TEXT_EADRIC_SLAIN_2 = 45,
TEXT_EADRIC_DEATH = 46,
TEXT_PALETRESS_AGGRO = 47,
TEXT_PALETRESS_MEMORY_SUMMON = 48,
TEXT_PALETRESS_MEMORY_DEFEATED = 51,
TEXT_PALETRESS_SLAIN_1 = 49,
TEXT_PALETRESS_SLAIN_2 = 50,
TEXT_PALETRESS_DEATH = 52,
TEXT_PALETRESS_AGGRO = 47,
TEXT_PALETRESS_MEMORY_SUMMON = 48,
TEXT_PALETRESS_MEMORY_DEFEATED = 51,
TEXT_PALETRESS_SLAIN_1 = 49,
TEXT_PALETRESS_SLAIN_2 = 50,
TEXT_PALETRESS_DEATH = 52,
TEXT_BK_AGGRO = 53,
TEXT_BK_SLAIN_1 = 57,
TEXT_BK_SLAIN_2 = 58,
TEXT_BK_SKELETON_RES = 54,
TEXT_BK_GHOST_RES = 55,
TEXT_BK_DEATH = 56,
TEXT_BK_AGGRO = 53,
TEXT_BK_SLAIN_1 = 57,
TEXT_BK_SLAIN_2 = 58,
TEXT_BK_SKELETON_RES = 54,
TEXT_BK_GHOST_RES = 55,
TEXT_BK_DEATH = 56,
};
#endif

View File

@@ -26,435 +26,435 @@ enum JaraxxusTexts
enum JaraxxusNPCs
{
NPC_LEGION_FLAME = 34784,
NPC_INFERNAL_VOLCANO = 34813,
NPC_FEL_INFERNAL = 34815,
NPC_NETHER_PORTAL = 34825,
NPC_MISTRESS_OF_PAIN = 34826,
NPC_LEGION_FLAME = 34784,
NPC_INFERNAL_VOLCANO = 34813,
NPC_FEL_INFERNAL = 34815,
NPC_NETHER_PORTAL = 34825,
NPC_MISTRESS_OF_PAIN = 34826,
};
enum JaraxxusSpells
{
SPELL_NETHER_POWER = 66228,
SPELL_INCINERATE_FLESH = 66237,
SPELL_FEL_FIREBALL = 66532,
SPELL_FEL_LIGHTNING = 66528,
SPELL_TOUCH_OF_JARAXXUS = 66209,
SPELL_LEGION_FLAME = 66197,
SPELL_LEGION_FLAME_NPC_AURA = 66201,
SPELL_SUMMON_VOLCANO = 66258,
SPELL_SUMMON_NETHER_PORTAL = 66269,
SPELL_NETHER_POWER = 66228,
SPELL_INCINERATE_FLESH = 66237,
SPELL_FEL_FIREBALL = 66532,
SPELL_FEL_LIGHTNING = 66528,
SPELL_TOUCH_OF_JARAXXUS = 66209,
SPELL_LEGION_FLAME = 66197,
SPELL_LEGION_FLAME_NPC_AURA = 66201,
SPELL_SUMMON_VOLCANO = 66258,
SPELL_SUMMON_NETHER_PORTAL = 66269,
SPELL_FEL_STEAK = 66494,
SPELL_FEL_STEAK_MORPH = 66493,
SPELL_FEL_STEAK = 66494,
SPELL_FEL_STEAK_MORPH = 66493,
SPELL_SHIVAN_SLASH = 66378,
SPELL_SPINNING_PAIN_SPIKE = 66283,
SPELL_MISTRESS_KISS = 66336,
SPELL_MISTRESS_KISS_PERIODIC_DUMMY = 66334, // also 67905, 67906, 67907
SPELL_MISTRESS_KISS_INTERRUPT = 66359,
SPELL_SHIVAN_SLASH = 66378,
SPELL_SPINNING_PAIN_SPIKE = 66283,
SPELL_MISTRESS_KISS = 66336,
SPELL_MISTRESS_KISS_PERIODIC_DUMMY = 66334, // also 67905, 67906, 67907
SPELL_MISTRESS_KISS_INTERRUPT = 66359,
SPELL_CHAINS = 67924,
SPELL_BERSERK = 64238,
SPELL_CHAINS = 67924,
SPELL_BERSERK = 64238,
};
enum JaraxxusEvents
{
EVENT_SPELL_FEL_FIREBALL = 1,
EVENT_SPELL_FEL_LIGHTNING,
EVENT_SPELL_INCINERATE_FLESH,
EVENT_SPELL_NETHER_POWER,
EVENT_SPELL_LEGION_FLAME,
EVENT_SPELL_TOUCH_OF_JARAXXUS,
EVENT_SUMMON_VOLCANO,
EVENT_SUMMON_NETHER_PORTAL,
EVENT_SPELL_FEL_FIREBALL = 1,
EVENT_SPELL_FEL_LIGHTNING,
EVENT_SPELL_INCINERATE_FLESH,
EVENT_SPELL_NETHER_POWER,
EVENT_SPELL_LEGION_FLAME,
EVENT_SPELL_TOUCH_OF_JARAXXUS,
EVENT_SUMMON_VOLCANO,
EVENT_SUMMON_NETHER_PORTAL,
EVENT_SPELL_FEL_STEAK,
EVENT_SPELL_FEL_STEAK,
EVENT_SPELL_SHIVAN_SLASH,
EVENT_SPELL_SPINNING_PAIN_SPIKE,
EVENT_SPELL_MISTRESS_KISS,
EVENT_SPELL_SHIVAN_SLASH,
EVENT_SPELL_SPINNING_PAIN_SPIKE,
EVENT_SPELL_MISTRESS_KISS,
};
class boss_jaraxxus : public CreatureScript
{
public:
boss_jaraxxus() : CreatureScript("boss_jaraxxus") { }
boss_jaraxxus() : CreatureScript("boss_jaraxxus") { }
CreatureAI* GetAI(Creature* pCreature) const
{
return new boss_jaraxxusAI(pCreature);
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new boss_jaraxxusAI(pCreature);
}
struct boss_jaraxxusAI : public ScriptedAI
{
boss_jaraxxusAI(Creature* pCreature) : ScriptedAI(pCreature), summons(pCreature)
{
pInstance = pCreature->GetInstanceScript();
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
me->SetReactState(REACT_PASSIVE);
}
struct boss_jaraxxusAI : public ScriptedAI
{
boss_jaraxxusAI(Creature* pCreature) : ScriptedAI(pCreature), summons(pCreature)
{
pInstance = pCreature->GetInstanceScript();
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
me->SetReactState(REACT_PASSIVE);
}
InstanceScript* pInstance;
EventMap events;
SummonList summons;
InstanceScript* pInstance;
EventMap events;
SummonList summons;
void Reset()
{
events.Reset();
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, NOT_STARTED);
void Reset()
{
events.Reset();
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, NOT_STARTED);
// checked for safety
while( Creature* c = me->FindNearestCreature(NPC_INFERNAL_VOLCANO, 500.0f, true) )
c->DespawnOrUnsummon();
while( Creature* c = me->FindNearestCreature(NPC_NETHER_PORTAL, 500.0f, true) )
c->DespawnOrUnsummon();
}
// checked for safety
while( Creature* c = me->FindNearestCreature(NPC_INFERNAL_VOLCANO, 500.0f, true) )
c->DespawnOrUnsummon();
while( Creature* c = me->FindNearestCreature(NPC_NETHER_PORTAL, 500.0f, true) )
c->DespawnOrUnsummon();
}
void EnterCombat(Unit* /*who*/)
{
me->setActive(true);
events.Reset();
events.RescheduleEvent(EVENT_SPELL_FEL_FIREBALL, 5000);
events.RescheduleEvent(EVENT_SPELL_FEL_LIGHTNING, urand(10000,15000));
events.RescheduleEvent(EVENT_SPELL_INCINERATE_FLESH, urand(24000,26000));
events.RescheduleEvent(EVENT_SPELL_NETHER_POWER, urand(25000,45000));
events.RescheduleEvent(EVENT_SPELL_LEGION_FLAME, 30000);
//if( GetDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC )
// events.RescheduleEvent(EVENT_SPELL_TOUCH_OF_JARAXXUS, urand(10000,15000));
events.RescheduleEvent(EVENT_SUMMON_NETHER_PORTAL, 20000); // it schedules EVENT_SUMMON_VOLCANO
void EnterCombat(Unit* /*who*/)
{
me->setActive(true);
events.Reset();
events.RescheduleEvent(EVENT_SPELL_FEL_FIREBALL, 5000);
events.RescheduleEvent(EVENT_SPELL_FEL_LIGHTNING, urand(10000,15000));
events.RescheduleEvent(EVENT_SPELL_INCINERATE_FLESH, urand(24000,26000));
events.RescheduleEvent(EVENT_SPELL_NETHER_POWER, urand(25000,45000));
events.RescheduleEvent(EVENT_SPELL_LEGION_FLAME, 30000);
//if( GetDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC )
// events.RescheduleEvent(EVENT_SPELL_TOUCH_OF_JARAXXUS, urand(10000,15000));
events.RescheduleEvent(EVENT_SUMMON_NETHER_PORTAL, 20000); // it schedules EVENT_SUMMON_VOLCANO
me->RemoveAura(SPELL_CHAINS);
Talk(SAY_AGGRO);
DoZoneInCombat();
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, IN_PROGRESS);
}
me->RemoveAura(SPELL_CHAINS);
Talk(SAY_AGGRO);
DoZoneInCombat();
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, IN_PROGRESS);
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
switch( spell->Id )
{
case 66228:
case 67106:
case 67107:
case 67108:
if( Aura* a = me->GetAura(spell->Id) )
a->SetStackAmount(spell->StackAmount);
break;
case 30449:
{
if( !caster )
return;
uint32 id = 0;
switch( me->GetMap()->GetDifficulty() )
{
case 0: id = 66228; break;
case 1: id = 67106; break;
case 2: id = 67107; break;
case 3: id = 67108; break;
}
if( Aura* a = me->GetAura(id) )
{
if( a->GetStackAmount() > 1 )
a->ModStackAmount(-1);
else
a->Remove();
caster->CastSpell(caster, SPELL_NETHER_POWER, true);
}
}
break;
default:
break;
}
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
switch( spell->Id )
{
case 66228:
case 67106:
case 67107:
case 67108:
if( Aura* a = me->GetAura(spell->Id) )
a->SetStackAmount(spell->StackAmount);
break;
case 30449:
{
if( !caster )
return;
uint32 id = 0;
switch( me->GetMap()->GetDifficulty() )
{
case 0: id = 66228; break;
case 1: id = 67106; break;
case 2: id = 67107; break;
case 3: id = 67108; break;
}
if( Aura* a = me->GetAura(id) )
{
if( a->GetStackAmount() > 1 )
a->ModStackAmount(-1);
else
a->Remove();
caster->CastSpell(caster, SPELL_NETHER_POWER, true);
}
}
break;
default:
break;
}
}
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
events.Update(diff);
events.Update(diff);
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_FEL_FIREBALL:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_FEL_FIREBALL, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SPELL_FEL_LIGHTNING:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
me->CastSpell(target, SPELL_FEL_LIGHTNING, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SPELL_INCINERATE_FLESH:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
{
Talk(EMOTE_INCINERATE, target);
Talk(SAY_INCINERATE);
me->CastSpell(target, SPELL_INCINERATE_FLESH, false);
}
events.RepeatEvent(urand(20000,25000));
break;
case EVENT_SPELL_NETHER_POWER:
me->CastSpell(me, SPELL_NETHER_POWER, false);
events.DelayEvents(5000);
events.RepeatEvent(urand(25000,45000));
break;
case EVENT_SPELL_LEGION_FLAME:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
{
Talk(EMOTE_LEGION_FLAME, target);
me->CastSpell(target, SPELL_LEGION_FLAME, false);
}
events.RepeatEvent(30000);
break;
case EVENT_SPELL_TOUCH_OF_JARAXXUS:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
me->CastSpell(target, SPELL_TOUCH_OF_JARAXXUS, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SUMMON_NETHER_PORTAL:
Talk(EMOTE_NETHER_PORTAL);
Talk(SAY_MISTRESS_OF_PAIN);
me->CastSpell((Unit*)NULL, SPELL_SUMMON_NETHER_PORTAL, false);
events.PopEvent();
events.RescheduleEvent(EVENT_SUMMON_VOLCANO, 60000);
break;
case EVENT_SUMMON_VOLCANO:
Talk(EMOTE_INFERNAL_ERUPTION);
Talk(SAY_INFERNAL_ERUPTION);
me->CastSpell((Unit*)NULL, SPELL_SUMMON_VOLCANO, false);
events.PopEvent();
events.RescheduleEvent(EVENT_SUMMON_NETHER_PORTAL, 60000);
break;
}
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_FEL_FIREBALL:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_FEL_FIREBALL, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SPELL_FEL_LIGHTNING:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
me->CastSpell(target, SPELL_FEL_LIGHTNING, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SPELL_INCINERATE_FLESH:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
{
Talk(EMOTE_INCINERATE, target);
Talk(SAY_INCINERATE);
me->CastSpell(target, SPELL_INCINERATE_FLESH, false);
}
events.RepeatEvent(urand(20000,25000));
break;
case EVENT_SPELL_NETHER_POWER:
me->CastSpell(me, SPELL_NETHER_POWER, false);
events.DelayEvents(5000);
events.RepeatEvent(urand(25000,45000));
break;
case EVENT_SPELL_LEGION_FLAME:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
{
Talk(EMOTE_LEGION_FLAME, target);
me->CastSpell(target, SPELL_LEGION_FLAME, false);
}
events.RepeatEvent(30000);
break;
case EVENT_SPELL_TOUCH_OF_JARAXXUS:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
me->CastSpell(target, SPELL_TOUCH_OF_JARAXXUS, false);
events.RepeatEvent(urand(10000,15000));
break;
case EVENT_SUMMON_NETHER_PORTAL:
Talk(EMOTE_NETHER_PORTAL);
Talk(SAY_MISTRESS_OF_PAIN);
me->CastSpell((Unit*)NULL, SPELL_SUMMON_NETHER_PORTAL, false);
events.PopEvent();
events.RescheduleEvent(EVENT_SUMMON_VOLCANO, 60000);
break;
case EVENT_SUMMON_VOLCANO:
Talk(EMOTE_INFERNAL_ERUPTION);
Talk(SAY_INFERNAL_ERUPTION);
me->CastSpell((Unit*)NULL, SPELL_SUMMON_VOLCANO, false);
events.PopEvent();
events.RescheduleEvent(EVENT_SUMMON_NETHER_PORTAL, 60000);
break;
}
DoMeleeAttackIfReady();
}
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*pKiller*/)
{
summons.DespawnAll();
Talk(SAY_DEATH);
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, DONE);
}
void JustDied(Unit* /*pKiller*/)
{
summons.DespawnAll();
Talk(SAY_DEATH);
if( pInstance )
pInstance->SetData(TYPE_JARAXXUS, DONE);
}
void JustReachedHome()
{
me->setActive(false);
}
void JustReachedHome()
{
me->setActive(false);
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
}
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
}
void EnterEvadeMode()
{
events.Reset();
summons.DespawnAll();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
if( pInstance )
pInstance->SetData(TYPE_FAILED, 1);
}
void EnterEvadeMode()
{
events.Reset();
summons.DespawnAll();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
if( pInstance )
pInstance->SetData(TYPE_FAILED, 1);
}
void MoveInLineOfSight(Unit* /*who*/) {}
};
void MoveInLineOfSight(Unit* /*who*/) {}
};
};
class npc_fel_infernal : public CreatureScript
{
public:
npc_fel_infernal() : CreatureScript("npc_fel_infernal") { }
npc_fel_infernal() : CreatureScript("npc_fel_infernal") { }
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_fel_infernalAI(pCreature);
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_fel_infernalAI(pCreature);
}
struct npc_fel_infernalAI : public ScriptedAI
{
npc_fel_infernalAI(Creature* pCreature) : ScriptedAI(pCreature) {}
struct npc_fel_infernalAI : public ScriptedAI
{
npc_fel_infernalAI(Creature* pCreature) : ScriptedAI(pCreature) {}
EventMap events;
EventMap events;
void Reset()
{
if( Unit* target = me->SelectNearestTarget(200.0f) )
{
AttackStart(target);
DoZoneInCombat();
}
events.Reset();
events.RescheduleEvent(EVENT_SPELL_FEL_STEAK, urand(7000,20000));
}
void Reset()
{
if( Unit* target = me->SelectNearestTarget(200.0f) )
{
AttackStart(target);
DoZoneInCombat();
}
events.Reset();
events.RescheduleEvent(EVENT_SPELL_FEL_STEAK, urand(7000,20000));
}
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
events.Update(diff);
events.Update(diff);
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_FEL_STEAK:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 44.0f, true) )
{
DoResetThreat();
me->AddThreat(target, 50000.0f);
me->CastSpell(target, SPELL_FEL_STEAK_MORPH, true);
me->CastSpell(target, SPELL_FEL_STEAK, true);
events.RepeatEvent(30000);
}
else
events.RepeatEvent(5000);
break;
}
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_FEL_STEAK:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 44.0f, true) )
{
DoResetThreat();
me->AddThreat(target, 50000.0f);
me->CastSpell(target, SPELL_FEL_STEAK_MORPH, true);
me->CastSpell(target, SPELL_FEL_STEAK, true);
events.RepeatEvent(30000);
}
else
events.RepeatEvent(5000);
break;
}
DoMeleeAttackIfReady();
}
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*killer*/)
{
me->DespawnOrUnsummon(10000);
}
void JustDied(Unit* /*killer*/)
{
me->DespawnOrUnsummon(10000);
}
void EnterEvadeMode()
{
me->DespawnOrUnsummon();
}
};
void EnterEvadeMode()
{
me->DespawnOrUnsummon();
}
};
};
class npc_mistress_of_pain : public CreatureScript
{
public:
npc_mistress_of_pain() : CreatureScript("npc_mistress_of_pain") { }
npc_mistress_of_pain() : CreatureScript("npc_mistress_of_pain") { }
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_mistress_of_painAI(pCreature);
}
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_mistress_of_painAI(pCreature);
}
struct npc_mistress_of_painAI : public ScriptedAI
{
npc_mistress_of_painAI(Creature* pCreature) : ScriptedAI(pCreature) {}
struct npc_mistress_of_painAI : public ScriptedAI
{
npc_mistress_of_painAI(Creature* pCreature) : ScriptedAI(pCreature) {}
EventMap events;
EventMap events;
void Reset()
{
if( Unit* target = me->SelectNearestTarget(200.0f) )
{
AttackStart(target);
DoZoneInCombat();
}
events.Reset();
events.RescheduleEvent(EVENT_SPELL_SHIVAN_SLASH, urand(10000,20000));
events.RescheduleEvent(EVENT_SPELL_SPINNING_PAIN_SPIKE, urand(22000,30000));
if( IsHeroic() )
events.RescheduleEvent(EVENT_SPELL_MISTRESS_KISS, urand(10000,15000));
}
void Reset()
{
if( Unit* target = me->SelectNearestTarget(200.0f) )
{
AttackStart(target);
DoZoneInCombat();
}
events.Reset();
events.RescheduleEvent(EVENT_SPELL_SHIVAN_SLASH, urand(10000,20000));
events.RescheduleEvent(EVENT_SPELL_SPINNING_PAIN_SPIKE, urand(22000,30000));
if( IsHeroic() )
events.RescheduleEvent(EVENT_SPELL_MISTRESS_KISS, urand(10000,15000));
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
//if (caster && spell && spell->Id == 66287 /*control vehicle*/)
// caster->ClearUnitState(UNIT_STATE_ONVEHICLE);
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
//if (caster && spell && spell->Id == 66287 /*control vehicle*/)
// caster->ClearUnitState(UNIT_STATE_ONVEHICLE);
}
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
void UpdateAI(uint32 diff)
{
if( !UpdateVictim() )
return;
events.Update(diff);
events.Update(diff);
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_SHIVAN_SLASH:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_SHIVAN_SLASH, false);
events.RepeatEvent(urand(15000,25000));
break;
case EVENT_SPELL_SPINNING_PAIN_SPIKE:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 140.0f, true) )
me->CastSpell(target, SPELL_SPINNING_PAIN_SPIKE, false);
events.RepeatEvent(urand(25000,30000));
break;
case EVENT_SPELL_MISTRESS_KISS:
me->CastSpell((Unit*)NULL, SPELL_MISTRESS_KISS, false);
events.RepeatEvent(urand(25000,35000));
break;
}
switch( events.GetEvent() )
{
case 0:
break;
case EVENT_SPELL_SHIVAN_SLASH:
if( me->GetVictim() )
me->CastSpell(me->GetVictim(), SPELL_SHIVAN_SLASH, false);
events.RepeatEvent(urand(15000,25000));
break;
case EVENT_SPELL_SPINNING_PAIN_SPIKE:
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 140.0f, true) )
me->CastSpell(target, SPELL_SPINNING_PAIN_SPIKE, false);
events.RepeatEvent(urand(25000,30000));
break;
case EVENT_SPELL_MISTRESS_KISS:
me->CastSpell((Unit*)NULL, SPELL_MISTRESS_KISS, false);
events.RepeatEvent(urand(25000,35000));
break;
}
DoMeleeAttackIfReady();
}
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*killer*/)
{
me->DespawnOrUnsummon(10000);
}
void JustDied(Unit* /*killer*/)
{
me->DespawnOrUnsummon(10000);
}
void EnterEvadeMode()
{
me->DespawnOrUnsummon();
}
};
void EnterEvadeMode()
{
me->DespawnOrUnsummon();
}
};
};
class spell_toc25_mistress_kiss : public SpellScriptLoader
{
public:
spell_toc25_mistress_kiss() : SpellScriptLoader("spell_toc25_mistress_kiss") { }
spell_toc25_mistress_kiss() : SpellScriptLoader("spell_toc25_mistress_kiss") { }
class spell_toc25_mistress_kiss_AuraScript : public AuraScript
{
PrepareAuraScript(spell_toc25_mistress_kiss_AuraScript)
class spell_toc25_mistress_kiss_AuraScript : public AuraScript
{
PrepareAuraScript(spell_toc25_mistress_kiss_AuraScript)
void HandleEffectPeriodic(AuraEffect const * aurEff)
{
if (Unit* caster = GetCaster())
if (Unit* target = GetTarget())
if( target->HasUnitState(UNIT_STATE_CASTING) )
{
caster->CastSpell(target, 66359, true);
SetDuration(0);
}
}
void HandleEffectPeriodic(AuraEffect const * aurEff)
{
if (Unit* caster = GetCaster())
if (Unit* target = GetTarget())
if( target->HasUnitState(UNIT_STATE_CASTING) )
{
caster->CastSpell(target, 66359, true);
SetDuration(0);
}
}
void Register()
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_toc25_mistress_kiss_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
void Register()
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_toc25_mistress_kiss_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
AuraScript *GetAuraScript() const
{
return new spell_toc25_mistress_kiss_AuraScript();
}
AuraScript *GetAuraScript() const
{
return new spell_toc25_mistress_kiss_AuraScript();
}
};
class spell_mistress_kiss_area : public SpellScriptLoader
@@ -469,8 +469,8 @@ class spell_mistress_kiss_area : public SpellScriptLoader
void FilterTargets(std::list<WorldObject*>& targets)
{
// get a list of players with mana
targets.remove_if(Trinity::ObjectTypeIdCheck(TYPEID_PLAYER, false));
targets.remove_if(Trinity::PowerCheck(POWER_MANA, false));
targets.remove_if(Trinity::ObjectTypeIdCheck(TYPEID_PLAYER, false));
targets.remove_if(Trinity::PowerCheck(POWER_MANA, false));
if (targets.empty())
return;
@@ -499,9 +499,9 @@ class spell_mistress_kiss_area : public SpellScriptLoader
void AddSC_boss_jaraxxus()
{
new boss_jaraxxus();
new npc_fel_infernal();
new npc_mistress_of_pain();
new spell_toc25_mistress_kiss();
new spell_mistress_kiss_area();
new boss_jaraxxus();
new npc_fel_infernal();
new npc_mistress_of_pain();
new spell_toc25_mistress_kiss();
new spell_mistress_kiss_area();
}

View File

@@ -10,74 +10,74 @@ REWRITTEN FROM SCRATCH BY PUSSYWIZARD, IT OWNS NOW!
enum MenuTexts
{
MSG_TESTED = 724001,
MSG_NEXT_STAGE = 724002,
MSG_CRUSADERS = 724003,
MSG_ANUBARAK = 724005,
MSG_TESTED = 724001,
MSG_NEXT_STAGE = 724002,
MSG_CRUSADERS = 724003,
MSG_ANUBARAK = 724005,
};
class npc_announcer_toc10 : public CreatureScript
{
public:
npc_announcer_toc10() : CreatureScript("npc_announcer_toc10") { }
npc_announcer_toc10() : CreatureScript("npc_announcer_toc10") { }
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
uint32 gossipTextId = 0;
switch( pInstance->GetData(TYPE_INSTANCE_PROGRESS) )
{
case INSTANCE_PROGRESS_INITIAL:
gossipTextId = MSG_TESTED;
break;
case INSTANCE_PROGRESS_INTRO_DONE:
case INSTANCE_PROGRESS_BEASTS_DEAD:
case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD:
case INSTANCE_PROGRESS_VALKYR_DEAD:
gossipTextId = MSG_NEXT_STAGE;
break;
case INSTANCE_PROGRESS_JARAXXUS_DEAD:
gossipTextId = MSG_CRUSADERS;
break;
case INSTANCE_PROGRESS_DONE:
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
return true;
default:
return true;
}
uint32 gossipTextId = 0;
switch( pInstance->GetData(TYPE_INSTANCE_PROGRESS) )
{
case INSTANCE_PROGRESS_INITIAL:
gossipTextId = MSG_TESTED;
break;
case INSTANCE_PROGRESS_INTRO_DONE:
case INSTANCE_PROGRESS_BEASTS_DEAD:
case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD:
case INSTANCE_PROGRESS_VALKYR_DEAD:
gossipTextId = MSG_NEXT_STAGE;
break;
case INSTANCE_PROGRESS_JARAXXUS_DEAD:
gossipTextId = MSG_CRUSADERS;
break;
case INSTANCE_PROGRESS_DONE:
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
return true;
default:
return true;
}
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
return true;
}
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*sender*/, uint32 uiAction)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*sender*/, uint32 uiAction)
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
return true;
if( uiAction == GOSSIP_ACTION_INFO_DEF+1337 )
{
pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0);
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
if( uiAction == GOSSIP_ACTION_INFO_DEF+1337 )
{
pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0);
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
};
void AddSC_trial_of_the_crusader()
{
new npc_announcer_toc10();
new npc_announcer_toc10();
}

View File

@@ -7,188 +7,188 @@ REWRITTEN FROM SCRATCH BY PUSSYWIZARD, IT OWNS NOW!
enum DataTypes
{
TYPE_NONE = 0,
TYPE_INSTANCE_PROGRESS,
TYPE_ANNOUNCER_GOSSIP_SELECT,
TYPE_FAILED,
TYPE_NONE = 0,
TYPE_INSTANCE_PROGRESS,
TYPE_ANNOUNCER_GOSSIP_SELECT,
TYPE_FAILED,
TYPE_GORMOK,
TYPE_JORMUNGAR,
TYPE_DREADSCALE,
TYPE_ACIDMAW,
TYPE_ICEHOWL,
TYPE_JARAXXUS,
TYPE_FACTION_CHAMPIONS,
TYPE_FACTION_CHAMPIONS_PLAYER_DIED,
TYPE_VALKYR,
TYPE_ANUBARAK,
TYPE_GORMOK,
TYPE_JORMUNGAR,
TYPE_DREADSCALE,
TYPE_ACIDMAW,
TYPE_ICEHOWL,
TYPE_JARAXXUS,
TYPE_FACTION_CHAMPIONS,
TYPE_FACTION_CHAMPIONS_PLAYER_DIED,
TYPE_VALKYR,
TYPE_ANUBARAK,
TYPE_FACTION_CHAMPIONS_START,
TYPE_NORTHREND_BEASTS_ALL,
TYPE_FACTION_CHAMPIONS_START,
TYPE_NORTHREND_BEASTS_ALL,
};
enum Progress
{
INSTANCE_PROGRESS_INITIAL = 0,
INSTANCE_PROGRESS_INTRO_DONE,
INSTANCE_PROGRESS_BEASTS_DEAD,
INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE,
INSTANCE_PROGRESS_JARAXXUS_DEAD,
INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD = 6,
INSTANCE_PROGRESS_VALKYR_DEAD = 8,
INSTANCE_PROGRESS_DONE = 10,
INSTANCE_PROGRESS_INITIAL = 0,
INSTANCE_PROGRESS_INTRO_DONE,
INSTANCE_PROGRESS_BEASTS_DEAD,
INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE,
INSTANCE_PROGRESS_JARAXXUS_DEAD,
INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD = 6,
INSTANCE_PROGRESS_VALKYR_DEAD = 8,
INSTANCE_PROGRESS_DONE = 10,
};
enum Events
{
EVENT_CHECK_PLAYERS = 1,
EVENT_OPEN_GATE,
EVENT_CLOSE_GATE,
EVENT_CHECK_PLAYERS = 1,
EVENT_OPEN_GATE,
EVENT_CLOSE_GATE,
EVENT_SCENE_001,
EVENT_SCENE_002,
EVENT_SCENE_003,
EVENT_SCENE_004,
EVENT_SUMMON_GORMOK,
EVENT_GORMOK_ATTACK,
EVENT_SCENE_005,
EVENT_SCENE_005_2,
EVENT_SUMMON_ACIDMAW_AND_DREADSCALE,
EVENT_ACIDMAW_AND_DREADSCALE_ATTACK,
EVENT_SCENE_006,
EVENT_SUMMON_ICEHOWL,
EVENT_ICEHOWL_ATTACK,
EVENT_SCENE_BEASTS_DONE,
EVENT_NORTHREND_BEASTS_ENRAGE,
EVENT_SCENE_001,
EVENT_SCENE_002,
EVENT_SCENE_003,
EVENT_SCENE_004,
EVENT_SUMMON_GORMOK,
EVENT_GORMOK_ATTACK,
EVENT_SCENE_005,
EVENT_SCENE_005_2,
EVENT_SUMMON_ACIDMAW_AND_DREADSCALE,
EVENT_ACIDMAW_AND_DREADSCALE_ATTACK,
EVENT_SCENE_006,
EVENT_SUMMON_ICEHOWL,
EVENT_ICEHOWL_ATTACK,
EVENT_SCENE_BEASTS_DONE,
EVENT_NORTHREND_BEASTS_ENRAGE,
EVENT_SCENE_101,
EVENT_SCENE_102,
EVENT_SCENE_103,
EVENT_SCENE_104,
EVENT_SUMMON_JARAXXUS,
EVENT_SCENE_105,
EVENT_SCENE_106,
EVENT_SCENE_107,
EVENT_SCENE_108,
EVENT_SCENE_109,
EVENT_JARAXXUS_ATTACK,
EVENT_SCENE_110,
EVENT_SCENE_111,
EVENT_SCENE_112,
EVENT_SCENE_113,
EVENT_SCENE_101,
EVENT_SCENE_102,
EVENT_SCENE_103,
EVENT_SCENE_104,
EVENT_SUMMON_JARAXXUS,
EVENT_SCENE_105,
EVENT_SCENE_106,
EVENT_SCENE_107,
EVENT_SCENE_108,
EVENT_SCENE_109,
EVENT_JARAXXUS_ATTACK,
EVENT_SCENE_110,
EVENT_SCENE_111,
EVENT_SCENE_112,
EVENT_SCENE_113,
EVENT_SCENE_201,
EVENT_SCENE_202,
EVENT_SCENE_203,
EVENT_SCENE_204,
EVENT_SCENE_205,
EVENT_SUMMON_CHAMPIONS,
EVENT_CHAMPIONS_ATTACK,
EVENT_SCENE_FACTION_CHAMPIONS_DEAD,
EVENT_SCENE_201,
EVENT_SCENE_202,
EVENT_SCENE_203,
EVENT_SCENE_204,
EVENT_SCENE_205,
EVENT_SUMMON_CHAMPIONS,
EVENT_CHAMPIONS_ATTACK,
EVENT_SCENE_FACTION_CHAMPIONS_DEAD,
EVENT_SCENE_301,
EVENT_SCENE_302,
EVENT_SCENE_303,
EVENT_SCENE_304,
EVENT_VALKYRIES_ATTACK,
EVENT_SCENE_VALKYR_DEAD,
EVENT_SCENE_301,
EVENT_SCENE_302,
EVENT_SCENE_303,
EVENT_SCENE_304,
EVENT_VALKYRIES_ATTACK,
EVENT_SCENE_VALKYR_DEAD,
EVENT_SCENE_401,
EVENT_SCENE_402,
EVENT_SCENE_403,
EVENT_SCENE_404,
EVENT_SCENE_405,
EVENT_SCENE_406,
EVENT_SCENE_406_2,
EVENT_SCENE_407,
EVENT_SCENE_408,
EVENT_SCENE_409,
EVENT_SCENE_410,
EVENT_SCENE_501,
EVENT_SCENE_502,
EVENT_SCENE_401,
EVENT_SCENE_402,
EVENT_SCENE_403,
EVENT_SCENE_404,
EVENT_SCENE_405,
EVENT_SCENE_406,
EVENT_SCENE_406_2,
EVENT_SCENE_407,
EVENT_SCENE_408,
EVENT_SCENE_409,
EVENT_SCENE_410,
EVENT_SCENE_501,
EVENT_SCENE_502,
};
enum NPCs
{
NPC_BARRENT = 34816,
NPC_TIRION = 34996,
NPC_GARROSH = 34995,
NPC_THRALL = 34994,
NPC_VARIAN = 34990,
NPC_PROUDMOORE = 34992,
NPC_ARGENT_MAGE = 36097,
NPC_BARRENT = 34816,
NPC_TIRION = 34996,
NPC_GARROSH = 34995,
NPC_THRALL = 34994,
NPC_VARIAN = 34990,
NPC_PROUDMOORE = 34992,
NPC_ARGENT_MAGE = 36097,
NPC_FIZZLEBANG = 35458,
NPC_LICH_KING = 35877,
NPC_FIZZLEBANG = 35458,
NPC_LICH_KING = 35877,
NPC_GORMOK = 34796,
NPC_DREADSCALE = 34799,
NPC_ACIDMAW = 35144,
NPC_ICEHOWL = 34797,
NPC_JARAXXUS = 34780,
NPC_GORMOK = 34796,
NPC_DREADSCALE = 34799,
NPC_ACIDMAW = 35144,
NPC_ICEHOWL = 34797,
NPC_JARAXXUS = 34780,
NPC_PURPLE_GROUND = 35651,
NPC_WORLD_TRIGGER = 18721,
NPC_PURPLE_GROUND = 35651,
NPC_WORLD_TRIGGER = 18721,
NPC_ALLIANCE_DEATH_KNIGHT = 34461,
NPC_ALLIANCE_DRUID_BALANCE = 34460,
NPC_ALLIANCE_DRUID_RESTORATION = 34469,
NPC_ALLIANCE_HUNTER = 34467,
NPC_ALLIANCE_MAGE = 34468,
NPC_ALLIANCE_PALADIN_HOLY = 34465,
NPC_ALLIANCE_PALADIN_RETRIBUTION = 34471,
NPC_ALLIANCE_PRIEST_DISCIPLINE = 34466,
NPC_ALLIANCE_PRIEST_SHADOW = 34473,
NPC_ALLIANCE_ROGUE = 34472,
NPC_ALLIANCE_SHAMAN_ENHANCEMENT = 34463,
NPC_ALLIANCE_SHAMAN_RESTORATION = 34470,
NPC_ALLIANCE_WARLOCK = 34474,
NPC_ALLIANCE_WARRIOR = 34475,
NPC_ALLIANCE_DEATH_KNIGHT = 34461,
NPC_ALLIANCE_DRUID_BALANCE = 34460,
NPC_ALLIANCE_DRUID_RESTORATION = 34469,
NPC_ALLIANCE_HUNTER = 34467,
NPC_ALLIANCE_MAGE = 34468,
NPC_ALLIANCE_PALADIN_HOLY = 34465,
NPC_ALLIANCE_PALADIN_RETRIBUTION = 34471,
NPC_ALLIANCE_PRIEST_DISCIPLINE = 34466,
NPC_ALLIANCE_PRIEST_SHADOW = 34473,
NPC_ALLIANCE_ROGUE = 34472,
NPC_ALLIANCE_SHAMAN_ENHANCEMENT = 34463,
NPC_ALLIANCE_SHAMAN_RESTORATION = 34470,
NPC_ALLIANCE_WARLOCK = 34474,
NPC_ALLIANCE_WARRIOR = 34475,
NPC_HORDE_DEATH_KNIGHT = 34458,
NPC_HORDE_DRUID_BALANCE = 34451,
NPC_HORDE_DRUID_RESTORATION = 34459,
NPC_HORDE_HUNTER = 34448,
NPC_HORDE_MAGE = 34449,
NPC_HORDE_PALADIN_HOLY = 34445,
NPC_HORDE_PALADIN_RETRIBUTION = 34456,
NPC_HORDE_PRIEST_DISCIPLINE = 34447,
NPC_HORDE_PRIEST_SHADOW = 34441,
NPC_HORDE_ROGUE = 34454,
NPC_HORDE_SHAMAN_ENHANCEMENT = 34455,
NPC_HORDE_SHAMAN_RESTORATION = 34444,
NPC_HORDE_WARLOCK = 34450,
NPC_HORDE_WARRIOR = 34453,
NPC_HORDE_DEATH_KNIGHT = 34458,
NPC_HORDE_DRUID_BALANCE = 34451,
NPC_HORDE_DRUID_RESTORATION = 34459,
NPC_HORDE_HUNTER = 34448,
NPC_HORDE_MAGE = 34449,
NPC_HORDE_PALADIN_HOLY = 34445,
NPC_HORDE_PALADIN_RETRIBUTION = 34456,
NPC_HORDE_PRIEST_DISCIPLINE = 34447,
NPC_HORDE_PRIEST_SHADOW = 34441,
NPC_HORDE_ROGUE = 34454,
NPC_HORDE_SHAMAN_ENHANCEMENT = 34455,
NPC_HORDE_SHAMAN_RESTORATION = 34444,
NPC_HORDE_WARLOCK = 34450,
NPC_HORDE_WARRIOR = 34453,
NPC_LIGHTBANE = 34497,
NPC_DARKBANE = 34496,
NPC_LIGHTBANE = 34497,
NPC_DARKBANE = 34496,
NPC_ANUBARAK = 34564,
NPC_ANUBARAK = 34564,
};
enum GOs
{
GO_ARGENT_COLISEUM_FLOOR = 195527,
GO_MAIN_GATE_DOOR = 195647,
GO_WEB_DOOR = 195485,
GO_EAST_PORTCULLIS = 195648,
GO_SOUTH_PORTCULLIS = 195649,
GO_NORTH_PORTCULLIS = 195650,
GO_ARGENT_COLISEUM_FLOOR = 195527,
GO_MAIN_GATE_DOOR = 195647,
GO_WEB_DOOR = 195485,
GO_EAST_PORTCULLIS = 195648,
GO_SOUTH_PORTCULLIS = 195649,
GO_NORTH_PORTCULLIS = 195650,
GO_CRUSADERS_CACHE_10 = 195631,
GO_CRUSADERS_CACHE_25 = 195632,
GO_CRUSADERS_CACHE_10_H = 195633,
GO_CRUSADERS_CACHE_25_H = 195635,
GO_CRUSADERS_CACHE_10 = 195631,
GO_CRUSADERS_CACHE_25 = 195632,
GO_CRUSADERS_CACHE_10_H = 195633,
GO_CRUSADERS_CACHE_25_H = 195635,
// Tribute Chest (heroic)
GO_TRIBUTE_CHEST_10H_25 = 195668, // 10man 01-24 attempts
GO_TRIBUTE_CHEST_10H_45 = 195667, // 10man 25-44 attempts
GO_TRIBUTE_CHEST_10H_50 = 195666, // 10man 45-49 attempts
GO_TRIBUTE_CHEST_10H_99 = 195665, // 10man 50 attempts
GO_TRIBUTE_CHEST_25H_25 = 195672, // 25man 01-24 attempts
GO_TRIBUTE_CHEST_25H_45 = 195671, // 25man 25-44 attempts
GO_TRIBUTE_CHEST_25H_50 = 195670, // 25man 45-49 attempts
GO_TRIBUTE_CHEST_25H_99 = 195669, // 25man 50 attempts
GO_TRIBUTE_CHEST_10H_25 = 195668, // 10man 01-24 attempts
GO_TRIBUTE_CHEST_10H_45 = 195667, // 10man 25-44 attempts
GO_TRIBUTE_CHEST_10H_50 = 195666, // 10man 45-49 attempts
GO_TRIBUTE_CHEST_10H_99 = 195665, // 10man 50 attempts
GO_TRIBUTE_CHEST_25H_25 = 195672, // 25man 01-24 attempts
GO_TRIBUTE_CHEST_25H_45 = 195671, // 25man 25-44 attempts
GO_TRIBUTE_CHEST_25H_50 = 195670, // 25man 45-49 attempts
GO_TRIBUTE_CHEST_25H_99 = 195669, // 25man 50 attempts
};
enum eTexts
@@ -219,7 +219,7 @@ enum eTexts
SAY_STAGE_2_04a = 3,
SAY_STAGE_2_05a = 4,
SAY_STAGE_3_03a = 5,
SAY_VARIAN_KILL_HORDE_PLAYER_1 = 6,
SAY_VARIAN_KILL_HORDE_PLAYER_1 = 6,
// Garrosh
SAY_STAGE_0_03h = 0,
@@ -228,7 +228,7 @@ enum eTexts
SAY_STAGE_2_04h = 3,
SAY_STAGE_2_05h = 4,
SAY_STAGE_3_03h = 5,
SAY_GARROSH_KILL_ALLIANCE_PLAYER_1 = 6,
SAY_GARROSH_KILL_ALLIANCE_PLAYER_1 = 6,
// Wilfred Fizzlebang
SAY_STAGE_1_02 = 0,
@@ -251,117 +251,117 @@ enum eTexts
const Position Locs[] =
{
{563.8f, 216.1f, 395.1f, 3*M_PI/2}, // 0
{563.93f, 178.37f, 394.49f, 3*M_PI/2}, // 1
{575.74f, 171.5f, 394.75f, 3*M_PI/2}, // 2
{549.93f, 171.5f, 394.75f, 3*M_PI/2}, // 3
{563.672974f, 139.571f, 393.837006f, 3*M_PI/2}, // 4
{577.347839f, 210.0f, 395.14f /*+ 6.0f*/, 3*M_PI/2}, // 5
{550.955933f, 210.0f, 395.14f /*+ 6.0f*/, 3*M_PI/2}, // 6
{573.5f, 180.5f, 395.14f /*+ 6.0f*/, 0}, // 7
{553.5f, 180.5f, 395.14f /*+ 6.0f*/, 0}, // 8
{585.5f, 170.0f, 395.14f /*+ 6.0f*/, 0}, // 9
{545.5f, 170.0f, 395.14f /*+ 6.0f*/, 0}, // 10
{563.833008f, 179.244995f, 394.5f, 3*M_PI/2}, // 11
{563.547f, 141.613f, 393.908f, 0}, // 12
{586.060242f, 117.514809f, 394.314026f, 0}, // 13 - Dark essence 1
{541.602112f, 161.879837f, 394.587952f, 0}, // 14 - Dark essence 2
{541.021118f, 117.262932f, 395.314819f, 0}, // 15 - Light essence 1
{586.200562f, 162.145523f, 394.626129f, 0}, // 16 - Light essence 2
{785.90f, 133.42f, 142.612f, M_PI}, // 17
{665.04f, 139.25f, 142.2f, 0.0f}, // 18
{664.75f, 135.0f, 142.2f, 0.0f}
{563.8f, 216.1f, 395.1f, 3*M_PI/2}, // 0
{563.93f, 178.37f, 394.49f, 3*M_PI/2}, // 1
{575.74f, 171.5f, 394.75f, 3*M_PI/2}, // 2
{549.93f, 171.5f, 394.75f, 3*M_PI/2}, // 3
{563.672974f, 139.571f, 393.837006f, 3*M_PI/2}, // 4
{577.347839f, 210.0f, 395.14f /*+ 6.0f*/, 3*M_PI/2}, // 5
{550.955933f, 210.0f, 395.14f /*+ 6.0f*/, 3*M_PI/2}, // 6
{573.5f, 180.5f, 395.14f /*+ 6.0f*/, 0}, // 7
{553.5f, 180.5f, 395.14f /*+ 6.0f*/, 0}, // 8
{585.5f, 170.0f, 395.14f /*+ 6.0f*/, 0}, // 9
{545.5f, 170.0f, 395.14f /*+ 6.0f*/, 0}, // 10
{563.833008f, 179.244995f, 394.5f, 3*M_PI/2}, // 11
{563.547f, 141.613f, 393.908f, 0}, // 12
{586.060242f, 117.514809f, 394.314026f, 0}, // 13 - Dark essence 1
{541.602112f, 161.879837f, 394.587952f, 0}, // 14 - Dark essence 2
{541.021118f, 117.262932f, 395.314819f, 0}, // 15 - Light essence 1
{586.200562f, 162.145523f, 394.626129f, 0}, // 16 - Light essence 2
{785.90f, 133.42f, 142.612f, M_PI}, // 17
{665.04f, 139.25f, 142.2f, 0.0f}, // 18
{664.75f, 135.0f, 142.2f, 0.0f}
};
enum LocNames
{
LOC_BEHIND_GATE = 0,
LOC_GATE_FRONT,
LOC_DREADSCALE,
LOC_ACIDMAW,
LOC_CENTER,
LOC_VALKYR_RIGHT,
LOC_VALKYR_LEFT,
LOC_VALKYR_DEST_RIGHT,
LOC_VALKYR_DEST_LEFT,
LOC_VALKYR_DEST_2_RIGHT,
LOC_VALKYR_DEST_2_LEFT,
LOC_ARTHAS_PORTAL,
LOC_ARTHAS,
LOC_DARKESS_1,
LOC_DARKESS_2,
LOC_LIGHTESS_1,
LOC_LIGHTESS_2,
LOC_ANUB,
LOC_TIRION_FINAL,
LOC_MAGE,
LOC_BEHIND_GATE = 0,
LOC_GATE_FRONT,
LOC_DREADSCALE,
LOC_ACIDMAW,
LOC_CENTER,
LOC_VALKYR_RIGHT,
LOC_VALKYR_LEFT,
LOC_VALKYR_DEST_RIGHT,
LOC_VALKYR_DEST_LEFT,
LOC_VALKYR_DEST_2_RIGHT,
LOC_VALKYR_DEST_2_LEFT,
LOC_ARTHAS_PORTAL,
LOC_ARTHAS,
LOC_DARKESS_1,
LOC_DARKESS_2,
LOC_LIGHTESS_1,
LOC_LIGHTESS_2,
LOC_ANUB,
LOC_TIRION_FINAL,
LOC_MAGE,
};
const Position FactionChampionLoc[]=
{
{514.231f, 105.569f, 418.234f, 0}, // 0 - Horde Initial Pos 0
{508.334f, 115.377f, 418.234f, 0}, // 1 - Horde Initial Pos 1
{506.454f, 126.291f, 418.234f, 0}, // 2 - Horde Initial Pos 2
{506.243f, 106.596f, 421.592f, 0}, // 3 - Horde Initial Pos 3
{499.885f, 117.717f, 421.557f, 0}, // 4 - Horde Initial Pos 4
{514.231f, 105.569f, 418.234f, 0}, // 0 - Horde Initial Pos 0
{508.334f, 115.377f, 418.234f, 0}, // 1 - Horde Initial Pos 1
{506.454f, 126.291f, 418.234f, 0}, // 2 - Horde Initial Pos 2
{506.243f, 106.596f, 421.592f, 0}, // 3 - Horde Initial Pos 3
{499.885f, 117.717f, 421.557f, 0}, // 4 - Horde Initial Pos 4
{613.127f, 100.443f, 419.74f, 0}, // 5 - Ally Initial Pos 0
{621.126f, 128.042f, 418.231f, 0}, // 6 - Ally Initial Pos 1
{618.829f, 113.606f, 418.232f, 0}, // 7 - Ally Initial Pos 2
{625.845f, 112.914f, 421.575f, 0}, // 8 - Ally Initial Pos 3
{615.566f, 109.653f, 418.234f, 0}, // 9 - Ally Initial Pos 4
{613.127f, 100.443f, 419.74f, 0}, // 5 - Ally Initial Pos 0
{621.126f, 128.042f, 418.231f, 0}, // 6 - Ally Initial Pos 1
{618.829f, 113.606f, 418.232f, 0}, // 7 - Ally Initial Pos 2
{625.845f, 112.914f, 421.575f, 0}, // 8 - Ally Initial Pos 3
{615.566f, 109.653f, 418.234f, 0}, // 9 - Ally Initial Pos 4
{535.469f, 113.012f, 394.55f, 0}, // 10 - Final Pos 0
{526.417f, 137.465f, 394.55f, 0}, // 11 - Final Pos 1
{528.108f, 111.057f, 394.55f, 0}, // 12 - Final Pos 2
{519.92f, 134.285f, 394.55f, 0}, // 13 - Final Pos 3
{533.648f, 119.148f, 394.55f, 0}, // 14 - Final Pos 4
{531.399f, 125.63f, 394.55f, 0}, // 15 - Final Pos 5
{528.958f, 131.47f, 394.55f, 0}, // 16 - Final Pos 6
{526.309f, 116.667f, 394.55f, 0}, // 17 - Final Pos 7
{524.238f, 122.411f, 394.55f, 0}, // 18 - Final Pos 8
{521.901f, 128.488f, 394.55f, 0}, // 19 - Final Pos 9
{535.469f, 113.012f, 394.55f, 0}, // 10 - Final Pos 0
{526.417f, 137.465f, 394.55f, 0}, // 11 - Final Pos 1
{528.108f, 111.057f, 394.55f, 0}, // 12 - Final Pos 2
{519.92f, 134.285f, 394.55f, 0}, // 13 - Final Pos 3
{533.648f, 119.148f, 394.55f, 0}, // 14 - Final Pos 4
{531.399f, 125.63f, 394.55f, 0}, // 15 - Final Pos 5
{528.958f, 131.47f, 394.55f, 0}, // 16 - Final Pos 6
{526.309f, 116.667f, 394.55f, 0}, // 17 - Final Pos 7
{524.238f, 122.411f, 394.55f, 0}, // 18 - Final Pos 8
{521.901f, 128.488f, 394.55f, 0}, // 19 - Final Pos 9
};
enum EventSpells
{
SPELL_WILFRED_PORTAL = 68424,
SPELL_JORMUNGAR_ACHIEV = 68523,
SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184,
SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620,
SPELL_TRAITOR_KING_10 = 68186,
SPELL_TRAITOR_KING_25 = 68515,
SPELL_PORTAL_TO_DALARAN = 53142,
SPELL_WILFRED_PORTAL = 68424,
SPELL_JORMUNGAR_ACHIEV = 68523,
SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184,
SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620,
SPELL_TRAITOR_KING_10 = 68186,
SPELL_TRAITOR_KING_25 = 68515,
SPELL_PORTAL_TO_DALARAN = 53142,
};
enum eAchievementCriteria
{
ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_N = 11779,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_H = 11802,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_N = 11780,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_H = 11801,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_N = 11838,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_H = 11861,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_N = 11839,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_H = 11862,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_N = 11779,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_H = 11802,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_N = 11780,
ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_H = 11801,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_N = 11838,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_H = 11861,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_N = 11839,
ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_H = 11862,
ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_10_PLAYER = 12344,
ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_25_PLAYER = 12338,
ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_10_PLAYER = 12347,
ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_25_PLAYER = 12341,
ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_10_PLAYER = 12349,
ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_25_PLAYER = 12343,
ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_HORDE = 12358,
ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_ALLIANCE = 12359,
ACHIEV_CRITERIA_A_TRIBUTE_TO_DEDICATED_INSANITY = 12360,
ACHIEV_CRITERIA_REALM_FIRST_GRAND_CRUSADER = 12350,
ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_10_PLAYER = 12344,
ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_25_PLAYER = 12338,
ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_10_PLAYER = 12347,
ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_25_PLAYER = 12341,
ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_10_PLAYER = 12349,
ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_25_PLAYER = 12343,
ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_HORDE = 12358,
ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_ALLIANCE = 12359,
ACHIEV_CRITERIA_A_TRIBUTE_TO_DEDICATED_INSANITY = 12360,
ACHIEV_CRITERIA_REALM_FIRST_GRAND_CRUSADER = 12350,
};
enum euiWorldStates
{
UPDATE_STATE_UI_SHOW = 4390,
UPDATE_STATE_UI_COUNT = 4389,
UPDATE_STATE_UI_SHOW = 4390,
UPDATE_STATE_UI_COUNT = 4389,
};
const uint32 dIIc = 405;