mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 10:55:43 +00:00
converted all tabs to 4 spaces
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user