mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-23 21:56:22 +00:00
refactor(Core/Scripts): restyle scripts lib with astyle (#3467)
This commit is contained in:
@@ -98,7 +98,7 @@ public:
|
||||
|
||||
struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
{
|
||||
boss_ingvar_the_plundererAI(Creature *c) : ScriptedAI(c), summons(me)
|
||||
boss_ingvar_the_plundererAI(Creature* c) : ScriptedAI(c), summons(me)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
pInstance->SetData(DATA_INGVAR, NOT_STARTED);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
if (me->GetDisplayId() == DISPLAYID_DEFAULT && damage >= me->GetHealth())
|
||||
{
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit * /*who*/)
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
events.Reset();
|
||||
// schedule Phase 1 abilities
|
||||
@@ -171,7 +171,7 @@ public:
|
||||
s->SetCanFly(true);
|
||||
s->SetDisableGravity(true);
|
||||
s->SetHover(true);
|
||||
s->SetPosition(s->GetPositionX(), s->GetPositionY(), s->GetPositionZ()+35.0f, s->GetOrientation());
|
||||
s->SetPosition(s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() + 35.0f, s->GetOrientation());
|
||||
s->SetFacingTo(s->GetOrientation());
|
||||
}
|
||||
else if (s->GetEntry() == NPC_THROW)
|
||||
@@ -254,7 +254,7 @@ public:
|
||||
break;
|
||||
case EVENT_VALKYR_MOVE:
|
||||
if( Creature* s = ObjectAccessor::GetCreature(*me, ValkyrGUID) )
|
||||
s->GetMotionMaster()->MovePoint(1, s->GetPositionX(), s->GetPositionY(), s->GetPositionZ()-15.0f);
|
||||
s->GetMotionMaster()->MovePoint(1, s->GetPositionX(), s->GetPositionY(), s->GetPositionZ() - 15.0f);
|
||||
events.PopEvent();
|
||||
break;
|
||||
case EVENT_ANNHYLDE_YELL:
|
||||
@@ -322,7 +322,7 @@ public:
|
||||
me->CastSpell((Unit*)NULL, SPELL_STAGGERING_ROAR, false);
|
||||
else
|
||||
me->CastSpell((Unit*)NULL, SPELL_DREADFUL_ROAR, false);
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
break;
|
||||
case EVENT_SPELL_CLEAVE_OR_WOE_STRIKE:
|
||||
if( me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0 )
|
||||
@@ -334,7 +334,7 @@ public:
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
else
|
||||
me->CastSpell(me->GetVictim(), SPELL_WOE_STRIKE, false);
|
||||
events.RepeatEvent(urand(0,4000)+3000);
|
||||
events.RepeatEvent(urand(0, 4000) + 3000);
|
||||
break;
|
||||
case EVENT_SPELL_SMASH:
|
||||
if( me->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID) == 0 )
|
||||
@@ -349,7 +349,7 @@ public:
|
||||
me->CastSpell((Unit*)NULL, SPELL_SMASH, false);
|
||||
else
|
||||
me->CastSpell((Unit*)NULL, SPELL_DARK_SMASH, false);
|
||||
events.RepeatEvent(urand(9000,11000));
|
||||
events.RepeatEvent(urand(9000, 11000));
|
||||
events.RescheduleEvent(EVENT_UNROOT, 3750);
|
||||
break;
|
||||
case EVENT_SPELL_ENRAGE_OR_SHADOW_AXE:
|
||||
@@ -368,7 +368,7 @@ public:
|
||||
break;
|
||||
case EVENT_AXE_RETURN:
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, ThrowGUID))
|
||||
c->GetMotionMaster()->MoveCharge(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()+0.5f);
|
||||
c->GetMotionMaster()->MoveCharge(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 0.5f);
|
||||
events.PopEvent();
|
||||
events.RescheduleEvent(EVENT_AXE_PICKUP, 1500);
|
||||
break;
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
|
||||
struct npc_frost_tombAI : public NullCreatureAI
|
||||
{
|
||||
npc_frost_tombAI(Creature *c) : NullCreatureAI(c), PrisonerGUID(0)
|
||||
npc_frost_tombAI(Creature* c) : NullCreatureAI(c), PrisonerGUID(0)
|
||||
{
|
||||
if (TempSummon* t = c->ToTempSummon())
|
||||
if (Unit* s = t->GetSummoner())
|
||||
@@ -113,7 +113,7 @@ public:
|
||||
|
||||
struct boss_kelesethAI : public ScriptedAI
|
||||
{
|
||||
boss_kelesethAI(Creature *c) : ScriptedAI(c)
|
||||
boss_kelesethAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
@@ -172,7 +172,7 @@ public:
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
|
||||
if( me->HasUnitState(UNIT_STATE_CASTING) )
|
||||
return;
|
||||
|
||||
@@ -182,7 +182,7 @@ public:
|
||||
break;
|
||||
case EVENT_SPELL_SHADOWBOLT:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHADOWBOLT, false);
|
||||
events.RepeatEvent(urand(4000,5000));
|
||||
events.RepeatEvent(urand(4000, 5000));
|
||||
break;
|
||||
case EVENT_FROST_TOMB:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
|
||||
@@ -200,9 +200,9 @@ public:
|
||||
Talk(SAY_SUMMON_SKELETONS);
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
{
|
||||
float dist = rand_norm()*4+3.0f;
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
if( Creature* c = me->SummonCreature(NPC_SKELETON, 156.2f+cos(angle)*dist, 259.1f+sin(angle)*dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000) )
|
||||
float dist = rand_norm() * 4 + 3.0f;
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
if( Creature* c = me->SummonCreature(NPC_SKELETON, 156.2f + cos(angle) * dist, 259.1f + sin(angle) * dist, 42.9f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000) )
|
||||
if( Unit* target = c->SelectNearestTarget(250.0f) )
|
||||
{
|
||||
c->AddThreat(target, 5.0f);
|
||||
@@ -243,23 +243,23 @@ public:
|
||||
|
||||
struct npc_vrykul_skeletonAI : public ScriptedAI
|
||||
{
|
||||
npc_vrykul_skeletonAI(Creature *c) : ScriptedAI(c)
|
||||
npc_vrykul_skeletonAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *pInstance;
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_DECREPIFY, urand(10000,20000));
|
||||
events.RescheduleEvent(EVENT_SPELL_DECREPIFY, urand(10000, 20000));
|
||||
if( IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, urand(25000,120000));
|
||||
events.RescheduleEvent(EVENT_SPELL_BONE_ARMOR, urand(25000, 120000));
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
@@ -303,12 +303,12 @@ public:
|
||||
case EVENT_SPELL_DECREPIFY:
|
||||
if( !me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE) )
|
||||
me->CastSpell(me->GetVictim(), SPELL_DECREPIFY, false);
|
||||
events.RepeatEvent(urand(15000,25000));
|
||||
events.RepeatEvent(urand(15000, 25000));
|
||||
break;
|
||||
case EVENT_SPELL_BONE_ARMOR:
|
||||
if( !me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE) )
|
||||
me->CastSpell((Unit*)NULL, SPELL_BONE_ARMOR, false);
|
||||
events.RepeatEvent(urand(40000,120000));
|
||||
events.RepeatEvent(urand(40000, 120000));
|
||||
break;
|
||||
case EVENT_RESURRECT:
|
||||
events.PopEvent();
|
||||
@@ -337,31 +337,31 @@ public:
|
||||
|
||||
class spell_frost_tomb : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_frost_tomb() : SpellScriptLoader("spell_frost_tomb") { }
|
||||
public:
|
||||
spell_frost_tomb() : SpellScriptLoader("spell_frost_tomb") { }
|
||||
|
||||
class spell_frost_tombAuraScript : public AuraScript
|
||||
class spell_frost_tombAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_frost_tombAuraScript);
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
PrepareAuraScript(spell_frost_tombAuraScript);
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
if (aurEff->GetTickNumber()==1)
|
||||
if( Unit* target = GetTarget() )
|
||||
target->CastSpell((Unit*)NULL, SPELL_FROST_TOMB_SUMMON, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_frost_tombAuraScript::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_frost_tombAuraScript();
|
||||
PreventDefaultAction();
|
||||
if (aurEff->GetTickNumber() == 1)
|
||||
if( Unit* target = GetTarget() )
|
||||
target->CastSpell((Unit*)NULL, SPELL_FROST_TOMB_SUMMON, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_frost_tombAuraScript::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_frost_tombAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_keleseth()
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
|
||||
struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
{
|
||||
boss_skarvald_the_constructorAI(Creature *c) : ScriptedAI(c)
|
||||
boss_skarvald_the_constructorAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit * who)
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_CHARGE, 5000);
|
||||
@@ -121,7 +121,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*victim*/)
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
if (me->GetEntry() == NPC_SKARVALD)
|
||||
Talk(YELL_SKARVALD_KILL);
|
||||
@@ -131,8 +131,10 @@ public:
|
||||
{
|
||||
if( me->GetEntry() != NPC_SKARVALD )
|
||||
return;
|
||||
if( pInstance ) {
|
||||
if( Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetData64(DATA_DALRONN)) ) {
|
||||
if( pInstance )
|
||||
{
|
||||
if( Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetData64(DATA_DALRONN)) )
|
||||
{
|
||||
if( dalronn->isDead() )
|
||||
{
|
||||
Talk(YELL_SKARVALD_SKA_DIEDFIRST);
|
||||
@@ -157,7 +159,7 @@ public:
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
|
||||
if( me->HasUnitState(UNIT_STATE_CASTING) )
|
||||
return;
|
||||
|
||||
@@ -176,13 +178,13 @@ public:
|
||||
me->AddThreat(target, 10000.0f);
|
||||
me->CastSpell(target, SPELL_CHARGE, false);
|
||||
}
|
||||
events.RepeatEvent(urand(5000,10000));
|
||||
events.RepeatEvent(urand(5000, 10000));
|
||||
break;
|
||||
case EVENT_SPELL_STONE_STRIKE:
|
||||
if( me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()) )
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_STONE_STRIKE, false);
|
||||
events.RepeatEvent(urand(5000,10000));
|
||||
events.RepeatEvent(urand(5000, 10000));
|
||||
}
|
||||
else
|
||||
events.RepeatEvent(3000);
|
||||
@@ -206,7 +208,7 @@ public:
|
||||
|
||||
struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
{
|
||||
boss_dalronn_the_controllerAI(Creature *c) : ScriptedAI(c), summons(me)
|
||||
boss_dalronn_the_controllerAI(Creature* c) : ScriptedAI(c), summons(me)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
@@ -246,7 +248,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit * who)
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_SHADOW_BOLT, 1000);
|
||||
@@ -269,7 +271,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*victim*/)
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
if (me->GetEntry() == NPC_DALRONN)
|
||||
Talk(YELL_DALRONN_KILL);
|
||||
@@ -284,8 +286,10 @@ public:
|
||||
{
|
||||
if( me->GetEntry() != NPC_DALRONN )
|
||||
return;
|
||||
if( pInstance ) {
|
||||
if( Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SKARVALD)) ) {
|
||||
if( pInstance )
|
||||
{
|
||||
if( Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SKARVALD)) )
|
||||
{
|
||||
if( skarvald->isDead() )
|
||||
{
|
||||
Talk(YELL_DALRONN_DAL_DIEDFIRST);
|
||||
@@ -309,7 +313,7 @@ public:
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
|
||||
if( me->HasUnitState(UNIT_STATE_CASTING) )
|
||||
return;
|
||||
|
||||
@@ -328,20 +332,20 @@ public:
|
||||
case EVENT_SPELL_SHADOW_BOLT:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 42.0f, true) )
|
||||
me->CastSpell(target, SPELL_SHADOW_BOLT, false);
|
||||
events.RepeatEvent(2500);
|
||||
events.RepeatEvent(2500);
|
||||
break;
|
||||
case EVENT_SPELL_DEBILITATE:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f, true) )
|
||||
{
|
||||
me->CastSpell(target, SPELL_DEBILITATE, false);
|
||||
events.RepeatEvent(urand(5000,10000));
|
||||
events.RepeatEvent(urand(5000, 10000));
|
||||
}
|
||||
else
|
||||
events.RepeatEvent(3000);
|
||||
break;
|
||||
case EVENT_SPELL_SUMMON_SKELETONS:
|
||||
me->CastSpell((Unit*)NULL, SPELL_SUMMON_SKELETONS, false);
|
||||
events.RepeatEvent(urand(20000,30000));
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,9 +81,8 @@ public:
|
||||
c->SetVisible(true);
|
||||
return;
|
||||
}
|
||||
else
|
||||
if(c->IsVisible())
|
||||
c->SetVisible(false);
|
||||
else if(c->IsVisible())
|
||||
c->SetVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,14 +90,30 @@ public:
|
||||
{
|
||||
switch(creature->GetEntry())
|
||||
{
|
||||
case NPC_KELESETH: NPC_KelesethGUID = creature->GetGUID(); break;
|
||||
case NPC_DALRONN: NPC_DalronnGUID = creature->GetGUID(); break;
|
||||
case NPC_SKARVALD: NPC_SkarvaldGUID = creature->GetGUID(); break;
|
||||
case NPC_DALRONN_GHOST: NPC_DalronnGhostGUID = creature->GetGUID(); break;
|
||||
case NPC_SKARVALD_GHOST: NPC_SkarvaldGhostGUID = creature->GetGUID(); break;
|
||||
case NPC_INGVAR: NPC_IngvarGUID = creature->GetGUID(); break;
|
||||
case NPC_DARK_RANGER_MARRAH:NPC_DarkRangerMarrahGUID = creature->GetGUID(); break;
|
||||
case NPC_ENSLAVED_PROTO_DRAKE: if (creature->GetPositionX() < 250.0f) NPC_SpecialDrakeGUID = creature->GetGUID(); break;
|
||||
case NPC_KELESETH:
|
||||
NPC_KelesethGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_DALRONN:
|
||||
NPC_DalronnGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_SKARVALD:
|
||||
NPC_SkarvaldGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_DALRONN_GHOST:
|
||||
NPC_DalronnGhostGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_SKARVALD_GHOST:
|
||||
NPC_SkarvaldGhostGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_INGVAR:
|
||||
NPC_IngvarGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_DARK_RANGER_MARRAH:
|
||||
NPC_DarkRangerMarrahGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_ENSLAVED_PROTO_DRAKE:
|
||||
if (creature->GetPositionX() < 250.0f) NPC_SpecialDrakeGUID = creature->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +214,7 @@ public:
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_SkarvaldGhostGUID = 0;
|
||||
}
|
||||
|
||||
|
||||
m_auiEncounter[1] = data;
|
||||
break;
|
||||
case DATA_UNLOCK_SKARVALD_LOOT:
|
||||
@@ -211,7 +226,7 @@ public:
|
||||
if (uint32 lootid = c->GetCreatureTemplate()->lootid)
|
||||
c->loot.FillLoot(lootid, LootTemplates_Creature, c->GetLootRecipient(), false, false, c->GetLootMode());
|
||||
if (c->GetLootMode())
|
||||
c->loot.generateMoneyLoot(c->GetCreatureTemplate()->mingold,c->GetCreatureTemplate()->maxgold);
|
||||
c->loot.generateMoneyLoot(c->GetCreatureTemplate()->mingold, c->GetCreatureTemplate()->maxgold);
|
||||
c->DestroyForNearbyPlayers();
|
||||
c->SetVisible(true);
|
||||
}
|
||||
@@ -226,7 +241,7 @@ public:
|
||||
if (uint32 lootid = c->GetCreatureTemplate()->lootid)
|
||||
c->loot.FillLoot(lootid, LootTemplates_Creature, c->GetLootRecipient(), false, false, c->GetLootMode());
|
||||
if (c->GetLootMode())
|
||||
c->loot.generateMoneyLoot(c->GetCreatureTemplate()->mingold,c->GetCreatureTemplate()->maxgold);
|
||||
c->loot.generateMoneyLoot(c->GetCreatureTemplate()->mingold, c->GetCreatureTemplate()->maxgold);
|
||||
c->DestroyForNearbyPlayers();
|
||||
c->SetVisible(true);
|
||||
}
|
||||
@@ -244,17 +259,17 @@ public:
|
||||
case DATA_FORGE_3:
|
||||
if (data == NOT_STARTED)
|
||||
{
|
||||
HandleGameObject(GO_ForgeBellowGUID[type-100], false);
|
||||
HandleGameObject(GO_ForgeFireGUID[type-100], false);
|
||||
HandleGameObject(GO_ForgeAnvilGUID[type-100], false);
|
||||
ForgeEventMask &= ~((uint32)(1<<(type-100)));
|
||||
HandleGameObject(GO_ForgeBellowGUID[type - 100], false);
|
||||
HandleGameObject(GO_ForgeFireGUID[type - 100], false);
|
||||
HandleGameObject(GO_ForgeAnvilGUID[type - 100], false);
|
||||
ForgeEventMask &= ~((uint32)(1 << (type - 100)));
|
||||
}
|
||||
else
|
||||
{
|
||||
HandleGameObject(GO_ForgeBellowGUID[type-100], true);
|
||||
HandleGameObject(GO_ForgeFireGUID[type-100], true);
|
||||
HandleGameObject(GO_ForgeAnvilGUID[type-100], true);
|
||||
ForgeEventMask |= (uint32)(1<<(type-100));
|
||||
HandleGameObject(GO_ForgeBellowGUID[type - 100], true);
|
||||
HandleGameObject(GO_ForgeFireGUID[type - 100], true);
|
||||
HandleGameObject(GO_ForgeAnvilGUID[type - 100], true);
|
||||
ForgeEventMask |= (uint32)(1 << (type - 100));
|
||||
}
|
||||
break;
|
||||
case DATA_SPECIAL_DRAKE:
|
||||
@@ -273,10 +288,14 @@ public:
|
||||
{
|
||||
switch(id)
|
||||
{
|
||||
case DATA_KELESETH: return NPC_KelesethGUID;
|
||||
case DATA_DALRONN: return NPC_DalronnGUID;
|
||||
case DATA_SKARVALD: return NPC_SkarvaldGUID;
|
||||
case DATA_INGVAR: return NPC_IngvarGUID;
|
||||
case DATA_KELESETH:
|
||||
return NPC_KelesethGUID;
|
||||
case DATA_DALRONN:
|
||||
return NPC_DalronnGUID;
|
||||
case DATA_SKARVALD:
|
||||
return NPC_SkarvaldGUID;
|
||||
case DATA_INGVAR:
|
||||
return NPC_IngvarGUID;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -292,7 +311,7 @@ public:
|
||||
case DATA_FORGE_1:
|
||||
case DATA_FORGE_2:
|
||||
case DATA_FORGE_3:
|
||||
return ForgeEventMask & (uint32)(1<<(id-100));
|
||||
return ForgeEventMask & (uint32)(1 << (id - 100));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -336,7 +355,8 @@ public:
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
} else OUT_LOAD_INST_DATA_FAIL;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
@@ -20,18 +20,18 @@ public:
|
||||
|
||||
struct npc_dragonflayer_forge_masterAI : public ScriptedAI
|
||||
{
|
||||
npc_dragonflayer_forge_masterAI(Creature *c) : ScriptedAI(c)
|
||||
npc_dragonflayer_forge_masterAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
|
||||
float x = me->GetHomePosition().GetPositionX();
|
||||
float y = me->GetHomePosition().GetPositionY();
|
||||
if (x>344.0f && x<357.0f && y<-35.0f && y>-44.0f)
|
||||
if (x > 344.0f && x < 357.0f && y < -35.0f && y > -44.0f)
|
||||
{
|
||||
dataId = DATA_FORGE_1;
|
||||
prevDataId = 0;
|
||||
}
|
||||
else if (x>380.0f && x<389.0f && y<-12.0f && y>-21.0f)
|
||||
else if (x > 380.0f && x < 389.0f && y < -12.0f && y > -21.0f)
|
||||
{
|
||||
dataId = DATA_FORGE_2;
|
||||
prevDataId = DATA_FORGE_1;
|
||||
@@ -199,36 +199,36 @@ enum TickingTimeBomb
|
||||
|
||||
class spell_ticking_time_bomb : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_ticking_time_bomb() : SpellScriptLoader("spell_ticking_time_bomb") { }
|
||||
public:
|
||||
spell_ticking_time_bomb() : SpellScriptLoader("spell_ticking_time_bomb") { }
|
||||
|
||||
class spell_ticking_time_bomb_AuraScript : public AuraScript
|
||||
class spell_ticking_time_bomb_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_ticking_time_bomb_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
PrepareAuraScript(spell_ticking_time_bomb_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
return (bool) sSpellMgr->GetSpellInfo(SPELL_TICKING_TIME_BOMB_EXPLODE);
|
||||
}
|
||||
|
||||
void HandleOnEffectRemove(AuraEffect const* /* aurEff */, AuraEffectHandleModes /* mode */)
|
||||
{
|
||||
if (GetCaster() == GetTarget())
|
||||
{
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_TICKING_TIME_BOMB_EXPLODE, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_ticking_time_bomb_AuraScript::HandleOnEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_ticking_time_bomb_AuraScript();
|
||||
return (bool) sSpellMgr->GetSpellInfo(SPELL_TICKING_TIME_BOMB_EXPLODE);
|
||||
}
|
||||
|
||||
void HandleOnEffectRemove(AuraEffect const* /* aurEff */, AuraEffectHandleModes /* mode */)
|
||||
{
|
||||
if (GetCaster() == GetTarget())
|
||||
{
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_TICKING_TIME_BOMB_EXPLODE, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_ticking_time_bomb_AuraScript::HandleOnEffectRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_ticking_time_bomb_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_utgarde_keep()
|
||||
|
||||
@@ -106,12 +106,12 @@ public:
|
||||
|
||||
struct boss_palehoofAI : public ScriptedAI
|
||||
{
|
||||
boss_palehoofAI(Creature *pCreature) : ScriptedAI(pCreature), summons(me)
|
||||
boss_palehoofAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me)
|
||||
{
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 OrbGUID;
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
do
|
||||
{
|
||||
good = true;
|
||||
RandomUnfreeze[i] = urand(0,3);
|
||||
RandomUnfreeze[i] = urand(0, 3);
|
||||
|
||||
for (uint8 j = 0; j < i; ++j)
|
||||
if (RandomUnfreeze[i] == RandomUnfreeze[j])
|
||||
@@ -134,8 +134,7 @@ public:
|
||||
good = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (!good);
|
||||
} while (!good);
|
||||
}
|
||||
|
||||
events.Reset();
|
||||
@@ -144,7 +143,7 @@ public:
|
||||
OrbGUID = 0;
|
||||
Counter = 0;
|
||||
me->CastSpell(me, SPELL_FREEZE, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
|
||||
if (m_pInstance)
|
||||
@@ -152,7 +151,7 @@ public:
|
||||
m_pInstance->SetData(DATA_GORTOK_PALEHOOF, NOT_STARTED);
|
||||
|
||||
// Reset statue
|
||||
if (GameObject *statisGenerator = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(STATIS_GENERATOR)))
|
||||
if (GameObject* statisGenerator = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(STATIS_GENERATOR)))
|
||||
{
|
||||
statisGenerator->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
statisGenerator->SetGoState(GO_STATE_READY);
|
||||
@@ -161,7 +160,7 @@ public:
|
||||
// Reset mini bosses
|
||||
for(uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
if(Creature *Animal = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN+i)))
|
||||
if(Creature* Animal = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + i)))
|
||||
{
|
||||
Animal->SetPosition(Animal->GetHomePosition());
|
||||
Animal->StopMovingOnCurrentPos();
|
||||
@@ -178,7 +177,7 @@ public:
|
||||
{
|
||||
if (param == ACTION_START_EVENT)
|
||||
{
|
||||
if (Creature *cr = me->SummonCreature(NPC_ORB_TRIGGER, 238.608f, -460.71f, 109.567f))
|
||||
if (Creature* cr = me->SummonCreature(NPC_ORB_TRIGGER, 238.608f, -460.71f, 109.567f))
|
||||
{
|
||||
OrbGUID = cr->GetGUID();
|
||||
cr->AddAura(SPELL_ORB_VISUAL, cr);
|
||||
@@ -204,7 +203,7 @@ public:
|
||||
m_pInstance->SetData(DATA_GORTOK_PALEHOOF, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
@@ -226,85 +225,85 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_UNFREEZE_MONSTER:
|
||||
{
|
||||
if (Creature *orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
if (Creature *miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN+RandomUnfreeze[Counter])))
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
Counter++;
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE);
|
||||
orb->CastSpell(miniBoss, SPELL_AWAKEN_SUBBOSS, true);
|
||||
events.ScheduleEvent(EVENT_UNFREEZE_MONSTER2, 6000);
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter])))
|
||||
{
|
||||
Counter++;
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE);
|
||||
orb->CastSpell(miniBoss, SPELL_AWAKEN_SUBBOSS, true);
|
||||
events.ScheduleEvent(EVENT_UNFREEZE_MONSTER2, 6000);
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_UNFREEZE_MONSTER2:
|
||||
{
|
||||
if (Creature *orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
if (Creature *miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN+RandomUnfreeze[Counter-1])))
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE2);
|
||||
orb->RemoveAurasDueToSpell(SPELL_AWAKEN_SUBBOSS);
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter - 1])))
|
||||
{
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE2);
|
||||
orb->RemoveAurasDueToSpell(SPELL_AWAKEN_SUBBOSS);
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_START:
|
||||
{
|
||||
if (Creature *orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
orb->CastSpell(me, SPELL_AWAKEN_SUBBOSS, true);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_START2, 6000);
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
orb->CastSpell(me, SPELL_AWAKEN_SUBBOSS, true);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_START2, 6000);
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_START2:
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
if (Creature *orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
orb->RemoveAurasDueToSpell(SPELL_AWAKEN_SUBBOSS);
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
orb->RemoveAurasDueToSpell(SPELL_AWAKEN_SUBBOSS);
|
||||
|
||||
me->RemoveAurasDueToSpell(SPELL_FREEZE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
// SETINCOMBATWITHZONE
|
||||
me->RemoveAurasDueToSpell(SPELL_FREEZE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
// SETINCOMBATWITHZONE
|
||||
|
||||
// schedule combat events
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_WITHERING_ROAR, 10000);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_IMPALE, 12000);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_ARCING_SMASH, 15000);
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
// schedule combat events
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_WITHERING_ROAR, 10000);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_IMPALE, 12000);
|
||||
events.ScheduleEvent(EVENT_PALEHOOF_ARCING_SMASH, 15000);
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_WITHERING_ROAR:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WITHERING_ROAR_H : SPELL_WITHERING_ROAR_N, false);
|
||||
events.RepeatEvent(8000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WITHERING_ROAR_H : SPELL_WITHERING_ROAR_N, false);
|
||||
events.RepeatEvent(8000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_IMPALE:
|
||||
{
|
||||
if (Unit *tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_IMPALE_H : SPELL_IMPALE_N, false);
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_IMPALE_H : SPELL_IMPALE_N, false);
|
||||
|
||||
events.RepeatEvent(8000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(8000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_ARCING_SMASH:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_ARCING_SMASH, false);
|
||||
events.RepeatEvent(13000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_ARCING_SMASH, false);
|
||||
events.RepeatEvent(13000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -348,7 +347,7 @@ public:
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
|
||||
@@ -356,10 +355,10 @@ public:
|
||||
{
|
||||
summons.DespawnAll();
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *) {}
|
||||
void EnterCombat(Unit*) {}
|
||||
|
||||
void DoAction(int32 param)
|
||||
{
|
||||
@@ -381,7 +380,7 @@ public:
|
||||
summons.DespawnAll();
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
return;
|
||||
@@ -406,39 +405,39 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_JORMUNGAR_ACID_SPIT:
|
||||
{
|
||||
if (Unit *tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, SPELL_ACID_SPIT, false);
|
||||
|
||||
events.RepeatEvent(2000 + rand()%2000);
|
||||
break;
|
||||
}
|
||||
case EVENT_JORMUNGAR_ACID_SPLATTER:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_ACID_SPLATTER_H : SPELL_ACID_SPLATTER_N, false);
|
||||
|
||||
// Aura summon wont work because of duration
|
||||
float x, y, z;
|
||||
me->GetPosition(x, y, z);
|
||||
for (uint8 i = 0; i < 6; ++i)
|
||||
{
|
||||
if (Creature* pJormungarWorm = me->SummonCreature(NPC_JORMUNGAR_WORM, x+rand()%10, y+rand()%10, z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
||||
{
|
||||
summons.Summon(pJormungarWorm);
|
||||
pJormungarWorm->SetInCombatWithZone();
|
||||
}
|
||||
}
|
||||
events.RepeatEvent(10000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_JORMUNGAR_POISON_BREATH:
|
||||
{
|
||||
if (Unit *tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISON_BREATH_H : SPELL_POISON_BREATH_N, false);
|
||||
if (Unit* tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, SPELL_ACID_SPIT, false);
|
||||
|
||||
events.RepeatEvent(8000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(2000 + rand() % 2000);
|
||||
break;
|
||||
}
|
||||
case EVENT_JORMUNGAR_ACID_SPLATTER:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_ACID_SPLATTER_H : SPELL_ACID_SPLATTER_N, false);
|
||||
|
||||
// Aura summon wont work because of duration
|
||||
float x, y, z;
|
||||
me->GetPosition(x, y, z);
|
||||
for (uint8 i = 0; i < 6; ++i)
|
||||
{
|
||||
if (Creature* pJormungarWorm = me->SummonCreature(NPC_JORMUNGAR_WORM, x + rand() % 10, y + rand() % 10, z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
||||
{
|
||||
summons.Summon(pJormungarWorm);
|
||||
pJormungarWorm->SetInCombatWithZone();
|
||||
}
|
||||
}
|
||||
events.RepeatEvent(10000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_JORMUNGAR_POISON_BREATH:
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISON_BREATH_H : SPELL_POISON_BREATH_N, false);
|
||||
|
||||
events.RepeatEvent(8000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -448,7 +447,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -476,16 +475,16 @@ public:
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *) {}
|
||||
void EnterCombat(Unit*) {}
|
||||
|
||||
void DoAction(int32 param)
|
||||
{
|
||||
@@ -505,7 +504,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
return;
|
||||
@@ -530,25 +529,25 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_RHINO_STOMP:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_STOMP, false);
|
||||
events.RepeatEvent(8000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_STOMP, false);
|
||||
events.RepeatEvent(8000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_RHINO_GORE:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_GORE_H : SPELL_GORE_N, false);
|
||||
events.RepeatEvent(13000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_GORE_H : SPELL_GORE_N, false);
|
||||
events.RepeatEvent(13000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_RHINO_WOUND:
|
||||
{
|
||||
if (Unit *tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_GRIEVOUS_WOUND_H : SPELL_GRIEVOUS_WOUND_N, false);
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_GRIEVOUS_WOUND_H : SPELL_GRIEVOUS_WOUND_N, false);
|
||||
|
||||
events.RepeatEvent(18000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(18000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -558,7 +557,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -586,16 +585,16 @@ public:
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *) {}
|
||||
void EnterCombat(Unit*) {}
|
||||
|
||||
void DoAction(int32 param)
|
||||
{
|
||||
@@ -615,7 +614,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
return;
|
||||
@@ -640,23 +639,23 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_FURBOLG_CHAIN:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CHAIN_LIGHTING_H : SPELL_CHAIN_LIGHTING_N, false);
|
||||
events.RepeatEvent(4000 + rand()%3000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CHAIN_LIGHTING_H : SPELL_CHAIN_LIGHTING_N, false);
|
||||
events.RepeatEvent(4000 + rand() % 3000);
|
||||
break;
|
||||
}
|
||||
case EVENT_FURBOLG_CRAZED:
|
||||
{
|
||||
me->CastSpell(me, SPELL_CRAZED, false);
|
||||
events.RepeatEvent(8000 + rand()%4000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, SPELL_CRAZED, false);
|
||||
events.RepeatEvent(8000 + rand() % 4000);
|
||||
break;
|
||||
}
|
||||
case EVENT_FURBOLG_ROAR:
|
||||
{
|
||||
me->CastSpell(me, SPELL_TERRIFYING_ROAR, false);
|
||||
events.RepeatEvent(10000 + rand()%5000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, SPELL_TERRIFYING_ROAR, false);
|
||||
events.RepeatEvent(10000 + rand() % 5000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -666,7 +665,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -694,16 +693,16 @@ public:
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *) {}
|
||||
void EnterCombat(Unit*) {}
|
||||
|
||||
void DoAction(int32 param)
|
||||
{
|
||||
@@ -723,7 +722,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
return;
|
||||
@@ -748,23 +747,23 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_WORGEN_MORTAL:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_MORTAL_WOUND_H : SPELL_MORTAL_WOUND_N, false);
|
||||
events.RepeatEvent(4000 + rand()%3000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_MORTAL_WOUND_H : SPELL_MORTAL_WOUND_N, false);
|
||||
events.RepeatEvent(4000 + rand() % 3000);
|
||||
break;
|
||||
}
|
||||
case EVENT_WORGEN_ENRAGE1:
|
||||
{
|
||||
me->CastSpell(me, SPELL_ENRAGE_1, false);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, SPELL_ENRAGE_1, false);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
case EVENT_WORGEN_ENRAGE2:
|
||||
{
|
||||
me->CastSpell(me, SPELL_ENRAGE_2, false);
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, SPELL_ENRAGE_2, false);
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -774,7 +773,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -786,11 +785,11 @@ class go_palehoof_sphere : public GameObjectScript
|
||||
public:
|
||||
go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { }
|
||||
|
||||
bool OnGossipHello(Player * /*pPlayer*/, GameObject *go) override
|
||||
bool OnGossipHello(Player* /*pPlayer*/, GameObject* go) override
|
||||
{
|
||||
InstanceScript *pInstance = go->GetInstanceScript();
|
||||
InstanceScript* pInstance = go->GetInstanceScript();
|
||||
|
||||
Creature *pPalehoof = ObjectAccessor::GetCreature(*go, pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature* pPalehoof = ObjectAccessor::GetCreature(*go, pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof && pPalehoof->IsAlive())
|
||||
{
|
||||
// maybe these are hacks :(
|
||||
|
||||
@@ -68,7 +68,7 @@ enum Events
|
||||
EVENT_GRAUF_REMOVE_SKADI = 14,
|
||||
};
|
||||
|
||||
static Position TrashPosition[]=
|
||||
static Position TrashPosition[] =
|
||||
{
|
||||
{441.236f, -512.000f, 104.930f, 0.0f},
|
||||
{478.436f, -494.475f, 104.730f, 0.0f}
|
||||
@@ -105,12 +105,12 @@ public:
|
||||
|
||||
struct boss_skadiAI : public ScriptedAI
|
||||
{
|
||||
boss_skadiAI(Creature *pCreature) : ScriptedAI(pCreature), summons(me)
|
||||
boss_skadiAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me)
|
||||
{
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 GraufGUID;
|
||||
@@ -120,7 +120,7 @@ public:
|
||||
{
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
if (Creature *cr = me->SummonCreature(NPC_GRAUF, 341.741f, -516.955f, 104.669f, 3.12414f))
|
||||
if (Creature* cr = me->SummonCreature(NPC_GRAUF, 341.741f, -516.955f, 104.669f, 3.12414f))
|
||||
{
|
||||
GraufGUID = cr->GetGUID();
|
||||
summons.Summon(cr);
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
Creature *GetGrauf() { return ObjectAccessor::GetCreature(*me, GraufGUID); }
|
||||
Creature* GetGrauf() { return ObjectAccessor::GetCreature(*me, GraufGUID); }
|
||||
|
||||
void EnterCombat(Unit* /*pWho*/)
|
||||
{
|
||||
@@ -194,40 +194,40 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_SKADI_START:
|
||||
{
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
if (Creature *cr = GetGrauf())
|
||||
{
|
||||
me->EnterVehicleUnattackable(cr, 0);
|
||||
cr->AI()->DoAction(ACTION_START_EVENT);
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
if (Creature* cr = GetGrauf())
|
||||
{
|
||||
me->EnterVehicleUnattackable(cr, 0);
|
||||
cr->AI()->DoAction(ACTION_START_EVENT);
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
else
|
||||
EnterEvadeMode();
|
||||
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_SKADI_CRUSH:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CRUSH_H : SPELL_CRUSH_N, false);
|
||||
events.RepeatEvent(8000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CRUSH_H : SPELL_CRUSH_N, false);
|
||||
events.RepeatEvent(8000);
|
||||
break;
|
||||
}
|
||||
case EVENT_SKADI_SPEAR:
|
||||
{
|
||||
if (Unit *tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISONED_SPEAR_H : SPELL_POISONED_SPEAR_N, false);
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISONED_SPEAR_H : SPELL_POISONED_SPEAR_N, false);
|
||||
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
case EVENT_SKADI_WHIRLWIND:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WHIRLWIND_H : SPELL_WHIRLWIND_N, false);
|
||||
events.RepeatEvent(15000 + rand()%5000);
|
||||
events.DelayEvents(10000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WHIRLWIND_H : SPELL_WHIRLWIND_N, false);
|
||||
events.RepeatEvent(15000 + rand() % 5000);
|
||||
events.DelayEvents(10000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -247,7 +247,7 @@ public:
|
||||
|
||||
void KilledUnit(Unit* /*pVictim*/)
|
||||
{
|
||||
if (urand(0,1))
|
||||
if (urand(0, 1))
|
||||
return;
|
||||
|
||||
Talk(SAY_KILL);
|
||||
@@ -267,12 +267,12 @@ public:
|
||||
|
||||
struct boss_skadi_graufAI : public VehicleAI
|
||||
{
|
||||
boss_skadi_graufAI(Creature *pCreature) : VehicleAI(pCreature), summons(me)
|
||||
boss_skadi_graufAI(Creature* pCreature) : VehicleAI(pCreature), summons(me)
|
||||
{
|
||||
m_pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *m_pInstance;
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 currentPos;
|
||||
@@ -296,8 +296,8 @@ public:
|
||||
}
|
||||
else if (param == ACTION_REMOVE_SKADI)
|
||||
{
|
||||
if (Unit *passenger = me->GetVehicleKit()->GetPassenger(0))
|
||||
if (Creature *skadi = passenger->ToCreature())
|
||||
if (Unit* passenger = me->GetVehicleKit()->GetPassenger(0))
|
||||
if (Creature* skadi = passenger->ToCreature())
|
||||
skadi->AI()->Talk(SAY_DRAKE_DEATH);
|
||||
me->GetMotionMaster()->MovePoint(10, 480.0f, -513.0f, 108.0f);
|
||||
events.ScheduleEvent(EVENT_GRAUF_REMOVE_SKADI, 2000);
|
||||
@@ -311,7 +311,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit *target, const SpellInfo *spellInfo)
|
||||
void SpellHitTarget(Unit* target, const SpellInfo* spellInfo)
|
||||
{
|
||||
if (spellInfo->Id == 47593) // SPELL_FLAME_VISUAL trigger
|
||||
target->CastSpell(target, me->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
|
||||
@@ -322,21 +322,21 @@ public:
|
||||
for(uint8 j = 0; j < 50; ++j)
|
||||
{
|
||||
if (point == 1)
|
||||
me->SummonCreature(NPC_BREATH_TRIGGER, 480.0f-(j*3), -518.0f+(j/16.0f), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
|
||||
me->SummonCreature(NPC_BREATH_TRIGGER, 480.0f - (j * 3), -518.0f + (j / 16.0f), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
|
||||
else
|
||||
me->SummonCreature(NPC_BREATH_TRIGGER, 480.0f-(j*3), -510.0f+(j/16.0f), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
|
||||
me->SummonCreature(NPC_BREATH_TRIGGER, 480.0f - (j * 3), -510.0f + (j / 16.0f), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
|
||||
}
|
||||
// and out of loop, cover the small room
|
||||
if (point == 0)
|
||||
{
|
||||
Creature *cr;
|
||||
Creature* cr;
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 483, -484.9f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 471.0f, -484.7f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
|
||||
|
||||
for (uint8 j = 0; j < 7; j++)
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 477.0f, -507.0f+(j*3), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 477.0f, -507.0f + (j * 3), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
|
||||
}
|
||||
}
|
||||
@@ -345,19 +345,19 @@ public:
|
||||
{
|
||||
switch(Id)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
me->RemoveAurasDueToSpell(SPELL_FLAME_VISUAL);
|
||||
me->SetFacingTo(M_PI*2);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(SKADI_IN_RANGE, 1);
|
||||
case 0:
|
||||
case 1:
|
||||
me->RemoveAurasDueToSpell(SPELL_FLAME_VISUAL);
|
||||
me->SetFacingTo(M_PI * 2);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(SKADI_IN_RANGE, 1);
|
||||
|
||||
me->MonsterTextEmote(EMOTE_IN_RANGE, 0, true);
|
||||
me->SetFacingTo(M_PI);
|
||||
break;
|
||||
me->MonsterTextEmote(EMOTE_IN_RANGE, 0, true);
|
||||
me->SetFacingTo(M_PI);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ public:
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
return 2+urand(0,1);
|
||||
return 2 + urand(0, 1);
|
||||
default:
|
||||
if (me->GetPositionY() < -515.0f)
|
||||
return 1;
|
||||
@@ -376,14 +376,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *)
|
||||
void EnterCombat(Unit*)
|
||||
{
|
||||
me->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
void RemoveSkadi(bool withEvade)
|
||||
{
|
||||
if (Unit *skadi = me->GetVehicleKit()->GetPassenger(0))
|
||||
if (Unit* skadi = me->GetVehicleKit()->GetPassenger(0))
|
||||
{
|
||||
summons.DespawnAll();
|
||||
skadi->ExitVehicle();
|
||||
@@ -415,12 +415,12 @@ public:
|
||||
|
||||
void SpawnHelpers(uint8 Spot)
|
||||
{
|
||||
if (Creature *Harpooner = me->SummonCreature(NPC_YMIRJAR_HARPOONER, TrashPosition[Spot].GetPositionX()+rand()%5, TrashPosition[Spot].GetPositionY()+rand()%5, TrashPosition[Spot].GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
if (Creature* Harpooner = me->SummonCreature(NPC_YMIRJAR_HARPOONER, TrashPosition[Spot].GetPositionX() + rand() % 5, TrashPosition[Spot].GetPositionY() + rand() % 5, TrashPosition[Spot].GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
{
|
||||
Harpooner->SetInCombatWithZone();
|
||||
summons.Summon(Harpooner);
|
||||
}
|
||||
if (Creature *Second = me->SummonCreature((urand(0,1) ? NPC_YMIRJAR_WARRIOR : NPC_YMIRJAR_WITCH_DOCTOR), TrashPosition[Spot].GetPositionX()+rand()%5, TrashPosition[Spot].GetPositionY()+rand()%5, TrashPosition[Spot].GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
if (Creature* Second = me->SummonCreature((urand(0, 1) ? NPC_YMIRJAR_WARRIOR : NPC_YMIRJAR_WITCH_DOCTOR), TrashPosition[Spot].GetPositionX() + rand() % 5, TrashPosition[Spot].GetPositionY() + rand() % 5, TrashPosition[Spot].GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
{
|
||||
Second->SetInCombatWithZone();
|
||||
summons.Summon(Second);
|
||||
@@ -433,54 +433,54 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_GRAUF_CHECK:
|
||||
{
|
||||
CheckPlayers();
|
||||
events.RepeatEvent(2000);
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_START:
|
||||
{
|
||||
me->GetMotionMaster()->Clear(true);
|
||||
me->GetMotionMaster()->MoveTakeoff(10, SkadiPosition[0].GetPositionX(), SkadiPosition[0].GetPositionY(), SkadiPosition[0].GetPositionZ(), 3.0f);
|
||||
|
||||
SpawnHelpers(0);
|
||||
SpawnHelpers(0);
|
||||
events.ScheduleEvent(EVENT_GRAUF_MOVE, 15000);
|
||||
events.ScheduleEvent(EVENT_GRAUF_SUMMON_HELPERS, 20000);
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_MOVE:
|
||||
{
|
||||
AchievementHitCount = 0;
|
||||
uint8 targetPoint = SelectNextPos(currentPos);
|
||||
me->GetMotionMaster()->MovePoint(targetPoint, SkadiPosition[targetPoint].GetPositionX(), SkadiPosition[targetPoint].GetPositionY(), SkadiPosition[targetPoint].GetPositionZ());
|
||||
if (targetPoint <= 1)
|
||||
{
|
||||
SpawnFlameTriggers(targetPoint);
|
||||
me->CastSpell(me, SPELL_FLAME_VISUAL, false);
|
||||
CheckPlayers();
|
||||
events.RepeatEvent(2000);
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_START:
|
||||
{
|
||||
me->GetMotionMaster()->Clear(true);
|
||||
me->GetMotionMaster()->MoveTakeoff(10, SkadiPosition[0].GetPositionX(), SkadiPosition[0].GetPositionY(), SkadiPosition[0].GetPositionZ(), 3.0f);
|
||||
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(SKADI_IN_RANGE, 0);
|
||||
SpawnHelpers(0);
|
||||
SpawnHelpers(0);
|
||||
events.ScheduleEvent(EVENT_GRAUF_MOVE, 15000);
|
||||
events.ScheduleEvent(EVENT_GRAUF_SUMMON_HELPERS, 20000);
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_MOVE:
|
||||
{
|
||||
AchievementHitCount = 0;
|
||||
uint8 targetPoint = SelectNextPos(currentPos);
|
||||
me->GetMotionMaster()->MovePoint(targetPoint, SkadiPosition[targetPoint].GetPositionX(), SkadiPosition[targetPoint].GetPositionY(), SkadiPosition[targetPoint].GetPositionZ());
|
||||
if (targetPoint <= 1)
|
||||
{
|
||||
SpawnFlameTriggers(targetPoint);
|
||||
me->CastSpell(me, SPELL_FLAME_VISUAL, false);
|
||||
}
|
||||
|
||||
currentPos = targetPoint;
|
||||
events.RepeatEvent(25000);
|
||||
break;
|
||||
}
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(SKADI_IN_RANGE, 0);
|
||||
|
||||
currentPos = targetPoint;
|
||||
events.RepeatEvent(25000);
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_SUMMON_HELPERS:
|
||||
{
|
||||
SpawnHelpers(1);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
SpawnHelpers(1);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
case EVENT_GRAUF_REMOVE_SKADI:
|
||||
{
|
||||
RemoveSkadi(false);
|
||||
me->DespawnOrUnsummon();
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
{
|
||||
RemoveSkadi(false);
|
||||
me->DespawnOrUnsummon();
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -493,14 +493,14 @@ public:
|
||||
|
||||
bool OnGossipHello(Player* pPlayer, GameObject* go) override
|
||||
{
|
||||
InstanceScript *m_pInstance = go->GetInstanceScript();
|
||||
InstanceScript* m_pInstance = go->GetInstanceScript();
|
||||
if (m_pInstance && m_pInstance->GetData(DATA_SKADI_THE_RUTHLESS) == IN_PROGRESS)
|
||||
if (m_pInstance->GetData(SKADI_IN_RANGE) == 1)
|
||||
{
|
||||
uint8 count = m_pInstance->GetData(SKADI_HITS)+1;
|
||||
uint8 count = m_pInstance->GetData(SKADI_HITS) + 1;
|
||||
m_pInstance->SetData(SKADI_HITS, count);
|
||||
|
||||
if (Creature *grauf = ObjectAccessor::GetCreature(*pPlayer, m_pInstance->GetData64(DATA_GRAUF)))
|
||||
if (Creature* grauf = ObjectAccessor::GetCreature(*pPlayer, m_pInstance->GetData64(DATA_GRAUF)))
|
||||
{
|
||||
if (count >= 3)
|
||||
{
|
||||
|
||||
@@ -74,7 +74,7 @@ enum Events
|
||||
EVENT_SORROWGRAVE_FINISH_RITUAL = 15,
|
||||
};
|
||||
|
||||
const Position RitualChannelerLoc[3]=
|
||||
const Position RitualChannelerLoc[3] =
|
||||
{
|
||||
{296.42f, -355.01f, 90.94f, 0.0f},
|
||||
{302.36f, -352.01f, 90.54f, 0.0f},
|
||||
@@ -123,10 +123,10 @@ public:
|
||||
events.Reset();
|
||||
events2.Reset();
|
||||
if (!Started)
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
else
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetHover(true);
|
||||
}
|
||||
}
|
||||
@@ -142,7 +142,7 @@ public:
|
||||
if (data != 1 || param != 1 || Started || (instance && instance->GetData(DATA_SVALA_SORROWGRAVE) == DONE))
|
||||
return;
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
Started = true;
|
||||
me->setActive(true);
|
||||
events2.ScheduleEvent(EVENT_SVALA_START, 5000);
|
||||
@@ -225,43 +225,43 @@ public:
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK4, 9000);
|
||||
break;
|
||||
case 30:
|
||||
{
|
||||
WorldPacket data(SMSG_SPLINE_MOVE_SET_HOVER, 9);
|
||||
data.append(me->GetPackGUID());
|
||||
me->SendMessageToSet(&data, false);
|
||||
break;
|
||||
}
|
||||
{
|
||||
WorldPacket data(SMSG_SPLINE_MOVE_SET_HOVER, 9);
|
||||
data.append(me->GetPackGUID());
|
||||
me->SendMessageToSet(&data, false);
|
||||
break;
|
||||
}
|
||||
case EVENT_SVALA_TALK4:
|
||||
{
|
||||
me->CastSpell(me, SPELL_SVALA_TRANSFORMING1, true);
|
||||
me->UpdateEntry(NPC_SVALA_SORROWGRAVE);
|
||||
me->SetCorpseDelay(sWorld->getIntConfig(CONFIG_CORPSE_DECAY_ELITE));
|
||||
me->SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 6.0f);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
if (Creature* Arthas = ObjectAccessor::GetCreature(*me, ArthasGUID))
|
||||
Arthas->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAuras();
|
||||
me->SetWalk(false);
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK5, 2000);
|
||||
{
|
||||
me->CastSpell(me, SPELL_SVALA_TRANSFORMING1, true);
|
||||
me->UpdateEntry(NPC_SVALA_SORROWGRAVE);
|
||||
me->SetCorpseDelay(sWorld->getIntConfig(CONFIG_CORPSE_DECAY_ELITE));
|
||||
me->SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 6.0f);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
if (Creature* Arthas = ObjectAccessor::GetCreature(*me, ArthasGUID))
|
||||
Arthas->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAuras();
|
||||
me->SetWalk(false);
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK5, 2000);
|
||||
|
||||
std::list<Creature*> creatureList;
|
||||
me->GetCreaturesWithEntryInRange(creatureList, 100.0f, NPC_DRAGONFLAYER_SPECTATOR);
|
||||
for (std::list<Creature*>::const_iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
|
||||
(*itr)->AI()->SetData(1, 2);
|
||||
std::list<Creature*> creatureList;
|
||||
me->GetCreaturesWithEntryInRange(creatureList, 100.0f, NPC_DRAGONFLAYER_SPECTATOR);
|
||||
for (std::list<Creature*>::const_iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
|
||||
(*itr)->AI()->SetData(1, 2);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EVENT_SVALA_TALK5:
|
||||
Talk(TALK_INTRO_S2);
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK6, 12000);
|
||||
break;
|
||||
case EVENT_SVALA_TALK6:
|
||||
if (Creature *Arthas = ObjectAccessor::GetCreature(*me, ArthasGUID))
|
||||
if (Creature* Arthas = ObjectAccessor::GetCreature(*me, ArthasGUID))
|
||||
Arthas->AI()->Talk(TALK_INTRO_A2);
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK7, 9000);
|
||||
break;
|
||||
case EVENT_SVALA_TALK7:
|
||||
me->SetFacingTo(M_PI/2.0f);
|
||||
me->SetFacingTo(M_PI / 2.0f);
|
||||
Talk(TALK_INTRO_S3);
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetData64(GO_SVALA_MIRROR)))
|
||||
mirror->SetGoState(GO_STATE_ACTIVE);
|
||||
@@ -273,7 +273,7 @@ public:
|
||||
break;
|
||||
case EVENT_SVALA_TALK9:
|
||||
me->SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 3.0f);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->LoadEquipment(1, true);
|
||||
me->setActive(false);
|
||||
if (Player* target = SelectTargetFromPlayerList(100.0f))
|
||||
@@ -302,16 +302,16 @@ public:
|
||||
events.ScheduleEvent(EVENT_SORROWGRAVE_FLAMES, urand(8000, 12000));
|
||||
break;
|
||||
case EVENT_SORROWGRAVE_FLAMES2:
|
||||
{
|
||||
std::list<Creature*> braziers;
|
||||
me->GetCreaturesWithEntryInRange(braziers, 100.0f, NPC_FLAME_BRAZIER);
|
||||
if (!braziers.empty())
|
||||
{
|
||||
for (std::list<Creature*>::const_iterator itr = braziers.begin(); itr != braziers.end(); ++itr)
|
||||
(*itr)->CastCustomSpell(SPELL_BALL_OF_FLAME, SPELLVALUE_MAX_TARGETS, 1, (*itr), true);
|
||||
std::list<Creature*> braziers;
|
||||
me->GetCreaturesWithEntryInRange(braziers, 100.0f, NPC_FLAME_BRAZIER);
|
||||
if (!braziers.empty())
|
||||
{
|
||||
for (std::list<Creature*>::const_iterator itr = braziers.begin(); itr != braziers.end(); ++itr)
|
||||
(*itr)->CastCustomSpell(SPELL_BALL_OF_FLAME, SPELLVALUE_MAX_TARGETS, 1, (*itr), true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EVENT_SORROWGRAVE_RITUAL:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
@@ -386,55 +386,55 @@ public:
|
||||
|
||||
class spell_svala_ritual_strike : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_svala_ritual_strike() : SpellScriptLoader("spell_svala_ritual_strike") { }
|
||||
public:
|
||||
spell_svala_ritual_strike() : SpellScriptLoader("spell_svala_ritual_strike") { }
|
||||
|
||||
class spell_svala_ritual_strike_SpellScript : public SpellScript
|
||||
class spell_svala_ritual_strike_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_svala_ritual_strike_SpellScript);
|
||||
|
||||
void HandleDummyEffect(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
PrepareSpellScript(spell_svala_ritual_strike_SpellScript);
|
||||
|
||||
void HandleDummyEffect(SpellEffIndex /*effIndex*/)
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
if (unitTarget->GetTypeId() != TYPEID_UNIT)
|
||||
return;
|
||||
if (unitTarget->GetTypeId() != TYPEID_UNIT)
|
||||
return;
|
||||
|
||||
Unit::DealDamage(GetCaster(), unitTarget, 7000, NULL, DIRECT_DAMAGE);
|
||||
}
|
||||
Unit::DealDamage(GetCaster(), unitTarget, 7000, NULL, DIRECT_DAMAGE);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_svala_ritual_strike_SpellScript::HandleDummyEffect, EFFECT_2, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript *GetSpellScript() const
|
||||
{
|
||||
return new spell_svala_ritual_strike_SpellScript();
|
||||
}
|
||||
|
||||
class spell_svala_ritual_strike_AuraScript : public AuraScript
|
||||
void Register()
|
||||
{
|
||||
PrepareAuraScript(spell_svala_ritual_strike_AuraScript);
|
||||
|
||||
void CalculateAmount(AuraEffect const * /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
|
||||
{
|
||||
// Set amount based on difficulty
|
||||
amount = (GetCaster()->GetMap()->IsHeroic() ? 2000 : 1000);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_svala_ritual_strike_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_svala_ritual_strike_AuraScript();
|
||||
OnEffectHitTarget += SpellEffectFn(spell_svala_ritual_strike_SpellScript::HandleDummyEffect, EFFECT_2, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_svala_ritual_strike_SpellScript();
|
||||
}
|
||||
|
||||
class spell_svala_ritual_strike_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_svala_ritual_strike_AuraScript);
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
// Set amount based on difficulty
|
||||
amount = (GetCaster()->GetMap()->IsHeroic() ? 2000 : 1000);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_svala_ritual_strike_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_svala_ritual_strike_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_svala()
|
||||
|
||||
@@ -97,12 +97,12 @@ public:
|
||||
|
||||
struct boss_ymironAI : public ScriptedAI
|
||||
{
|
||||
boss_ymironAI(Creature *pCreature) : ScriptedAI(pCreature), summons(me), summons2(me)
|
||||
boss_ymironAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me), summons2(me)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript *pInstance;
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
SummonList summons2;
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
do
|
||||
{
|
||||
good = true;
|
||||
BoatOrder[i] = urand(0,3);
|
||||
BoatOrder[i] = urand(0, 3);
|
||||
|
||||
for (uint8 j = 0; j < i; ++j)
|
||||
if (BoatOrder[i] == BoatOrder[j])
|
||||
@@ -125,8 +125,7 @@ public:
|
||||
good = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (!good);
|
||||
} while (!good);
|
||||
}
|
||||
|
||||
events.Reset();
|
||||
@@ -134,8 +133,8 @@ public:
|
||||
summons2.DespawnAll();
|
||||
BoatNum = 0;
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
if(pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_KING_YMIRON, NOT_STARTED);
|
||||
@@ -176,15 +175,15 @@ public:
|
||||
|
||||
if (point == 0)
|
||||
{
|
||||
Talk(BoatStructure[BoatOrder[BoatNum-1]].say);
|
||||
if (Creature *cr = me->FindNearestCreature(BoatStructure[BoatOrder[BoatNum-1]].trigger, 50.0f))
|
||||
Talk(BoatStructure[BoatOrder[BoatNum - 1]].say);
|
||||
if (Creature* cr = me->FindNearestCreature(BoatStructure[BoatOrder[BoatNum - 1]].trigger, 50.0f))
|
||||
me->CastSpell(cr, SPELL_CHANNEL_YMIRON_TO_SPIRIT, true);
|
||||
|
||||
events.ScheduleEvent(EVENT_YMIRON_ACTIVATE_BOAT, 6000);
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit *, const SpellInfo *spellInfo)
|
||||
void SpellHitTarget(Unit*, const SpellInfo* spellInfo)
|
||||
{
|
||||
if (spellInfo->Id == 59302 && pInstance) // Bane trigger
|
||||
pInstance->SetData(DATA_YMIRON_ACHIEVEMENT, false);
|
||||
@@ -202,117 +201,125 @@ public:
|
||||
switch (events.GetEvent())
|
||||
{
|
||||
case EVENT_YMIRON_HEALTH_CHECK:
|
||||
{
|
||||
if (me->GetHealth() < std::max(0.0f, float(me->GetMaxHealth()*(1.0f-(IsHeroic() ? 0.2f : 0.334f)*float(BoatNum+1)))))
|
||||
{
|
||||
events.DelayEvents(12000);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->CastSpell(me, SPELL_SCREAMS_OF_THE_DEAD, true);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MovePoint(0, BoatStructure[BoatOrder[BoatNum]].MoveX, BoatStructure[BoatOrder[BoatNum]].MoveY, BoatStructure[BoatOrder[BoatNum]].MoveZ);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
summons.DespawnAll();
|
||||
if (me->GetHealth() < std::max(0.0f, float(me->GetMaxHealth() * (1.0f - (IsHeroic() ? 0.2f : 0.334f)*float(BoatNum + 1)))))
|
||||
{
|
||||
events.DelayEvents(12000);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->CastSpell(me, SPELL_SCREAMS_OF_THE_DEAD, true);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MovePoint(0, BoatStructure[BoatOrder[BoatNum]].MoveX, BoatStructure[BoatOrder[BoatNum]].MoveY, BoatStructure[BoatOrder[BoatNum]].MoveZ);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
summons.DespawnAll();
|
||||
|
||||
// Spawn flames in previous boat if any
|
||||
if (BoatNum) // different than 0
|
||||
if (Creature *cr = me->SummonTrigger(BoatStructure[BoatOrder[BoatNum-1]].SpawnX, BoatStructure[BoatOrder[BoatNum-1]].SpawnY, BoatStructure[BoatOrder[BoatNum-1]].SpawnZ, 0, 1800000))
|
||||
{
|
||||
cr->AddAura(SPELL_FLAMES, cr);
|
||||
summons2.Summon(cr);
|
||||
}
|
||||
// Spawn flames in previous boat if any
|
||||
if (BoatNum) // different than 0
|
||||
if (Creature* cr = me->SummonTrigger(BoatStructure[BoatOrder[BoatNum - 1]].SpawnX, BoatStructure[BoatOrder[BoatNum - 1]].SpawnY, BoatStructure[BoatOrder[BoatNum - 1]].SpawnZ, 0, 1800000))
|
||||
{
|
||||
cr->AddAura(SPELL_FLAMES, cr);
|
||||
summons2.Summon(cr);
|
||||
}
|
||||
|
||||
BoatNum++;
|
||||
BoatNum++;
|
||||
}
|
||||
|
||||
events.RepeatEvent(1000);
|
||||
break;
|
||||
}
|
||||
|
||||
events.RepeatEvent(1000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_BANE:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_BANE_H : SPELL_BANE_N, false);
|
||||
events.RepeatEvent(20000+rand()%5000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_BANE_H : SPELL_BANE_N, false);
|
||||
events.RepeatEvent(20000 + rand() % 5000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_FETID_ROT:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_FETID_ROT_H : SPELL_FETID_ROT_N, false);
|
||||
events.RepeatEvent(10000+rand()%3000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_FETID_ROT_H : SPELL_FETID_ROT_N, false);
|
||||
events.RepeatEvent(10000 + rand() % 3000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_DARK_SLASH:
|
||||
{
|
||||
int32 dmg = me->GetVictim()->GetHealth() / 2;
|
||||
me->CastCustomSpell(me->GetVictim(), SPELL_DARK_SLASH, &dmg, 0, 0, false);
|
||||
events.RepeatEvent(30000+rand()%5000);
|
||||
break;
|
||||
}
|
||||
{
|
||||
int32 dmg = me->GetVictim()->GetHealth() / 2;
|
||||
me->CastCustomSpell(me->GetVictim(), SPELL_DARK_SLASH, &dmg, 0, 0, false);
|
||||
events.RepeatEvent(30000 + rand() % 5000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_ACTIVATE_BOAT:
|
||||
{
|
||||
// Spawn it!
|
||||
if (Creature* king = me->SummonCreature(BoatStructure[BoatOrder[BoatNum-1]].npc, BoatStructure[BoatOrder[BoatNum-1]].SpawnX, BoatStructure[BoatOrder[BoatNum-1]].SpawnY, BoatStructure[BoatOrder[BoatNum-1]].SpawnZ, BoatStructure[BoatOrder[BoatNum-1]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
king->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
|
||||
summons.Summon(king);
|
||||
king->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
king->SetDisableGravity(true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->GetMotionMaster()->MoveChase(me->GetVictim());
|
||||
switch(BoatOrder[BoatNum-1])
|
||||
// Spawn it!
|
||||
if (Creature* king = me->SummonCreature(BoatStructure[BoatOrder[BoatNum - 1]].npc, BoatStructure[BoatOrder[BoatNum - 1]].SpawnX, BoatStructure[BoatOrder[BoatNum - 1]].SpawnY, BoatStructure[BoatOrder[BoatNum - 1]].SpawnZ, BoatStructure[BoatOrder[BoatNum - 1]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
{
|
||||
case 0: events.ScheduleEvent(EVENT_YMIRON_RANULF_ABILITY, 3000, 1); break;
|
||||
case 1: events.ScheduleEvent(EVENT_YMIRON_TORGYN_ABILITY, 3000, 1); break;
|
||||
case 2: events.ScheduleEvent(EVENT_YMIRON_BJORN_ABILITY, 3000, 1); break;
|
||||
case 3: events.ScheduleEvent(EVENT_YMIRON_HALDOR_ABILITY, 3000, 1); break;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
king->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
|
||||
summons.Summon(king);
|
||||
king->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
king->SetDisableGravity(true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->GetMotionMaster()->MoveChase(me->GetVictim());
|
||||
switch(BoatOrder[BoatNum - 1])
|
||||
{
|
||||
case 0:
|
||||
events.ScheduleEvent(EVENT_YMIRON_RANULF_ABILITY, 3000, 1);
|
||||
break;
|
||||
case 1:
|
||||
events.ScheduleEvent(EVENT_YMIRON_TORGYN_ABILITY, 3000, 1);
|
||||
break;
|
||||
case 2:
|
||||
events.ScheduleEvent(EVENT_YMIRON_BJORN_ABILITY, 3000, 1);
|
||||
break;
|
||||
case 3:
|
||||
events.ScheduleEvent(EVENT_YMIRON_HALDOR_ABILITY, 3000, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_BJORN_ABILITY:
|
||||
{
|
||||
if (Creature* sf = me->SummonCreature(NPC_SPIRIT_FOUNT, 385+rand()%10, -330+rand()%10, 104.756f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
|
||||
{
|
||||
summons.Summon(sf);
|
||||
sf->SetSpeed(MOVE_RUN, 0.4f);
|
||||
sf->AddAura(IsHeroic() ? SPELL_SPIRIT_FOUNT_H : SPELL_SPIRIT_FOUNT_N, sf);
|
||||
sf->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
sf->GetMotionMaster()->MoveFollow(me->GetVictim(), 0, rand_norm()*M_PI*2);
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_HALDOR_ABILITY:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SPIRIT_STRIKE_H : SPELL_SPIRIT_STRIKE_N, false);
|
||||
events.RepeatEvent(5000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_RANULF_ABILITY:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_SPIRIT_BURST_H : SPELL_SPIRIT_BURST_N, false);
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_TORGYN_ABILITY:
|
||||
{
|
||||
for(uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
if (Creature* as = me->SummonCreature(NPC_AVENGING_SPIRIT, me->GetPositionX()+rand()%10, me->GetPositionY()+rand()%10, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
if (Creature* sf = me->SummonCreature(NPC_SPIRIT_FOUNT, 385 + rand() % 10, -330 + rand() % 10, 104.756f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
|
||||
{
|
||||
summons.Summon(as);
|
||||
as->SetInCombatWithZone();
|
||||
summons.Summon(sf);
|
||||
sf->SetSpeed(MOVE_RUN, 0.4f);
|
||||
sf->AddAura(IsHeroic() ? SPELL_SPIRIT_FOUNT_H : SPELL_SPIRIT_FOUNT_N, sf);
|
||||
sf->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
sf->GetMotionMaster()->MoveFollow(me->GetVictim(), 0, rand_norm()*M_PI * 2);
|
||||
}
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_HALDOR_ABILITY:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SPIRIT_STRIKE_H : SPELL_SPIRIT_STRIKE_N, false);
|
||||
events.RepeatEvent(5000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_RANULF_ABILITY:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_SPIRIT_BURST_H : SPELL_SPIRIT_BURST_N, false);
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_TORGYN_ABILITY:
|
||||
{
|
||||
for(uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
if (Creature* as = me->SummonCreature(NPC_AVENGING_SPIRIT, me->GetPositionX() + rand() % 10, me->GetPositionY() + rand() % 10, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
{
|
||||
summons.Summon(as);
|
||||
as->SetInCombatWithZone();
|
||||
}
|
||||
}
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*pKiller*/)
|
||||
@@ -327,7 +334,7 @@ public:
|
||||
|
||||
void KilledUnit(Unit* /*pVictim*/)
|
||||
{
|
||||
if (urand(0,1))
|
||||
if (urand(0, 1))
|
||||
return;
|
||||
|
||||
Talk(SAY_SLAY);
|
||||
|
||||
@@ -45,36 +45,36 @@ public:
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SvalaSorrowgrave = 0;
|
||||
GortokPalehoof = 0;
|
||||
SkadiRuthless = 0;
|
||||
KingYmiron = 0;
|
||||
FrenziedWorgen = 0;
|
||||
RavenousFurbolg = 0;
|
||||
MassiveJormungar = 0;
|
||||
FerociousRhino = 0;
|
||||
Grauf = 0;
|
||||
SvalaSorrowgrave = 0;
|
||||
GortokPalehoof = 0;
|
||||
SkadiRuthless = 0;
|
||||
KingYmiron = 0;
|
||||
FrenziedWorgen = 0;
|
||||
RavenousFurbolg = 0;
|
||||
MassiveJormungar = 0;
|
||||
FerociousRhino = 0;
|
||||
Grauf = 0;
|
||||
|
||||
SvalaMirrorGUID = 0;
|
||||
StatisGenerator = 0;
|
||||
SkadiHits = 0;
|
||||
SkadiInRange = 0;
|
||||
SkadiRuthlessDoor= 0;
|
||||
YmironDoor = 0;
|
||||
FightStatus = 0;
|
||||
SvalaMirrorGUID = 0;
|
||||
StatisGenerator = 0;
|
||||
SkadiHits = 0;
|
||||
SkadiInRange = 0;
|
||||
SkadiRuthlessDoor = 0;
|
||||
YmironDoor = 0;
|
||||
FightStatus = 0;
|
||||
|
||||
svalaAchievement = false;
|
||||
skadiAchievement = false;
|
||||
ymironAchievement = false;
|
||||
|
||||
for(uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
Encounters[i] = NOT_STARTED;
|
||||
svalaAchievement = false;
|
||||
skadiAchievement = false;
|
||||
ymironAchievement = false;
|
||||
|
||||
for(uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
Encounters[i] = NOT_STARTED;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for(uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
if(Encounters[i] == IN_PROGRESS)
|
||||
if(Encounters[i] == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -83,15 +83,33 @@ public:
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case NPC_SVALA_SORROWGRAVE: SvalaSorrowgrave = pCreature->GetGUID(); break;
|
||||
case NPC_GORTOK_PALEHOOF: GortokPalehoof = pCreature->GetGUID(); break;
|
||||
case NPC_SKADI_THE_RUTHLESS: SkadiRuthless = pCreature->GetGUID(); break;
|
||||
case NPC_KING_YMIRON: KingYmiron = pCreature->GetGUID(); break;
|
||||
case NPC_FRENZIED_WORGEN: FrenziedWorgen = pCreature->GetGUID(); break;
|
||||
case NPC_RAVENOUS_FURBOLG: RavenousFurbolg = pCreature->GetGUID(); break;
|
||||
case NPC_MASSIVE_JORMUNGAR: MassiveJormungar = pCreature->GetGUID(); break;
|
||||
case NPC_FEROCIOUS_RHINO: FerociousRhino = pCreature->GetGUID(); break;
|
||||
case NPC_GARUF: Grauf = pCreature->GetGUID(); break;
|
||||
case NPC_SVALA_SORROWGRAVE:
|
||||
SvalaSorrowgrave = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_GORTOK_PALEHOOF:
|
||||
GortokPalehoof = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_SKADI_THE_RUTHLESS:
|
||||
SkadiRuthless = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_KING_YMIRON:
|
||||
KingYmiron = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_FRENZIED_WORGEN:
|
||||
FrenziedWorgen = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_RAVENOUS_FURBOLG:
|
||||
RavenousFurbolg = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_MASSIVE_JORMUNGAR:
|
||||
MassiveJormungar = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_FEROCIOUS_RHINO:
|
||||
FerociousRhino = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_GARUF:
|
||||
Grauf = pCreature->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,14 +120,14 @@ public:
|
||||
case GO_SKADI_THE_RUTHLESS_DOOR:
|
||||
SkadiRuthlessDoor = pGo->GetGUID();
|
||||
if (Encounters[DATA_SKADI_THE_RUTHLESS] == DONE)
|
||||
HandleGameObject(0,true,pGo);
|
||||
HandleGameObject(0, true, pGo);
|
||||
break;
|
||||
case GO_KING_YMIRON_DOOR:
|
||||
YmironDoor = pGo->GetGUID();
|
||||
if (Encounters[DATA_KING_YMIRON] == DONE)
|
||||
HandleGameObject(0,true,pGo);
|
||||
if (Encounters[DATA_KING_YMIRON] == DONE)
|
||||
HandleGameObject(0, true, pGo);
|
||||
break;
|
||||
case GO_GORK_PALEHOOF_SPHERE:
|
||||
case GO_GORK_PALEHOOF_SPHERE:
|
||||
StatisGenerator = pGo->GetGUID();
|
||||
break;
|
||||
case GO_SVALA_MIRROR:
|
||||
@@ -143,16 +161,16 @@ public:
|
||||
case DATA_SKADI_THE_RUTHLESS:
|
||||
if (data == DONE)
|
||||
{
|
||||
HandleGameObject(SkadiRuthlessDoor,true);
|
||||
HandleGameObject(SkadiRuthlessDoor, true);
|
||||
// Make ymiron attackable
|
||||
if (Creature *cr = instance->GetCreature(KingYmiron))
|
||||
if (Creature* cr = instance->GetCreature(KingYmiron))
|
||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
Encounters[type] = data;
|
||||
break;
|
||||
case DATA_KING_YMIRON:
|
||||
if (data == DONE)
|
||||
HandleGameObject(YmironDoor,true);
|
||||
HandleGameObject(YmironDoor, true);
|
||||
Encounters[type] = data;
|
||||
break;
|
||||
case SKADI_HITS:
|
||||
@@ -212,7 +230,8 @@ public:
|
||||
if (Encounters[i] == IN_PROGRESS)
|
||||
Encounters[i] = NOT_STARTED;
|
||||
|
||||
} else OUT_LOAD_INST_DATA_FAIL;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
@@ -221,12 +240,18 @@ public:
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SVALA_SORROWGRAVE: return Encounters[0];
|
||||
case DATA_GORTOK_PALEHOOF: return Encounters[1];
|
||||
case DATA_SKADI_THE_RUTHLESS: return Encounters[2];
|
||||
case DATA_KING_YMIRON: return Encounters[3];
|
||||
case SKADI_HITS: return SkadiHits;
|
||||
case SKADI_IN_RANGE: return SkadiInRange;
|
||||
case DATA_SVALA_SORROWGRAVE:
|
||||
return Encounters[0];
|
||||
case DATA_GORTOK_PALEHOOF:
|
||||
return Encounters[1];
|
||||
case DATA_SKADI_THE_RUTHLESS:
|
||||
return Encounters[2];
|
||||
case DATA_KING_YMIRON:
|
||||
return Encounters[3];
|
||||
case SKADI_HITS:
|
||||
return SkadiHits;
|
||||
case SKADI_IN_RANGE:
|
||||
return SkadiInRange;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -235,19 +260,32 @@ public:
|
||||
{
|
||||
switch(identifier)
|
||||
{
|
||||
case DATA_SVALA_SORROWGRAVE: return SvalaSorrowgrave;
|
||||
case DATA_GORTOK_PALEHOOF: return GortokPalehoof;
|
||||
case DATA_SKADI_THE_RUTHLESS: return SkadiRuthless;
|
||||
case DATA_KING_YMIRON: return KingYmiron;
|
||||
case DATA_NPC_FRENZIED_WORGEN: return FrenziedWorgen;
|
||||
case DATA_NPC_RAVENOUS_FURBOLG: return RavenousFurbolg;
|
||||
case DATA_NPC_MASSIVE_JORMUNGAR: return MassiveJormungar;
|
||||
case DATA_NPC_FEROCIOUS_RHINO: return FerociousRhino;
|
||||
case YMIRON_DOOR: return YmironDoor;
|
||||
case STATIS_GENERATOR: return StatisGenerator;
|
||||
case SKADI_DOOR: return SkadiRuthlessDoor;
|
||||
case DATA_GRAUF: return Grauf;
|
||||
case GO_SVALA_MIRROR: return SvalaMirrorGUID;
|
||||
case DATA_SVALA_SORROWGRAVE:
|
||||
return SvalaSorrowgrave;
|
||||
case DATA_GORTOK_PALEHOOF:
|
||||
return GortokPalehoof;
|
||||
case DATA_SKADI_THE_RUTHLESS:
|
||||
return SkadiRuthless;
|
||||
case DATA_KING_YMIRON:
|
||||
return KingYmiron;
|
||||
case DATA_NPC_FRENZIED_WORGEN:
|
||||
return FrenziedWorgen;
|
||||
case DATA_NPC_RAVENOUS_FURBOLG:
|
||||
return RavenousFurbolg;
|
||||
case DATA_NPC_MASSIVE_JORMUNGAR:
|
||||
return MassiveJormungar;
|
||||
case DATA_NPC_FEROCIOUS_RHINO:
|
||||
return FerociousRhino;
|
||||
case YMIRON_DOOR:
|
||||
return YmironDoor;
|
||||
case STATIS_GENERATOR:
|
||||
return StatisGenerator;
|
||||
case SKADI_DOOR:
|
||||
return SkadiRuthlessDoor;
|
||||
case DATA_GRAUF:
|
||||
return Grauf;
|
||||
case GO_SVALA_MIRROR:
|
||||
return SvalaMirrorGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -15,7 +15,7 @@ enum Data
|
||||
DATA_NPC_RAVENOUS_FURBOLG = 11,
|
||||
DATA_NPC_MASSIVE_JORMUNGAR = 12,
|
||||
DATA_NPC_FEROCIOUS_RHINO = 13,
|
||||
|
||||
|
||||
YMIRON_DOOR = 20,
|
||||
STATIS_GENERATOR = 21,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user