mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-23 05:36:23 +00:00
refactor(Core/Scripts): restyle scripts lib with astyle (#3467)
This commit is contained in:
@@ -95,18 +95,18 @@ public:
|
||||
if( pInstance )
|
||||
pInstance->SetData(BOSS_ARGENT_CHALLENGE, NOT_STARTED);
|
||||
}
|
||||
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
{
|
||||
if( type == POINT_MOTION_TYPE && id == 1 )
|
||||
me->SetFacingTo(3*M_PI/2);
|
||||
me->SetFacingTo(3 * M_PI / 2);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if( who->GetTypeId() == TYPEID_PLAYER )
|
||||
{
|
||||
if( urand(0,1) )
|
||||
if( urand(0, 1) )
|
||||
Talk(TEXT_EADRIC_SLAIN_1);
|
||||
else
|
||||
Talk(TEXT_EADRIC_SLAIN_2);
|
||||
@@ -130,7 +130,7 @@ public:
|
||||
me->CastSpell(me, 68197, true);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
if( damage >= me->GetHealth() )
|
||||
{
|
||||
@@ -226,18 +226,18 @@ public:
|
||||
if( pInstance )
|
||||
pInstance->SetData(BOSS_ARGENT_CHALLENGE, NOT_STARTED);
|
||||
}
|
||||
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
{
|
||||
if( type == POINT_MOTION_TYPE && id == 1 )
|
||||
me->SetFacingTo(3*M_PI/2);
|
||||
me->SetFacingTo(3 * M_PI / 2);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if( who->GetTypeId() == TYPEID_PLAYER )
|
||||
{
|
||||
if( urand(0,1) )
|
||||
if( urand(0, 1) )
|
||||
Talk(TEXT_PALETRESS_SLAIN_1);
|
||||
else
|
||||
Talk(TEXT_PALETRESS_SLAIN_2);
|
||||
@@ -247,8 +247,8 @@ public:
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_HOLY_FIRE, urand(9000,12000));
|
||||
events.ScheduleEvent(EVENT_SPELL_SMITE, urand(2000,3000));
|
||||
events.ScheduleEvent(EVENT_SPELL_HOLY_FIRE, urand(9000, 12000));
|
||||
events.ScheduleEvent(EVENT_SPELL_SMITE, urand(2000, 3000));
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
Talk(TEXT_PALETRESS_AGGRO);
|
||||
if( pInstance )
|
||||
@@ -274,7 +274,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
//if( me->HasAura(SPELL_SHIELD) )
|
||||
// return;
|
||||
@@ -311,8 +311,8 @@ public:
|
||||
|
||||
void SummonMemory()
|
||||
{
|
||||
uint8 uiRandom = urand(0,25);
|
||||
uint32 uiSpells[26] = {66704,66705,66706,66707,66709,66710,66711,66712,66713,66714,66715,66708,66708,66691,66692,66694,66695,66696,66697,66698,66699,66700,66701,66702,66703,66543};
|
||||
uint8 uiRandom = urand(0, 25);
|
||||
uint32 uiSpells[26] = {66704, 66705, 66706, 66707, 66709, 66710, 66711, 66712, 66713, 66714, 66715, 66708, 66708, 66691, 66692, 66694, 66695, 66696, 66697, 66698, 66699, 66700, 66701, 66702, 66703, 66543};
|
||||
me->CastSpell(me, uiSpells[uiRandom], true);
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ public:
|
||||
me->CastSpell((Unit*)NULL, SPELL_SUMMON_MEMORY, false);
|
||||
SummonMemory();
|
||||
me->CastSpell((Unit*)NULL, SPELL_CONFESS, false);
|
||||
events.ScheduleEvent(EVENT_SPELL_RENEW, urand(6000,8000));
|
||||
events.ScheduleEvent(EVENT_SPELL_RENEW, urand(6000, 8000));
|
||||
summoned = true;
|
||||
return;
|
||||
}
|
||||
@@ -347,12 +347,12 @@ public:
|
||||
case EVENT_SPELL_SMITE:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true) )
|
||||
me->CastSpell(target, SPELL_SMITE, false);
|
||||
events.RepeatEvent(urand(3000,4000));
|
||||
events.RepeatEvent(urand(3000, 4000));
|
||||
break;
|
||||
case EVENT_SPELL_HOLY_FIRE:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f, true) )
|
||||
me->CastSpell(target, SPELL_HOLY_FIRE, false);
|
||||
events.RepeatEvent(urand(9000,12000));
|
||||
events.RepeatEvent(urand(9000, 12000));
|
||||
break;
|
||||
case EVENT_SPELL_RENEW:
|
||||
if( !MemoryGUID )
|
||||
@@ -360,12 +360,12 @@ public:
|
||||
events.PopEvent();
|
||||
break;
|
||||
}
|
||||
if( urand(0,1) )
|
||||
if( urand(0, 1) )
|
||||
me->CastSpell(me, SPELL_RENEW, false);
|
||||
else if( Creature* memory = ObjectAccessor::GetCreature(*me, MemoryGUID) )
|
||||
if( memory->IsAlive() )
|
||||
me->CastSpell(memory, SPELL_RENEW, false);
|
||||
events.RepeatEvent(urand(15000,17000));
|
||||
events.RepeatEvent(urand(15000, 17000));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(EVENT_SPELL_OLD_WOUNDS, 8000);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOWS_PAST, 4000);
|
||||
events.ScheduleEvent(EVENT_SPELL_WAKING_NIGHTMARE, urand(20000,30000));
|
||||
events.ScheduleEvent(EVENT_SPELL_WAKING_NIGHTMARE, urand(20000, 30000));
|
||||
events.PopEvent();
|
||||
break;
|
||||
case EVENT_SPELL_OLD_WOUNDS:
|
||||
@@ -447,7 +447,7 @@ public:
|
||||
case EVENT_SPELL_SHADOWS_PAST:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true) )
|
||||
me->CastSpell(target, SPELL_SHADOWS_PAST, false);
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
break;
|
||||
case EVENT_SPELL_WAKING_NIGHTMARE:
|
||||
me->CastSpell(me, SPELL_WAKING_NIGHTMARE, false);
|
||||
@@ -471,7 +471,7 @@ enum ArgentSoldierSpells
|
||||
// monk
|
||||
SPELL_FLURRY_OF_BLOWS = 67233,
|
||||
SPELL_PUMMEL = 67235,
|
||||
SPELL_DIVINE_SHIELD_H = 67251,
|
||||
SPELL_DIVINE_SHIELD_H = 67251,
|
||||
SPELL_FINAL_MEDITATION_H = 67255,
|
||||
|
||||
// priestess
|
||||
@@ -561,13 +561,13 @@ public:
|
||||
switch( uiType )
|
||||
{
|
||||
case 0:
|
||||
AddWaypoint(1,716.321f,647.047f,411.93f);
|
||||
AddWaypoint(1, 716.321f, 647.047f, 411.93f);
|
||||
break;
|
||||
case 1:
|
||||
AddWaypoint(1,742.44f,650.29f,411.79f);
|
||||
AddWaypoint(1, 742.44f, 650.29f, 411.79f);
|
||||
break;
|
||||
case 2:
|
||||
AddWaypoint(1,772.6314f,651.7f,411.93f);
|
||||
AddWaypoint(1, 772.6314f, 651.7f, 411.93f);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -575,13 +575,13 @@ public:
|
||||
switch( uiType )
|
||||
{
|
||||
case 0:
|
||||
AddWaypoint(1,717.86f,649.0f,411.923f);
|
||||
AddWaypoint(1, 717.86f, 649.0f, 411.923f);
|
||||
break;
|
||||
case 1:
|
||||
AddWaypoint(1,746.73f,650.24f,411.56f);
|
||||
AddWaypoint(1, 746.73f, 650.24f, 411.56f);
|
||||
break;
|
||||
case 2:
|
||||
AddWaypoint(1,775.567f,648.26f,411.93f);
|
||||
AddWaypoint(1, 775.567f, 648.26f, 411.93f);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -589,19 +589,19 @@ public:
|
||||
switch( uiType )
|
||||
{
|
||||
case 0:
|
||||
AddWaypoint(1,719.872f,650.94f,411.93f);
|
||||
AddWaypoint(1, 719.872f, 650.94f, 411.93f);
|
||||
break;
|
||||
case 1:
|
||||
AddWaypoint(1,750.72f,650.20f,411.77f);
|
||||
AddWaypoint(1, 750.72f, 650.20f, 411.77f);
|
||||
break;
|
||||
case 2:
|
||||
AddWaypoint(1,777.78f,645.70f,411.93f);
|
||||
AddWaypoint(1, 777.78f, 645.70f, 411.93f);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Start(false,true,0);
|
||||
Start(false, true, 0);
|
||||
uiWaypoint = uiType;
|
||||
}
|
||||
|
||||
@@ -610,7 +610,7 @@ public:
|
||||
if( bCheck && damage >= me->GetHealth() )
|
||||
{
|
||||
bCheck = false;
|
||||
damage = me->GetHealth()-1;
|
||||
damage = me->GetHealth() - 1;
|
||||
events.DelayEvents(10000);
|
||||
me->CastSpell(me, SPELL_DIVINE_SHIELD_H, true);
|
||||
me->CastSpell((Unit*)NULL, SPELL_FINAL_MEDITATION_H, true);
|
||||
@@ -628,19 +628,19 @@ public:
|
||||
bCheck = true;
|
||||
break;
|
||||
case NPC_PRIESTESS:
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_HOLY_SMITE, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN, urand(3000,6000));
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT, urand(8000,15000));
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_HOLY_SMITE, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN, urand(3000, 6000));
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT, urand(8000, 15000));
|
||||
if( IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_MIND_CONTROL_H, 12000);
|
||||
break;
|
||||
case NPC_ARGENT_LIGHTWIELDER:
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT, urand(12000,15000));
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_CLEAVE, urand(3000,5000));
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT, urand(12000, 15000));
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_CLEAVE, urand(3000, 5000));
|
||||
if( IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H, urand(8000,12000));
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H, urand(8000, 12000));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
@@ -662,32 +662,32 @@ public:
|
||||
|
||||
case EVENT_MONK_SPELL_FLURRY_OF_BLOWS:
|
||||
me->CastSpell(me, SPELL_FLURRY_OF_BLOWS, false);
|
||||
events.RepeatEvent(urand(12000,18000));
|
||||
events.RepeatEvent(urand(12000, 18000));
|
||||
break;
|
||||
case EVENT_MONK_SPELL_PUMMEL:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_PUMMEL, false);
|
||||
events.RepeatEvent(urand(8000,11000));
|
||||
events.RepeatEvent(urand(8000, 11000));
|
||||
break;
|
||||
|
||||
case EVENT_PRIESTESS_SPELL_HOLY_SMITE:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_HOLY_SMITE, false);
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
break;
|
||||
case EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHADOW_WORD_PAIN, false);
|
||||
events.RepeatEvent(urand(12000,15000));
|
||||
events.RepeatEvent(urand(12000, 15000));
|
||||
break;
|
||||
case EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT:
|
||||
me->CastSpell((Unit*)NULL, SPELL_FOUNTAIN_OF_LIGHT, false);
|
||||
events.RepeatEvent(urand(35000,45000));
|
||||
events.RepeatEvent(urand(35000, 45000));
|
||||
break;
|
||||
case EVENT_PRIESTESS_SPELL_MIND_CONTROL_H:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30.0f, true) )
|
||||
me->CastSpell(target, SPELL_MIND_CONTROL_H, false);
|
||||
events.RepeatEvent(urand(22000,30000));
|
||||
events.RepeatEvent(urand(22000, 30000));
|
||||
break;
|
||||
|
||||
case EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT:
|
||||
@@ -696,18 +696,18 @@ public:
|
||||
if( !target )
|
||||
target = me;
|
||||
me->CastSpell(target, SPELL_BLAZING_LIGHT, false);
|
||||
events.RepeatEvent(urand(8000,12000));
|
||||
events.RepeatEvent(urand(8000, 12000));
|
||||
}
|
||||
break;
|
||||
case EVENT_LIGHTWIELDER_SPELL_CLEAVE:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
break;
|
||||
case EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE_H, false);
|
||||
events.RepeatEvent(urand(12000,15000));
|
||||
events.RepeatEvent(urand(12000, 15000));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -730,103 +730,103 @@ public:
|
||||
|
||||
class spell_eadric_radiance : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_eadric_radiance() : SpellScriptLoader("spell_eadric_radiance") { }
|
||||
public:
|
||||
spell_eadric_radiance() : SpellScriptLoader("spell_eadric_radiance") { }
|
||||
|
||||
class spell_eadric_radiance_SpellScript : public SpellScript
|
||||
class spell_eadric_radiance_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_eadric_radiance_SpellScript);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
PrepareSpellScript(spell_eadric_radiance_SpellScript);
|
||||
std::list<WorldObject*> tmplist;
|
||||
for( std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
|
||||
if( (*itr)->ToUnit()->HasInArc(M_PI, GetCaster()) )
|
||||
tmplist.push_back(*itr);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
std::list<WorldObject*> tmplist;
|
||||
for( std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
|
||||
if( (*itr)->ToUnit()->HasInArc(M_PI, GetCaster()) )
|
||||
tmplist.push_back(*itr);
|
||||
|
||||
targets.clear();
|
||||
for( std::list<WorldObject*>::iterator itr = tmplist.begin(); itr != tmplist.end(); ++itr )
|
||||
targets.push_back(*itr);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_eadric_radiance_SpellScript();
|
||||
targets.clear();
|
||||
for( std::list<WorldObject*>::iterator itr = tmplist.begin(); itr != tmplist.end(); ++itr )
|
||||
targets.push_back(*itr);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_eadric_radiance_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_toc5_light_rain : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_toc5_light_rain() : SpellScriptLoader("spell_toc5_light_rain") { }
|
||||
public:
|
||||
spell_toc5_light_rain() : SpellScriptLoader("spell_toc5_light_rain") { }
|
||||
|
||||
class spell_toc5_light_rain_SpellScript : public SpellScript
|
||||
class spell_toc5_light_rain_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_toc5_light_rain_SpellScript);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
PrepareSpellScript(spell_toc5_light_rain_SpellScript);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
for( std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); )
|
||||
{
|
||||
for( std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); )
|
||||
{
|
||||
if ((*itr)->GetTypeId() == TYPEID_UNIT)
|
||||
if ((*itr)->ToCreature()->GetEntry() == NPC_FOUNTAIN_OF_LIGHT)
|
||||
{
|
||||
targets.erase(itr);
|
||||
itr = targets.begin();
|
||||
continue;
|
||||
}
|
||||
++itr;
|
||||
}
|
||||
if ((*itr)->GetTypeId() == TYPEID_UNIT)
|
||||
if ((*itr)->ToCreature()->GetEntry() == NPC_FOUNTAIN_OF_LIGHT)
|
||||
{
|
||||
targets.erase(itr);
|
||||
itr = targets.begin();
|
||||
continue;
|
||||
}
|
||||
++itr;
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_toc5_light_rain_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_toc5_light_rain_SpellScript();
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_toc5_light_rain_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_toc5_light_rain_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_reflective_shield : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_reflective_shield() : SpellScriptLoader("spell_reflective_shield") { }
|
||||
public:
|
||||
spell_reflective_shield() : SpellScriptLoader("spell_reflective_shield") { }
|
||||
|
||||
class spell_reflective_shield_AuraScript : public AuraScript
|
||||
class spell_reflective_shield_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_reflective_shield_AuraScript)
|
||||
|
||||
void HandleAfterEffectAbsorb(AuraEffect* /*aurEff*/, DamageInfo& dmgInfo, uint32& absorbAmount)
|
||||
{
|
||||
PrepareAuraScript(spell_reflective_shield_AuraScript)
|
||||
|
||||
void HandleAfterEffectAbsorb(AuraEffect * /*aurEff*/, DamageInfo & dmgInfo, uint32 & absorbAmount)
|
||||
{
|
||||
if( Unit* attacker = dmgInfo.GetAttacker() )
|
||||
if( GetOwner() && attacker->GetGUID() != GetOwner()->GetGUID() )
|
||||
{
|
||||
int32 damage = (int32)(absorbAmount*0.25f);
|
||||
GetOwner()->ToUnit()->CastCustomSpell(attacker, 33619, &damage, nullptr, nullptr, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
AfterEffectAbsorb += AuraEffectAbsorbFn(spell_reflective_shield_AuraScript::HandleAfterEffectAbsorb, EFFECT_0);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_reflective_shield_AuraScript();
|
||||
if( Unit* attacker = dmgInfo.GetAttacker() )
|
||||
if( GetOwner() && attacker->GetGUID() != GetOwner()->GetGUID() )
|
||||
{
|
||||
int32 damage = (int32)(absorbAmount * 0.25f);
|
||||
GetOwner()->ToUnit()->CastCustomSpell(attacker, 33619, &damage, nullptr, nullptr, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
AfterEffectAbsorb += AuraEffectAbsorbFn(spell_reflective_shield_AuraScript::HandleAfterEffectAbsorb, EFFECT_0);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_reflective_shield_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_argent_challenge()
|
||||
|
||||
@@ -122,7 +122,7 @@ public:
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
@@ -163,16 +163,16 @@ public:
|
||||
|
||||
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);
|
||||
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.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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
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);
|
||||
@@ -200,10 +200,10 @@ public:
|
||||
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));
|
||||
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);
|
||||
@@ -244,31 +244,31 @@ public:
|
||||
case EVENT_SPELL_PLAGUE_STRIKE:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_PLAGUE_STRIKE, false);
|
||||
events.RepeatEvent(urand(10000,12000));
|
||||
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));
|
||||
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));
|
||||
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));
|
||||
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));
|
||||
events.RepeatEvent(urand(14000, 17000));
|
||||
break;
|
||||
case EVENT_SPELL_DEATH_BITE:
|
||||
me->CastSpell((Unit*)NULL, SPELL_DEATH_BITE, false);
|
||||
events.RepeatEvent(urand(2000,4000));
|
||||
events.RepeatEvent(urand(2000, 4000));
|
||||
break;
|
||||
case EVENT_SPELL_MARKED_DEATH:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.000000f, true) )
|
||||
@@ -294,7 +294,7 @@ public:
|
||||
{
|
||||
if( victim->GetTypeId() == TYPEID_PLAYER )
|
||||
{
|
||||
if( urand(0,1) )
|
||||
if( urand(0, 1) )
|
||||
Talk(TEXT_BK_SLAIN_1);
|
||||
else
|
||||
Talk(TEXT_BK_SLAIN_2);
|
||||
@@ -312,7 +312,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature *pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
{
|
||||
return new boss_black_knightAI (pCreature);
|
||||
}
|
||||
@@ -329,7 +329,7 @@ public:
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Start(false,true,0,NULL);
|
||||
Start(false, true, 0, NULL);
|
||||
SetDespawnAtEnd(true);
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ public:
|
||||
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
|
||||
events.RescheduleEvent(2, urand(3000, 4000)); // claw
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, const SpellInfo* spell)
|
||||
@@ -457,7 +457,7 @@ public:
|
||||
case 2: // claw
|
||||
if (Unit* target = me->GetVictim())
|
||||
me->CastSpell(target, SPELL_CLAW_N, false);
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -465,7 +465,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature *pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
{
|
||||
return new npc_black_knight_ghoulAI (pCreature);
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ enum ChampionEvents
|
||||
|
||||
EVENT_ROGUE_SPELL_EVISCERATE,
|
||||
EVENT_ROGUE_SPELL_FAN_OF_KNIVES,
|
||||
EVENT_ROGUE_SPELL_POISON_BOTTLE,
|
||||
EVENT_ROGUE_SPELL_POISON_BOTTLE,
|
||||
|
||||
EVENT_WARRIOR_SPELL_MORTAL_STRIKE,
|
||||
EVENT_WARRIOR_SPELL_BLADESTORM,
|
||||
@@ -178,7 +178,7 @@ public:
|
||||
{
|
||||
me->RemoveAura(SPELL_PLAYER_VEHICLE_DEFEND);
|
||||
who->RemoveAura(SPELL_PLAYER_VEHICLE_DEFEND);
|
||||
for (uint8 i=0; i<3; ++i)
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
who->RemoveAura(SPELL_SHIELD_LEVEL_1_VISUAL + i);
|
||||
}
|
||||
}
|
||||
@@ -233,9 +233,9 @@ public:
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500,4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000,8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000,5000));
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000));
|
||||
me->CastSpell(me, SPELL_TRAMPLE_AURA, true);
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ public:
|
||||
case EVENT_MOUNT_CHARGE:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
{
|
||||
@@ -279,8 +279,8 @@ public:
|
||||
}
|
||||
}
|
||||
if( !LIST.empty() )
|
||||
{
|
||||
uint8 rnd = LIST.size()>1 ? urand(0,LIST.size()-1) : 0;
|
||||
{
|
||||
uint8 rnd = LIST.size() > 1 ? urand(0, LIST.size() - 1) : 0;
|
||||
if( Unit* target = ObjectAccessor::GetUnit(*me, LIST.at(rnd)) )
|
||||
{
|
||||
me->getThreatManager().resetAllAggro();
|
||||
@@ -289,13 +289,13 @@ public:
|
||||
me->CastSpell(target, SPELL_MINIONS_CHARGE, false);
|
||||
}
|
||||
}
|
||||
events.RepeatEvent(urand(4500,6000));
|
||||
events.RepeatEvent(urand(4500, 6000));
|
||||
}
|
||||
break;
|
||||
case EVENT_SHIELD_BREAKER:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
{
|
||||
@@ -306,18 +306,18 @@ public:
|
||||
LIST.push_back(mount->GetGUID());
|
||||
}
|
||||
if( !LIST.empty() )
|
||||
{
|
||||
uint8 rnd = LIST.size()>1 ? urand(0,LIST.size()-1) : 0;
|
||||
{
|
||||
uint8 rnd = LIST.size() > 1 ? urand(0, LIST.size() - 1) : 0;
|
||||
if( Unit* target = ObjectAccessor::GetCreature(*me, LIST.at(rnd)) )
|
||||
me->CastSpell(target, SPELL_NPC_SHIELD_BREAKER, false);
|
||||
}
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
}
|
||||
break;
|
||||
case EVENT_THRUST:
|
||||
if( me->GetVictim() && me->GetExactDist(me->GetVictim()) <= 5.5f )
|
||||
me->CastSpell(me->GetVictim(), SPELL_PLAYER_VEHICLE_THRUST, false);
|
||||
events.RepeatEvent(urand(3000,5000));
|
||||
events.RepeatEvent(urand(3000, 5000));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -351,9 +351,9 @@ public:
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500,4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000,8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000,5000));
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000));
|
||||
|
||||
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_CHARM, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISORIENTED, true);
|
||||
@@ -416,9 +416,9 @@ public:
|
||||
case NPC_COLOSOS: // Colosos
|
||||
case NPC_RUNOK: // Runok Wildmane
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_CHAIN_LIGHTNING, 16000);
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_EARTH_SHIELD, urand(30000,35000));
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_EARTH_SHIELD, urand(30000, 35000));
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_HEALING_WAVE, 12000);
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_HEX_OF_MENDING, urand(20000,25000));
|
||||
events.RescheduleEvent(EVENT_SHAMAN_SPELL_HEX_OF_MENDING, urand(20000, 25000));
|
||||
break;
|
||||
case NPC_JAELYNE: // Jaelyne Evensong
|
||||
case NPC_ZULTORE: // Zul'tore
|
||||
@@ -434,8 +434,8 @@ public:
|
||||
break;
|
||||
case NPC_JACOB: // Marshal Jacob Alerius
|
||||
case NPC_MOKRA: // Mokra the Skullcrusher
|
||||
events.RescheduleEvent(EVENT_WARRIOR_SPELL_MORTAL_STRIKE, urand(8000,12000));
|
||||
events.RescheduleEvent(EVENT_WARRIOR_SPELL_BLADESTORM, urand(15000,20000));
|
||||
events.RescheduleEvent(EVENT_WARRIOR_SPELL_MORTAL_STRIKE, urand(8000, 12000));
|
||||
events.RescheduleEvent(EVENT_WARRIOR_SPELL_BLADESTORM, urand(15000, 20000));
|
||||
events.RescheduleEvent(EVENT_WARRIOR_SPELL_INTERCEPT, 7000);
|
||||
//events.RescheduleEvent(EVENT_WARRIOR_SPELL_ROLLING_THROW, x);
|
||||
break;
|
||||
@@ -446,7 +446,7 @@ public:
|
||||
|
||||
void AddCreatureAddonAuras()
|
||||
{
|
||||
CreatureAddon const *cainfo = me->GetCreatureAddon();
|
||||
CreatureAddon const* cainfo = me->GetCreatureAddon();
|
||||
if (!cainfo)
|
||||
return;
|
||||
|
||||
@@ -454,7 +454,7 @@ public:
|
||||
{
|
||||
for (std::vector<uint32>::const_iterator itr = cainfo->auras.begin(); itr != cainfo->auras.end(); ++itr)
|
||||
{
|
||||
SpellInfo const *AdditionalSpellInfo = sSpellMgr->GetSpellInfo(*itr);
|
||||
SpellInfo const* AdditionalSpellInfo = sSpellMgr->GetSpellInfo(*itr);
|
||||
if (!AdditionalSpellInfo)
|
||||
continue;
|
||||
|
||||
@@ -496,27 +496,27 @@ public:
|
||||
case 0:
|
||||
if (uiData == 0) // 1 == short version
|
||||
{
|
||||
AddWaypoint(0,747.36f,634.07f,411.572f);
|
||||
AddWaypoint(1,780.43f,607.15f,411.82f);
|
||||
AddWaypoint(0, 747.36f, 634.07f, 411.572f);
|
||||
AddWaypoint(1, 780.43f, 607.15f, 411.82f);
|
||||
}
|
||||
AddWaypoint(2,785.99f,599.41f,411.92f);
|
||||
AddWaypoint(3,778.44f,601.64f,411.79f);
|
||||
AddWaypoint(2, 785.99f, 599.41f, 411.92f);
|
||||
AddWaypoint(3, 778.44f, 601.64f, 411.79f);
|
||||
break;
|
||||
case 1:
|
||||
if (uiData == 0) // 1 == short version
|
||||
{
|
||||
AddWaypoint(0,747.35f,634.07f,411.57f);
|
||||
AddWaypoint(1,768.72f,581.01f,411.92f);
|
||||
AddWaypoint(0, 747.35f, 634.07f, 411.57f);
|
||||
AddWaypoint(1, 768.72f, 581.01f, 411.92f);
|
||||
}
|
||||
AddWaypoint(2,763.55f,590.52f,411.71f);
|
||||
AddWaypoint(2, 763.55f, 590.52f, 411.71f);
|
||||
break;
|
||||
case 2:
|
||||
if (uiData == 0) // 1 == short version
|
||||
{
|
||||
AddWaypoint(0,747.35f,634.07f,411.57f);
|
||||
AddWaypoint(1,784.02f,645.33f,412.39f);
|
||||
AddWaypoint(0, 747.35f, 634.07f, 411.57f);
|
||||
AddWaypoint(1, 784.02f, 645.33f, 412.39f);
|
||||
}
|
||||
AddWaypoint(2,775.67f,641.91f,411.91f);
|
||||
AddWaypoint(2, 775.67f, 641.91f, 411.91f);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@@ -525,7 +525,7 @@ public:
|
||||
Start(false, true, 0, nullptr);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
|
||||
{
|
||||
if( MountPhase )
|
||||
{
|
||||
@@ -534,7 +534,7 @@ public:
|
||||
else if( damage >= me->GetHealth() )
|
||||
{
|
||||
events.Reset();
|
||||
damage = me->GetHealth()-1;
|
||||
damage = me->GetHealth() - 1;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveAllAuras();
|
||||
AddCreatureAddonAuras();
|
||||
@@ -563,7 +563,7 @@ public:
|
||||
if( damage >= me->GetHealth() )
|
||||
{
|
||||
events.Reset();
|
||||
damage = me->GetHealth()-1;
|
||||
damage = me->GetHealth() - 1;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveAllAuras();
|
||||
AddCreatureAddonAuras();
|
||||
@@ -585,7 +585,7 @@ public:
|
||||
if( !pInstance )
|
||||
return;
|
||||
|
||||
if( (i==2 && (BossOrder==1 || BossOrder==2)) || (i==3 && BossOrder==0) )
|
||||
if( (i == 2 && (BossOrder == 1 || BossOrder == 2)) || (i == 3 && BossOrder == 0) )
|
||||
pInstance->SetData(DATA_GRAND_CHAMPION_REACHED_DEST, BossOrder);
|
||||
}
|
||||
|
||||
@@ -597,7 +597,7 @@ public:
|
||||
if( type == POINT_MOTION_TYPE )
|
||||
{
|
||||
if( id == 5 )
|
||||
me->SetFacingTo(3*M_PI/2);
|
||||
me->SetFacingTo(3 * M_PI / 2);
|
||||
else if( id == 7 ) // reached new mount!
|
||||
{
|
||||
if( NewMountGUID )
|
||||
@@ -610,9 +610,9 @@ public:
|
||||
me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true);
|
||||
me->SetRegeneratingHealth(true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500,4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000,8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000,5000));
|
||||
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000));
|
||||
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000));
|
||||
events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000));
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if( Unit* target = me->SelectNearestTarget(200.0f) )
|
||||
@@ -649,10 +649,10 @@ public:
|
||||
|
||||
if ( !UpdateVictim() && !NewMountGUID )
|
||||
return;
|
||||
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if( me->HasUnitState(UNIT_STATE_CASTING) || ((me->GetEntry()==NPC_JACOB || me->GetEntry()==NPC_MOKRA) && me->HasAura(SPELL_BLADESTORM)) )
|
||||
if( me->HasUnitState(UNIT_STATE_CASTING) || ((me->GetEntry() == NPC_JACOB || me->GetEntry() == NPC_MOKRA) && me->HasAura(SPELL_BLADESTORM)) )
|
||||
return;
|
||||
|
||||
switch( events.GetEvent() )
|
||||
@@ -666,12 +666,12 @@ public:
|
||||
events.RepeatEvent(200);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// hackfix, trample won't hit grand champions because of UNIT_FLAG_NON_ATTACKABLE
|
||||
if( pInstance )
|
||||
{
|
||||
bool trample = false;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( me->GetExactDist(plr) <= 5.0f )
|
||||
@@ -719,7 +719,7 @@ public:
|
||||
case EVENT_MOUNT_CHARGE:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
{
|
||||
@@ -735,7 +735,7 @@ public:
|
||||
}
|
||||
if( !LIST.empty() )
|
||||
{
|
||||
uint8 rnd = LIST.size()>1 ? urand(0,LIST.size()-1) : 0;
|
||||
uint8 rnd = LIST.size() > 1 ? urand(0, LIST.size() - 1) : 0;
|
||||
if( Unit* target = ObjectAccessor::GetUnit(*me, LIST.at(rnd)) )
|
||||
{
|
||||
me->getThreatManager().resetAllAggro();
|
||||
@@ -744,13 +744,13 @@ public:
|
||||
me->CastSpell(target, SPELL_MINIONS_CHARGE, false);
|
||||
}
|
||||
}
|
||||
events.RepeatEvent(urand(4500,6000));
|
||||
events.RepeatEvent(urand(4500, 6000));
|
||||
}
|
||||
break;
|
||||
case EVENT_SHIELD_BREAKER:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
{
|
||||
@@ -762,18 +762,18 @@ public:
|
||||
}
|
||||
if( !LIST.empty() )
|
||||
{
|
||||
uint8 rnd = LIST.size()>1 ? urand(0,LIST.size()-1) : 0;
|
||||
uint8 rnd = LIST.size() > 1 ? urand(0, LIST.size() - 1) : 0;
|
||||
if( Unit* target = ObjectAccessor::GetCreature(*me, LIST.at(rnd)) )
|
||||
me->CastSpell(target, SPELL_NPC_SHIELD_BREAKER, false);
|
||||
}
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
}
|
||||
break;
|
||||
case EVENT_THRUST:
|
||||
if( Unit* victim = me->GetVictim() )
|
||||
if( me->GetExactDist(victim) <= 6.0f )
|
||||
me->CastSpell(victim, SPELL_PLAYER_VEHICLE_THRUST, false);
|
||||
events.RepeatEvent(urand(3000,5000));
|
||||
events.RepeatEvent(urand(3000, 5000));
|
||||
break;
|
||||
|
||||
/******************* MAGE *******************/
|
||||
@@ -805,12 +805,12 @@ public:
|
||||
break;
|
||||
case EVENT_SHAMAN_SPELL_EARTH_SHIELD:
|
||||
me->CastSpell(me, SPELL_EARTH_SHIELD, false);
|
||||
events.RepeatEvent(urand(30000,35000));
|
||||
events.RepeatEvent(urand(30000, 35000));
|
||||
break;
|
||||
case EVENT_SHAMAN_SPELL_HEALING_WAVE:
|
||||
{
|
||||
Unit* target = nullptr;
|
||||
if( urand(0,1) )
|
||||
if( urand(0, 1) )
|
||||
{
|
||||
target = DoSelectLowestHpFriendly(40.0f);
|
||||
if( !target )
|
||||
@@ -825,7 +825,7 @@ public:
|
||||
case EVENT_SHAMAN_SPELL_HEX_OF_MENDING:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_HEX_OF_MENDING, false);
|
||||
events.RepeatEvent(urand(20000,25000));
|
||||
events.RepeatEvent(urand(20000, 25000));
|
||||
break;
|
||||
/**************** SHAMAN END ****************/
|
||||
|
||||
@@ -835,7 +835,7 @@ public:
|
||||
break;
|
||||
case EVENT_HUNTER_SPELL_LIGHTNING_ARROWS:
|
||||
me->CastSpell((Unit*)NULL, SPELL_LIGHTNING_ARROWS, false);
|
||||
events.RepeatEvent(urand(20000,25000));
|
||||
events.RepeatEvent(urand(20000, 25000));
|
||||
break;
|
||||
case EVENT_HUNTER_SPELL_MULTI_SHOT:
|
||||
{
|
||||
@@ -869,7 +869,7 @@ public:
|
||||
}
|
||||
UnitTargetGUID = 0;
|
||||
}
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
}
|
||||
break;
|
||||
/**************** HUNTER END ****************/
|
||||
@@ -895,12 +895,12 @@ public:
|
||||
case EVENT_WARRIOR_SPELL_MORTAL_STRIKE:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_STRIKE, false);
|
||||
events.RepeatEvent(urand(8000,12000));
|
||||
events.RepeatEvent(urand(8000, 12000));
|
||||
break;
|
||||
case EVENT_WARRIOR_SPELL_BLADESTORM:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_BLADESTORM, false);
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
break;
|
||||
case EVENT_WARRIOR_SPELL_INTERCEPT:
|
||||
{
|
||||
@@ -911,7 +911,7 @@ public:
|
||||
if( player && me->IsInRange(player, 8.0f, 25.0f, false) )
|
||||
{
|
||||
DoResetThreat();
|
||||
me->AddThreat(player,5.0f);
|
||||
me->AddThreat(player, 5.0f);
|
||||
me->CastSpell(player, SPELL_INTERCEPT, false);
|
||||
break;
|
||||
}
|
||||
@@ -922,7 +922,7 @@ public:
|
||||
case EVENT_WARRIOR_SPELL_ROLLING_THROW:
|
||||
events.PopEvent();
|
||||
break;
|
||||
/*************** WARRIOR END ****************/
|
||||
/*************** WARRIOR END ****************/
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -95,7 +95,7 @@ public:
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
Map::PlayerList const &players = instance->GetPlayers();
|
||||
Map::PlayerList const& players = instance->GetPlayers();
|
||||
if( !players.isEmpty() )
|
||||
if( Player* pPlayer = players.begin()->GetSource() )
|
||||
TeamIdInInstance = pPlayer->GetTeamId();
|
||||
@@ -126,23 +126,23 @@ public:
|
||||
break;
|
||||
|
||||
// Grand Champion Minions:
|
||||
case NPC_ORGRIMMAR_MINION:
|
||||
case NPC_ORGRIMMAR_MINION:
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
creature->UpdateEntry(NPC_STORMWIND_MINION);
|
||||
break;
|
||||
case NPC_SILVERMOON_MINION:
|
||||
case NPC_SILVERMOON_MINION:
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
creature->UpdateEntry(NPC_GNOMEREGAN_MINION);
|
||||
break;
|
||||
case NPC_THUNDER_BLUFF_MINION:
|
||||
case NPC_THUNDER_BLUFF_MINION:
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
creature->UpdateEntry(NPC_EXODAR_MINION);
|
||||
break;
|
||||
case NPC_SENJIN_MINION:
|
||||
case NPC_SENJIN_MINION:
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
creature->UpdateEntry(NPC_DARNASSUS_MINION);
|
||||
break;
|
||||
case NPC_UNDERCITY_MINION:
|
||||
case NPC_UNDERCITY_MINION:
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
creature->UpdateEntry(NPC_IRONFORGE_MINION);
|
||||
break;
|
||||
@@ -255,7 +255,7 @@ public:
|
||||
|
||||
// EVENT STUFF BELOW:
|
||||
|
||||
void OnPlayerEnter(Player *)
|
||||
void OnPlayerEnter(Player*)
|
||||
{
|
||||
if( DoNeedCleanup(true) )
|
||||
InstanceCleanup();
|
||||
@@ -266,13 +266,13 @@ public:
|
||||
bool DoNeedCleanup(bool /*enter*/)
|
||||
{
|
||||
uint8 aliveCount = 0;
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( plr->IsAlive() && !plr->IsGameMaster() )
|
||||
++aliveCount;
|
||||
|
||||
bool need = aliveCount==0;
|
||||
bool need = aliveCount == 0;
|
||||
if( !need && CLEANED )
|
||||
CLEANED = false;
|
||||
return need;
|
||||
@@ -298,9 +298,9 @@ public:
|
||||
veh->DespawnOrUnsummon();
|
||||
veh->SetRespawnTime(3);
|
||||
}
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
{
|
||||
for( uint8 j=0; j<3; ++j )
|
||||
for( uint8 j = 0; j < 3; ++j )
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[i][j]) )
|
||||
c->DespawnOrUnsummon();
|
||||
@@ -331,7 +331,7 @@ public:
|
||||
announcer->SetRespawnTime(3);
|
||||
announcer->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
uint32 entry = c->GetEntry();
|
||||
@@ -339,21 +339,21 @@ public:
|
||||
switch( i )
|
||||
{
|
||||
case 0:
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 736.695f, 650.02f, 412.4f, 3*M_PI/2) )
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 736.695f, 650.02f, 412.4f, 3 * M_PI / 2) )
|
||||
{
|
||||
NPC_GrandChampionGUID[0] = pBoss->GetGUID();
|
||||
pBoss->AI()->SetData(0, 2);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 756.32f, 650.05f, 412.4f, 3*M_PI/2) )
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 756.32f, 650.05f, 412.4f, 3 * M_PI / 2) )
|
||||
{
|
||||
NPC_GrandChampionGUID[1] = pBoss->GetGUID();
|
||||
pBoss->AI()->SetData(1, 2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 746.5f, 650.65f, 411.7f, 3*M_PI/2) )
|
||||
if( Creature* pBoss = announcer->SummonCreature(entry, 746.5f, 650.65f, 411.7f, 3 * M_PI / 2) )
|
||||
{
|
||||
NPC_GrandChampionGUID[2] = pBoss->GetGUID();
|
||||
pBoss->AI()->SetData(2, 2);
|
||||
@@ -368,8 +368,8 @@ public:
|
||||
case INSTANCE_PROGRESS_ARGENT_SOLDIERS_DIED:
|
||||
// revert to INSTANCE_PROGRESS_CHAMPIONS_DEAD
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 j=0; j<3; ++j )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
for( uint8 j = 0; j < 3; ++j )
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) )
|
||||
c->DespawnOrUnsummon();
|
||||
@@ -483,12 +483,14 @@ public:
|
||||
{
|
||||
shortver = true;
|
||||
|
||||
temp1 = urand(0,4);
|
||||
temp1 = urand(0, 4);
|
||||
DoSummonGrandChampion(temp1, 0);
|
||||
do { temp2 = urand(0,4); } while( temp1 == temp2 );
|
||||
do { temp2 = urand(0, 4); }
|
||||
while( temp1 == temp2 );
|
||||
DoSummonGrandChampion(temp2, 1);
|
||||
uint8 number = 0;
|
||||
do { number = urand(0,4); } while( number == temp1 || number == temp2 );
|
||||
do { number = urand(0, 4); }
|
||||
while( number == temp1 || number == temp2 );
|
||||
DoSummonGrandChampion(number, 2);
|
||||
|
||||
InstanceProgress = INSTANCE_PROGRESS_GRAND_CHAMPIONS_REACHED_DEST;
|
||||
@@ -504,7 +506,7 @@ public:
|
||||
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
|
||||
if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) )
|
||||
{
|
||||
Counter = urand(0,1);
|
||||
Counter = urand(0, 1);
|
||||
if( Counter )
|
||||
announcer->AI()->Talk(TEXT_INTRODUCE_EADRIC);
|
||||
else
|
||||
@@ -598,7 +600,7 @@ public:
|
||||
InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_DEAD;
|
||||
m_auiEncounter[0] = DONE;
|
||||
bool creditCasted = false;
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
c->GetMotionMaster()->MovePoint(9, 747.36f, 670.07f, 411.9f);
|
||||
@@ -729,7 +731,7 @@ public:
|
||||
if( Creature* pBoss = instance->SummonCreature(CHAMPION_TO_SUMMON, SpawnPos) )
|
||||
{
|
||||
NPC_GrandChampionGUID[BossOrder] = pBoss->GetGUID();
|
||||
pBoss->ToCreature()->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI/2);
|
||||
pBoss->ToCreature()->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2);
|
||||
pBoss->ToCreature()->SetReactState(REACT_PASSIVE);
|
||||
pBoss->AI()->SetData(BossOrder, (shortver ? 1 : 0));
|
||||
|
||||
@@ -737,20 +739,20 @@ public:
|
||||
if( Creature* pAdd = instance->SummonCreature(MINION_TO_SUMMON, SpawnPos) )
|
||||
{
|
||||
NPC_GrandChampionMinionsGUID[BossOrder][i] = pAdd->GetGUID();
|
||||
pAdd->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI/2);
|
||||
pAdd->GetMotionMaster()->MoveFollow(pBoss, 2.0f, (i+1)*M_PI/2);
|
||||
pAdd->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2);
|
||||
pAdd->GetMotionMaster()->MoveFollow(pBoss, 2.0f, (i + 1)*M_PI / 2);
|
||||
pAdd->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!shortver)
|
||||
if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) )
|
||||
{
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
TEXT_ID -= 10;
|
||||
announcer->AI()->Talk(TEXT_ID);
|
||||
announcer->AI()->Talk(TEXT_ID+1);
|
||||
announcer->AI()->Talk(TEXT_ID + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -770,7 +772,7 @@ public:
|
||||
break;
|
||||
case EVENT_SUMMON_GRAND_CHAMPION_1:
|
||||
{
|
||||
temp1 = urand(0,4);
|
||||
temp1 = urand(0, 4);
|
||||
DoSummonGrandChampion(temp1, 0);
|
||||
HandleGameObject(GO_MainGateGUID, true);
|
||||
events.ScheduleEvent(EVENT_CLOSE_GATE, 6000);
|
||||
@@ -779,7 +781,8 @@ public:
|
||||
break;
|
||||
case EVENT_SUMMON_GRAND_CHAMPION_2:
|
||||
{
|
||||
do { temp2 = urand(0,4); } while( temp1 == temp2 );
|
||||
do { temp2 = urand(0, 4); }
|
||||
while( temp1 == temp2 );
|
||||
DoSummonGrandChampion(temp2, 1);
|
||||
HandleGameObject(GO_MainGateGUID, true);
|
||||
events.ScheduleEvent(EVENT_CLOSE_GATE, 6000);
|
||||
@@ -789,7 +792,8 @@ public:
|
||||
case EVENT_SUMMON_GRAND_CHAMPION_3:
|
||||
{
|
||||
uint8 number = 0;
|
||||
do { number = urand(0,4); } while( number == temp1 || number == temp2 );
|
||||
do { number = urand(0, 4); }
|
||||
while( number == temp1 || number == temp2 );
|
||||
DoSummonGrandChampion(number, 2);
|
||||
HandleGameObject(GO_MainGateGUID, true);
|
||||
events.ScheduleEvent(EVENT_CLOSE_GATE, 6000);
|
||||
@@ -819,11 +823,11 @@ public:
|
||||
tirion->AI()->Talk(TEXT_BEGIN);
|
||||
HandleGameObject(GO_EnterGateGUID, false);
|
||||
}
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[1][i]) )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f+3.0f*cos(angle), 619.448f+3.0f*sin(angle), 411.3f);
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f + 3.0f * cos(angle), 619.448f + 3.0f * sin(angle), 411.3f);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_GRAND_GROUP_1_ATTACK, 3000);
|
||||
@@ -832,7 +836,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_GROUP_1_ATTACK:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[1][i]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -847,11 +851,11 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_GROUP_2_MOVE_MIDDLE:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[0][i]) )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f+3.0f*cos(angle), 619.448f+3.0f*sin(angle), 411.3f);
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f + 3.0f * cos(angle), 619.448f + 3.0f * sin(angle), 411.3f);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_GRAND_GROUP_2_ATTACK, 3000);
|
||||
@@ -860,7 +864,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_GROUP_2_ATTACK:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[0][i]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -874,11 +878,11 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_GROUP_3_MOVE_MIDDLE:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[2][i]) )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f+3.0f*cos(angle), 619.448f+3.0f*sin(angle), 411.3f);
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
c->GetMotionMaster()->MovePoint(0, 748.309f + 3.0f * cos(angle), 619.448f + 3.0f * sin(angle), 411.3f);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_GRAND_GROUP_3_ATTACK, 3000);
|
||||
@@ -887,7 +891,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_GROUP_3_ATTACK:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[2][i]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -901,11 +905,11 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_CHAMPIONS_MOVE_MIDDLE:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
c->GetMotionMaster()->MovePoint(4, 748.309f+3.0f*cos(angle), 619.448f+3.0f*sin(angle), 411.3f);
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
c->GetMotionMaster()->MovePoint(4, 748.309f + 3.0f * cos(angle), 619.448f + 3.0f * sin(angle), 411.3f);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_GRAND_CHAMPIONS_MOUNTS_ATTACK, 3000);
|
||||
@@ -914,7 +918,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_CHAMPIONS_MOUNTS_ATTACK:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -929,7 +933,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_CHAMPIONS_MOVE_SIDE:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
c->AI()->DoAction(1);
|
||||
@@ -953,7 +957,7 @@ public:
|
||||
break;
|
||||
case EVENT_GRAND_CHAMPIONS_ATTACK:
|
||||
{
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -1002,28 +1006,28 @@ public:
|
||||
announcer->AI()->Talk(TEXT_CHEER_PALETRESS_2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for( int8 i = 0; i < 3; ++i )
|
||||
{
|
||||
Position pos(SpawnPosition);
|
||||
float x = pos.GetPositionX();
|
||||
|
||||
pos.m_positionX = x-2.0f+(i-1)*10.0f;
|
||||
pos.m_positionX = x - 2.0f + (i - 1) * 10.0f;
|
||||
if( Creature* pTrash = instance->SummonCreature(NPC_ARGENT_LIGHTWIELDER, pos) )
|
||||
{
|
||||
pTrash->AI()->SetData(i,0);
|
||||
pTrash->AI()->SetData(i, 0);
|
||||
NPC_ArgentSoldierGUID[i][0] = pTrash->GetGUID();
|
||||
}
|
||||
pos.m_positionX = x+(i-1)*10.0f;
|
||||
pos.m_positionX = x + (i - 1) * 10.0f;
|
||||
if( Creature* pTrash = instance->SummonCreature(NPC_ARGENT_MONK, pos) )
|
||||
{
|
||||
pTrash->AI()->SetData(i,0);
|
||||
pTrash->AI()->SetData(i, 0);
|
||||
NPC_ArgentSoldierGUID[i][1] = pTrash->GetGUID();
|
||||
}
|
||||
pos.m_positionX = x+2.0f+(i-1)*10.0f;
|
||||
pos.m_positionX = x + 2.0f + (i - 1) * 10.0f;
|
||||
if( Creature* pTrash = instance->SummonCreature(NPC_PRIESTESS, pos) )
|
||||
{
|
||||
pTrash->AI()->SetData(i,0);
|
||||
pTrash->AI()->SetData(i, 0);
|
||||
NPC_ArgentSoldierGUID[i][2] = pTrash->GetGUID();
|
||||
}
|
||||
}
|
||||
@@ -1062,8 +1066,8 @@ public:
|
||||
case EVENT_ARGENT_SOLDIER_GROUP_ATTACK:
|
||||
{
|
||||
Counter = 0;
|
||||
for( uint8 i=0; i<3; ++i )
|
||||
for( uint8 j=0; j<3; ++j )
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
for( uint8 j = 0; j < 3; ++j )
|
||||
if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) )
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -1077,11 +1081,12 @@ public:
|
||||
break;
|
||||
case EVENT_ARGENT_CHALLENGE_MOVE_FORWARD:
|
||||
{
|
||||
if (Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID)) {
|
||||
boss->GetMotionMaster()->MovePoint(0, 746.881f, 635.263f, 411.7f);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ARGENT_CHALLENGE_ATTACK, 3000);
|
||||
events.PopEvent();
|
||||
if (Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID))
|
||||
{
|
||||
boss->GetMotionMaster()->MovePoint(0, 746.881f, 635.263f, 411.7f);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ARGENT_CHALLENGE_ATTACK, 3000);
|
||||
events.PopEvent();
|
||||
}
|
||||
break;
|
||||
case EVENT_ARGENT_CHALLENGE_ATTACK:
|
||||
@@ -1241,7 +1246,7 @@ public:
|
||||
events.PopEvent();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/)
|
||||
|
||||
@@ -30,31 +30,31 @@ public:
|
||||
uint32 gossipTextId = 0;
|
||||
switch (pInstance->GetData(DATA_INSTANCE_PROGRESS))
|
||||
{
|
||||
case INSTANCE_PROGRESS_INITIAL:
|
||||
if (!player->GetVehicle())
|
||||
{
|
||||
if (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE)
|
||||
gossipTextId = 15043; //Horde text
|
||||
case INSTANCE_PROGRESS_INITIAL:
|
||||
if (!player->GetVehicle())
|
||||
{
|
||||
if (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE)
|
||||
gossipTextId = 15043; //Horde text
|
||||
else
|
||||
gossipTextId = 14757; //Alliance text
|
||||
}
|
||||
else
|
||||
gossipTextId = 14757; //Alliance text
|
||||
}
|
||||
else
|
||||
{
|
||||
gossipTextId = 14688;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338);
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341);
|
||||
}
|
||||
break;
|
||||
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
|
||||
gossipTextId = 14737;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339);
|
||||
break;
|
||||
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
|
||||
gossipTextId = 14738;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340);
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
{
|
||||
gossipTextId = 14688;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338);
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341);
|
||||
}
|
||||
break;
|
||||
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
|
||||
gossipTextId = 14737;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339);
|
||||
break;
|
||||
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
|
||||
gossipTextId = 14738;
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340);
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
SendGossipMenuFor(player, gossipTextId, creature->GetGUID());
|
||||
@@ -70,9 +70,9 @@ public:
|
||||
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)
|
||||
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));
|
||||
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 1341 ? 1 : 0));
|
||||
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
|
||||
struct npc_announcer_toc5AI : public CreatureAI
|
||||
{
|
||||
npc_announcer_toc5AI(Creature *creature) : CreatureAI(creature) {}
|
||||
npc_announcer_toc5AI(Creature* creature) : CreatureAI(creature) {}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -102,7 +102,7 @@ public:
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
{
|
||||
if (damage >= me->GetHealth()) // for bk scene so strangulate doesn't kill him
|
||||
damage = me->GetHealth()-1;
|
||||
damage = me->GetHealth() - 1;
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 /*id*/) override
|
||||
|
||||
@@ -33,7 +33,7 @@ enum AnubNPCs
|
||||
NPC_SPIKE = 34660,
|
||||
};
|
||||
|
||||
const Position AnubLocs[]=
|
||||
const Position AnubLocs[] =
|
||||
{
|
||||
// scarab's beginning pos
|
||||
{722.65f, 135.41f, 142.16f, M_PI},
|
||||
@@ -148,7 +148,7 @@ public:
|
||||
events.Reset();
|
||||
bIntro = false;
|
||||
bPhase3 = false;
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, RAID_MODE(66193,67855,67856,67857), true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, RAID_MODE(66193, 67855, 67856, 67857), true);
|
||||
me->m_SightDistance = 90.0f; // for MoveInLineOfSight distance
|
||||
}
|
||||
|
||||
@@ -165,11 +165,11 @@ public:
|
||||
me->SetStandState(UNIT_STAND_STATE_SUBMERGED);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
summons.DespawnAll();
|
||||
for( uint8 i=0; i<10; ++i )
|
||||
for( uint8 i = 0; i < 10; ++i )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
float dist = rand_norm()*40.0f;
|
||||
if( Creature* c = me->SummonCreature(NPC_SCARAB, AnubLocs[0].GetPositionX()+cos(angle)*dist, AnubLocs[0].GetPositionY()+sin(angle)*dist, AnubLocs[0].GetPositionZ(), 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000) )
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
float dist = rand_norm() * 40.0f;
|
||||
if( Creature* c = me->SummonCreature(NPC_SCARAB, AnubLocs[0].GetPositionX() + cos(angle) * dist, AnubLocs[0].GetPositionY() + sin(angle) * dist, AnubLocs[0].GetPositionZ(), 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000) )
|
||||
{
|
||||
c->setFaction(31);
|
||||
c->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -193,9 +193,9 @@ public:
|
||||
me->setActive(true);
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_ENRAGE, 600000);
|
||||
events.RescheduleEvent(EVENT_SPELL_FREEZING_SLASH, urand(7000,15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_PENETRATING_COLD, urand(15000,20000));
|
||||
events.RescheduleEvent(EVENT_SUMMON_NERUBIAN, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FREEZING_SLASH, urand(7000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_PENETRATING_COLD, urand(15000, 20000));
|
||||
events.RescheduleEvent(EVENT_SUMMON_NERUBIAN, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_SUBMERGE, SUBMERGE_INTERVAL);
|
||||
if( !IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_RESPAWN_SPHERE, 4000);
|
||||
@@ -210,11 +210,11 @@ public:
|
||||
c->AI()->DoAction(1);
|
||||
}
|
||||
summons.clear();
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
if( Creature* c = me->SummonCreature(NPC_BURROW, AnubLocs[i+1]) )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( Creature* c = me->SummonCreature(NPC_BURROW, AnubLocs[i + 1]) )
|
||||
BurrowGUID[i] = c->GetGUID();
|
||||
for( uint8 i=0; i<6; ++i )
|
||||
if( Creature* c = me->SummonCreature(NPC_FROST_SPHERE, AnubLocs[i+5]) )
|
||||
for( uint8 i = 0; i < 6; ++i )
|
||||
if( Creature* c = me->SummonCreature(NPC_FROST_SPHERE, AnubLocs[i + 5]) )
|
||||
SphereGUID[i] = c->GetGUID();
|
||||
|
||||
Talk(SAY_AGGRO);
|
||||
@@ -264,20 +264,19 @@ public:
|
||||
break;
|
||||
case EVENT_RESPAWN_SPHERE:
|
||||
{
|
||||
uint8 StartAt = urand(0,5);
|
||||
uint8 StartAt = urand(0, 5);
|
||||
uint8 i = StartAt;
|
||||
do
|
||||
{
|
||||
if( Creature* c = ObjectAccessor::GetCreature(*me, SphereGUID[i]) )
|
||||
if( !c->HasAura(SPELL_FROST_SPHERE) )
|
||||
{
|
||||
if( Creature* c = me->SummonCreature(NPC_FROST_SPHERE, AnubLocs[i+5]) )
|
||||
if( Creature* c = me->SummonCreature(NPC_FROST_SPHERE, AnubLocs[i + 5]) )
|
||||
SphereGUID[i] = c->GetGUID();
|
||||
break;
|
||||
}
|
||||
i = (i+1)%6;
|
||||
}
|
||||
while( i != StartAt );
|
||||
i = (i + 1) % 6;
|
||||
} while( i != StartAt );
|
||||
events.RepeatEvent(4000);
|
||||
}
|
||||
break;
|
||||
@@ -285,18 +284,18 @@ public:
|
||||
{
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_FREEZING_SLASH, false);
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
}
|
||||
break;
|
||||
case EVENT_SPELL_PENETRATING_COLD:
|
||||
{
|
||||
me->CastCustomSpell(SPELL_PENETRATING_COLD, SPELLVALUE_MAX_TARGETS, RAID_MODE(2,5,2,5));
|
||||
me->CastCustomSpell(SPELL_PENETRATING_COLD, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5, 2, 5));
|
||||
events.RepeatEvent(18000);
|
||||
}
|
||||
break;
|
||||
case EVENT_SUMMON_NERUBIAN:
|
||||
{
|
||||
me->CastCustomSpell(SPELL_SUMMON_BURROWER, SPELLVALUE_MAX_TARGETS, RAID_MODE(1,2,2,4));
|
||||
me->CastCustomSpell(SPELL_SUMMON_BURROWER, SPELLVALUE_MAX_TARGETS, RAID_MODE(1, 2, 2, 4));
|
||||
events.RepeatEvent(45000);
|
||||
}
|
||||
break;
|
||||
@@ -321,7 +320,7 @@ public:
|
||||
break;
|
||||
case EVENT_SUMMON_SCARAB:
|
||||
{
|
||||
uint8 i = urand(0,3);
|
||||
uint8 i = urand(0, 3);
|
||||
if( Creature* c = ObjectAccessor::GetCreature(*me, BurrowGUID[i]) )
|
||||
me->CastSpell(c, SPELL_SUMMON_SCARAB, true);
|
||||
events.RepeatEvent(4000);
|
||||
@@ -343,9 +342,9 @@ public:
|
||||
me->setAttackTimer(BASE_ATTACK, 3000);
|
||||
me->RemoveAura(SPELL_SUBMERGE);
|
||||
me->CastSpell(me, SPELL_EMERGE, false);
|
||||
events.RescheduleEvent(EVENT_SUMMON_NERUBIAN, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FREEZING_SLASH, urand(7000,15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_PENETRATING_COLD, urand(15000,20000));
|
||||
events.RescheduleEvent(EVENT_SUMMON_NERUBIAN, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FREEZING_SLASH, urand(7000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_PENETRATING_COLD, urand(15000, 20000));
|
||||
events.RescheduleEvent(EVENT_SUBMERGE, SUBMERGE_INTERVAL);
|
||||
events.PopEvent();
|
||||
}
|
||||
@@ -385,7 +384,7 @@ public:
|
||||
|
||||
// remove loot for the other faction (items are invisible for players, done in conditions), so corpse can be skinned
|
||||
for( std::vector<LootItem>::iterator itr = me->loot.items.begin(); itr != me->loot.items.end(); ++itr )
|
||||
if( ItemTemplate const *iProto = sObjectMgr->GetItemTemplate((*itr).itemid) )
|
||||
if( ItemTemplate const* iProto = sObjectMgr->GetItemTemplate((*itr).itemid) )
|
||||
if( ((iProto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && plr->GetTeamId() != TEAM_HORDE) || ((iProto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && plr->GetTeamId() != TEAM_ALLIANCE) )
|
||||
{
|
||||
(*itr).count = 0;
|
||||
@@ -393,7 +392,7 @@ public:
|
||||
--me->loot.unlootedCount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if( who->GetTypeId() == TYPEID_PLAYER )
|
||||
@@ -408,7 +407,7 @@ public:
|
||||
if( pInstance )
|
||||
pInstance->SetData(TYPE_FAILED, 1);
|
||||
}
|
||||
|
||||
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (who->GetTypeId() != TYPEID_PLAYER || me->GetExactDistSq(who) > 6400.0f) // 80yd*80yd
|
||||
@@ -459,9 +458,9 @@ public:
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->SetCorpseDelay(10*60);
|
||||
me->SetCorpseDelay(10 * 60);
|
||||
me->CastSpell(me, SPELL_ACID_MANDIBLE, true);
|
||||
determinationTimer = urand(10000,50000);
|
||||
determinationTimer = urand(10000, 50000);
|
||||
despawnTimer = 0;
|
||||
if( me->getFaction() == 16 ) // hostile - it's phase 2
|
||||
if( Unit* target = me->SelectNearestTarget(250.0f) )
|
||||
@@ -502,7 +501,7 @@ public:
|
||||
if( determinationTimer <= (int32)diff )
|
||||
{
|
||||
me->CastSpell(me, SPELL_DETERMINATION, false);
|
||||
determinationTimer = urand(20000,60000);
|
||||
determinationTimer = urand(20000, 60000);
|
||||
}
|
||||
else
|
||||
determinationTimer -= diff;
|
||||
@@ -541,10 +540,18 @@ public:
|
||||
if (me->GetMap())
|
||||
switch (me->GetMap()->GetDifficulty())
|
||||
{
|
||||
case RAID_DIFFICULTY_10MAN_NORMAL: ID = 66118; break;
|
||||
case RAID_DIFFICULTY_25MAN_NORMAL: ID = 67630; break;
|
||||
case RAID_DIFFICULTY_10MAN_HEROIC: ID = 68646; break;
|
||||
case RAID_DIFFICULTY_25MAN_HEROIC: ID = 68647; break;
|
||||
case RAID_DIFFICULTY_10MAN_NORMAL:
|
||||
ID = 66118;
|
||||
break;
|
||||
case RAID_DIFFICULTY_25MAN_NORMAL:
|
||||
ID = 67630;
|
||||
break;
|
||||
case RAID_DIFFICULTY_10MAN_HEROIC:
|
||||
ID = 68646;
|
||||
break;
|
||||
case RAID_DIFFICULTY_25MAN_HEROIC:
|
||||
ID = 68647;
|
||||
break;
|
||||
}
|
||||
if (ID)
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, ID, true);
|
||||
@@ -552,7 +559,7 @@ public:
|
||||
permafrostTimer = 0;
|
||||
me->CastSpell(me, SPELL_FROST_SPHERE, true);
|
||||
me->GetMotionMaster()->MoveRandom(20.0f);
|
||||
me->SetCorpseDelay(15*60*1000);
|
||||
me->SetCorpseDelay(15 * 60 * 1000);
|
||||
}
|
||||
|
||||
uint32 permafrostTimer;
|
||||
@@ -629,13 +636,13 @@ public:
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->SetCorpseDelay(10*60);
|
||||
me->SetCorpseDelay(10 * 60);
|
||||
me->CastSpell(me, SPELL_EXPOSE_WEAKNESS, true);
|
||||
me->CastSpell(me, SPELL_SPIDER_FRENZY, true);
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SUBMERGE, 30000);
|
||||
if( IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_SPELL_SHADOW_STRIKE, urand(30000,45000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SHADOW_STRIKE, urand(30000, 45000));
|
||||
if( Unit* target = me->SelectNearestTarget(250.0f) )
|
||||
{
|
||||
AttackStart(target);
|
||||
@@ -655,7 +662,7 @@ public:
|
||||
o -= M_PI;
|
||||
else
|
||||
o += M_PI;
|
||||
me->NearTeleportTo(target->GetPositionX()+cos(o)*5.0f, target->GetPositionY()+sin(o)*5.0f, target->GetPositionZ()+0.6f, target->GetOrientation());
|
||||
me->NearTeleportTo(target->GetPositionX() + cos(o) * 5.0f, target->GetPositionY() + sin(o) * 5.0f, target->GetPositionZ() + 0.6f, target->GetOrientation());
|
||||
AttackStart(target);
|
||||
me->GetMotionMaster()->MoveChase(target);
|
||||
events.DelayEvents(3000);
|
||||
@@ -679,10 +686,10 @@ public:
|
||||
case EVENT_SPELL_SHADOW_STRIKE:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 250.0f, true) )
|
||||
me->CastSpell(target, SPELL_SHADOW_STRIKE, false);
|
||||
events.RepeatEvent(urand(30000,45000));
|
||||
events.RepeatEvent(urand(30000, 45000));
|
||||
break;
|
||||
case EVENT_SUBMERGE:
|
||||
if( HealthBelowPct(80) && !me->HasAura(RAID_MODE(66193,67855,67856,67857)) ) // not having permafrost - allow submerge
|
||||
if( HealthBelowPct(80) && !me->HasAura(RAID_MODE(66193, 67855, 67856, 67857)) ) // not having permafrost - allow submerge
|
||||
{
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -834,40 +841,40 @@ public:
|
||||
|
||||
class spell_pursuing_spikes : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_pursuing_spikes() : SpellScriptLoader("spell_pursuing_spikes") { }
|
||||
public:
|
||||
spell_pursuing_spikes() : SpellScriptLoader("spell_pursuing_spikes") { }
|
||||
|
||||
class spell_pursuing_spikesAuraScript : public AuraScript
|
||||
class spell_pursuing_spikesAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_pursuing_spikesAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
PrepareAuraScript(spell_pursuing_spikesAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/)
|
||||
if( Unit* target = GetTarget() )
|
||||
{
|
||||
if( Unit* target = GetTarget() )
|
||||
if( Creature* c = target->FindNearestCreature(NPC_FROST_SPHERE, 8.0f, true) )
|
||||
{
|
||||
if( Creature* c = target->FindNearestCreature(NPC_FROST_SPHERE, 8.0f, true) )
|
||||
{
|
||||
target->UpdatePosition(*c, false);
|
||||
target->CastCustomSpell(SPELL_SPIKE_FAIL, SPELLVALUE_MAX_TARGETS, 1);
|
||||
if( target->GetTypeId() == TYPEID_UNIT )
|
||||
target->ToCreature()->AI()->DoAction(-1);
|
||||
Remove();
|
||||
return;
|
||||
}
|
||||
target->CastSpell((Unit*)NULL, SPELL_IMPALE, true);
|
||||
target->UpdatePosition(*c, false);
|
||||
target->CastCustomSpell(SPELL_SPIKE_FAIL, SPELLVALUE_MAX_TARGETS, 1);
|
||||
if( target->GetTypeId() == TYPEID_UNIT )
|
||||
target->ToCreature()->AI()->DoAction(-1);
|
||||
Remove();
|
||||
return;
|
||||
}
|
||||
target->CastSpell((Unit*)NULL, SPELL_IMPALE, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_pursuing_spikesAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_pursuing_spikesAuraScript();
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_pursuing_spikesAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_pursuing_spikesAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 66118 Leeching Swarm
|
||||
@@ -879,21 +886,21 @@ enum eLeechingSwarmSpells
|
||||
|
||||
class spell_gen_leeching_swarm : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
public:
|
||||
spell_gen_leeching_swarm() : SpellScriptLoader("spell_gen_leeching_swarm") { }
|
||||
|
||||
class spell_gen_leeching_swarm_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_leeching_swarm_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_DMG))
|
||||
return false;
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_HEAL))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_DMG))
|
||||
return false;
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_HEAL))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
@@ -922,7 +929,7 @@ class spell_gen_leeching_swarm : public SpellScriptLoader
|
||||
|
||||
class spell_gen_leeching_swarm_dmg : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
public:
|
||||
spell_gen_leeching_swarm_dmg() : SpellScriptLoader("spell_gen_leeching_swarm_dmg") {}
|
||||
|
||||
class spell_gen_leeching_swarm_dmg_SpellScript : public SpellScript
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -118,9 +118,9 @@ public:
|
||||
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_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));
|
||||
@@ -151,15 +151,23 @@ public:
|
||||
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;
|
||||
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);
|
||||
a->ModStackAmount(-1);
|
||||
else
|
||||
a->Remove();
|
||||
caster->CastSpell(caster, SPELL_NETHER_POWER, true);
|
||||
@@ -188,12 +196,12 @@ public:
|
||||
case EVENT_SPELL_FEL_FIREBALL:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_FEL_FIREBALL, false);
|
||||
events.RepeatEvent(urand(10000,15000));
|
||||
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));
|
||||
events.RepeatEvent(urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_SPELL_INCINERATE_FLESH:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
|
||||
@@ -202,12 +210,12 @@ public:
|
||||
Talk(SAY_INCINERATE);
|
||||
me->CastSpell(target, SPELL_INCINERATE_FLESH, false);
|
||||
}
|
||||
events.RepeatEvent(urand(20000,25000));
|
||||
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));
|
||||
events.RepeatEvent(urand(25000, 45000));
|
||||
break;
|
||||
case EVENT_SPELL_LEGION_FLAME:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true) )
|
||||
@@ -220,7 +228,7 @@ public:
|
||||
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));
|
||||
events.RepeatEvent(urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_SUMMON_NETHER_PORTAL:
|
||||
Talk(EMOTE_NETHER_PORTAL);
|
||||
@@ -296,7 +304,7 @@ public:
|
||||
DoZoneInCombat();
|
||||
}
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_FEL_STEAK, urand(7000,20000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FEL_STEAK, urand(7000, 20000));
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
@@ -367,10 +375,10 @@ public:
|
||||
DoZoneInCombat();
|
||||
}
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_SHIVAN_SLASH, urand(10000,20000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SPINNING_PAIN_SPIKE, urand(22000,30000));
|
||||
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));
|
||||
events.RescheduleEvent(EVENT_SPELL_MISTRESS_KISS, urand(10000, 15000));
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, const SpellInfo* /*spell*/)
|
||||
@@ -396,16 +404,16 @@ public:
|
||||
case EVENT_SPELL_SHIVAN_SLASH:
|
||||
if( me->GetVictim() )
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHIVAN_SLASH, false);
|
||||
events.RepeatEvent(urand(15000,25000));
|
||||
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));
|
||||
events.RepeatEvent(urand(25000, 30000));
|
||||
break;
|
||||
case EVENT_SPELL_MISTRESS_KISS:
|
||||
me->CastSpell((Unit*)NULL, SPELL_MISTRESS_KISS, false);
|
||||
events.RepeatEvent(urand(25000,35000));
|
||||
events.RepeatEvent(urand(25000, 35000));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -434,7 +442,7 @@ public:
|
||||
{
|
||||
PrepareAuraScript(spell_toc25_mistress_kiss_AuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/)
|
||||
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
if (Unit* target = GetTarget())
|
||||
@@ -451,7 +459,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_toc25_mistress_kiss_AuraScript();
|
||||
}
|
||||
@@ -459,42 +467,42 @@ public:
|
||||
|
||||
class spell_mistress_kiss_area : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_mistress_kiss_area() : SpellScriptLoader("spell_mistress_kiss_area") {}
|
||||
public:
|
||||
spell_mistress_kiss_area() : SpellScriptLoader("spell_mistress_kiss_area") {}
|
||||
|
||||
class spell_mistress_kiss_area_SpellScript : public SpellScript
|
||||
class spell_mistress_kiss_area_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_mistress_kiss_area_SpellScript)
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
PrepareSpellScript(spell_mistress_kiss_area_SpellScript)
|
||||
// get a list of players with mana
|
||||
targets.remove_if(acore::ObjectTypeIdCheck(TYPEID_PLAYER, false));
|
||||
targets.remove_if(acore::PowerCheck(POWER_MANA, false));
|
||||
if (targets.empty())
|
||||
return;
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
// get a list of players with mana
|
||||
targets.remove_if(acore::ObjectTypeIdCheck(TYPEID_PLAYER, false));
|
||||
targets.remove_if(acore::PowerCheck(POWER_MANA, false));
|
||||
if (targets.empty())
|
||||
return;
|
||||
|
||||
WorldObject* target = acore::Containers::SelectRandomContainerElement(targets);
|
||||
targets.clear();
|
||||
targets.push_back(target);
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mistress_kiss_area_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mistress_kiss_area_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_mistress_kiss_area_SpellScript();
|
||||
WorldObject* target = acore::Containers::SelectRandomContainerElement(targets);
|
||||
targets.clear();
|
||||
targets.push_back(target);
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mistress_kiss_area_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mistress_kiss_area_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_mistress_kiss_area_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_jaraxxus()
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
void Reset()
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_FIRE_BOMB, urand(10000,30000));
|
||||
events.ScheduleEvent(EVENT_SPELL_FIRE_BOMB, urand(10000, 30000));
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
if( Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_GORMOK)) )
|
||||
if( gormok->IsAlive() )
|
||||
if( Vehicle* vk = gormok->GetVehicleKit() )
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( !vk->GetPassenger(i) )
|
||||
{
|
||||
me->EnterVehicleUnattackable(gormok, i);
|
||||
@@ -155,25 +155,25 @@ public:
|
||||
case EVENT_SPELL_BATTER:
|
||||
if( t->GetTypeId() == TYPEID_PLAYER )
|
||||
me->CastSpell(t, SPELL_BATTER);
|
||||
events.RepeatEvent(urand(6000,8000));
|
||||
events.RepeatEvent(urand(6000, 8000));
|
||||
break;
|
||||
case EVENT_SPELL_FIRE_BOMB:
|
||||
{
|
||||
if( t->GetTypeId() != TYPEID_PLAYER && pInstance )
|
||||
{
|
||||
std::vector<uint64> validPlayers;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_GORMOK));
|
||||
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
{
|
||||
if( Player* p = itr->GetSource() )
|
||||
if( p->IsAlive() && p->GetGUID()!=TargetGUID && (!gormok || !p->IsWithinMeleeRange(gormok)) )
|
||||
if( p->IsAlive() && p->GetGUID() != TargetGUID && (!gormok || !p->IsWithinMeleeRange(gormok)) )
|
||||
validPlayers.push_back(p->GetGUID());
|
||||
}
|
||||
|
||||
if( !validPlayers.empty() )
|
||||
if( Player* p = ObjectAccessor::GetPlayer(*me, validPlayers.at(urand(0,validPlayers.size()-1))) )
|
||||
if( Player* p = ObjectAccessor::GetPlayer(*me, validPlayers.at(urand(0, validPlayers.size() - 1))) )
|
||||
if( Creature* trigger = me->SummonCreature(NPC_FIRE_BOMB, *p, TEMPSUMMON_TIMED_DESPAWN, 60000) )
|
||||
{
|
||||
me->CastSpell(trigger, SPELL_FIRE_BOMB_AURA, true); // periodic damage aura, speed 14.0f
|
||||
@@ -181,13 +181,13 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
events.RepeatEvent(urand(20000,30000));
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
}
|
||||
break;
|
||||
case EVENT_SPELL_HEAD_CRACK:
|
||||
if( t->GetTypeId() == TYPEID_PLAYER )
|
||||
me->CastSpell(t, SPELL_HEAD_CRACK);
|
||||
events.RepeatEvent(urand(30000,35000));
|
||||
events.RepeatEvent(urand(30000, 35000));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -247,13 +247,13 @@ public:
|
||||
{
|
||||
me->setActive(true);
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_IMPALE, urand(9000,10000));
|
||||
events.RescheduleEvent(EVENT_SPELL_IMPALE, urand(9000, 10000));
|
||||
events.RescheduleEvent(EVENT_SPELL_STAGGERING_STOMP, 15000);
|
||||
events.RescheduleEvent(EVENT_PICK_SNOBOLD_TARGET, urand(16000,24000));
|
||||
events.RescheduleEvent(EVENT_PICK_SNOBOLD_TARGET, urand(16000, 24000));
|
||||
|
||||
// refresh snobold position
|
||||
if( Vehicle* vk = me->GetVehicleKit() )
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( Unit* snobold = vk->GetPassenger(i) )
|
||||
snobold->SendMovementFlagUpdate();
|
||||
}
|
||||
@@ -284,22 +284,22 @@ public:
|
||||
{
|
||||
if( Unit* victim = me->GetVictim() )
|
||||
me->CastSpell(victim, SPELL_IMPALE, false);
|
||||
events.RepeatEvent(urand(9000,10000));
|
||||
events.RepeatEvent(urand(9000, 10000));
|
||||
}
|
||||
else
|
||||
events.RepeatEvent(2500);
|
||||
break;
|
||||
case EVENT_SPELL_STAGGERING_STOMP:
|
||||
me->CastSpell((Unit*)NULL, SPELL_STAGGERING_STOMP, false);
|
||||
events.RepeatEvent(urand(20000,25000));
|
||||
events.RepeatEvent(urand(20000, 25000));
|
||||
break;
|
||||
case EVENT_PICK_SNOBOLD_TARGET:
|
||||
if( Vehicle* vk = me->GetVehicleKit() )
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( Unit* snobold = vk->GetPassenger(i) )
|
||||
{
|
||||
std::vector<uint64> validPlayers;
|
||||
Map::PlayerList const &pl = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
{
|
||||
if( Player* p = itr->GetSource() )
|
||||
@@ -308,7 +308,7 @@ public:
|
||||
}
|
||||
|
||||
if( !validPlayers.empty() )
|
||||
if( Player* p = ObjectAccessor::GetPlayer(*me, validPlayers.at(urand(0,validPlayers.size()-1))) )
|
||||
if( Player* p = ObjectAccessor::GetPlayer(*me, validPlayers.at(urand(0, validPlayers.size() - 1))) )
|
||||
{
|
||||
snobold->ChangeSeat(4); // switch to hand
|
||||
me->setAttackTimer(BASE_ATTACK, 3000);
|
||||
@@ -318,7 +318,7 @@ public:
|
||||
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(urand(16000,24000));
|
||||
events.RepeatEvent(urand(16000, 24000));
|
||||
break;
|
||||
case EVENT_RELEASE_SNOBOLD:
|
||||
{
|
||||
@@ -347,7 +347,7 @@ public:
|
||||
if( snobold->GetTypeId() == TYPEID_UNIT )
|
||||
{
|
||||
bool needDespawn = true;
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( !vk->GetPassenger(i) )
|
||||
{
|
||||
snobold->ChangeSeat(i);
|
||||
@@ -503,17 +503,17 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
{
|
||||
me->SetAttackTime(BASE_ATTACK, 1500);
|
||||
events.RescheduleEvent(EVENT_SPELL_SPRAY, (me->GetEntry() == NPC_ACIDMAW ? 20000 : 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SWEEP, urand(15000,30000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SWEEP, urand(15000, 30000));
|
||||
}
|
||||
else
|
||||
{
|
||||
me->SetAttackTime(BASE_ATTACK, 2000);
|
||||
events.RescheduleEvent(EVENT_SPELL_BITE, (me->GetEntry() == NPC_ACIDMAW ? 20000 : 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SPEW, urand(15000,30000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SPEW, urand(15000, 30000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SLIME_POOL, 15000);
|
||||
}
|
||||
if( !me->HasAura(SPELL_ENRAGE) )
|
||||
events.RescheduleEvent(EVENT_SUBMERGE, urand(45000,50000));
|
||||
events.RescheduleEvent(EVENT_SUBMERGE, urand(45000, 50000));
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
@@ -572,15 +572,15 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
break;
|
||||
case EVENT_MOVE_UNDERGROUND:
|
||||
{
|
||||
float angle=me->GetAngle(Locs[LOC_CENTER].GetPositionX()+urand(0,20)-10.0f, Locs[LOC_CENTER].GetPositionY()+urand(0,20)-10.0f), dist=urand(10,35);
|
||||
float angle = me->GetAngle(Locs[LOC_CENTER].GetPositionX() + urand(0, 20) - 10.0f, Locs[LOC_CENTER].GetPositionY() + urand(0, 20) - 10.0f), dist = urand(10, 35);
|
||||
if( Creature* c = me->SummonCreature(NPC_WORLD_TRIGGER, *me, TEMPSUMMON_TIMED_DESPAWN, 6000) )
|
||||
{
|
||||
c->SetSpeed(MOVE_RUN, 2.5f);
|
||||
c->CastSpell(c, SPELL_CHURNING_GROUND, true);
|
||||
c->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED);
|
||||
c->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX()+cos(angle)*dist, Locs[LOC_CENTER].GetPositionY()+sin(angle)*dist, me->GetPositionZ());
|
||||
c->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX() + cos(angle)*dist, Locs[LOC_CENTER].GetPositionY() + sin(angle)*dist, me->GetPositionZ());
|
||||
}
|
||||
me->UpdatePosition(Locs[LOC_CENTER].GetPositionX()+cos(angle)*dist, Locs[LOC_CENTER].GetPositionY()+sin(angle)*dist, me->GetPositionZ(), me->GetOrientation(), true);
|
||||
me->UpdatePosition(Locs[LOC_CENTER].GetPositionX() + cos(angle)*dist, Locs[LOC_CENTER].GetPositionY() + sin(angle)*dist, me->GetPositionZ(), me->GetOrientation(), true);
|
||||
me->StopMovingOnCurrentPos();
|
||||
DoResetThreat();
|
||||
events.PopEvent();
|
||||
@@ -618,7 +618,7 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
break;
|
||||
case EVENT_SPELL_SWEEP:
|
||||
me->CastSpell((Unit*)NULL, SPELL_SWEEP_0, false);
|
||||
events.RepeatEvent(urand(15000,30000));
|
||||
events.RepeatEvent(urand(15000, 30000));
|
||||
break;
|
||||
case EVENT_SPELL_BITE:
|
||||
if( Unit* victim = me->GetVictim() )
|
||||
@@ -627,7 +627,7 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
break;
|
||||
case EVENT_SPELL_SPEW:
|
||||
me->CastSpell(me->GetVictim(), _SPELL_SPEW, false);
|
||||
events.RepeatEvent(urand(15000,30000));
|
||||
events.RepeatEvent(urand(15000, 30000));
|
||||
break;
|
||||
case EVENT_SPELL_SLIME_POOL:
|
||||
if( Creature* c = me->SummonCreature(NPC_SLIME_POOL, *me, TEMPSUMMON_TIMED_DESPAWN, 30000) )
|
||||
@@ -667,7 +667,7 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
|
||||
class boss_acidmaw : public CreatureScript
|
||||
{
|
||||
public:
|
||||
public:
|
||||
boss_acidmaw() : CreatureScript("boss_acidmaw") { }
|
||||
|
||||
struct boss_acidmawAI : public boss_jormungarAI
|
||||
@@ -793,8 +793,8 @@ public:
|
||||
{
|
||||
me->setActive(true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(15000,30000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(10000,12000));
|
||||
events.ScheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(15000, 30000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(10000, 12000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, 14000);
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, 30000);
|
||||
}
|
||||
@@ -806,7 +806,7 @@ public:
|
||||
|
||||
bool DoTrampleIfValid()
|
||||
{
|
||||
Map::PlayerList const &lPlayers = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& lPlayers = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr )
|
||||
if( Unit* p = itr->GetSource() )
|
||||
if( p->IsAlive() && p->GetExactDist(me) <= 12.0f )
|
||||
@@ -823,13 +823,13 @@ public:
|
||||
if( id == EVENT_CHARGE )
|
||||
{
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000,15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000,5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000,50000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000, 5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000, 50000));
|
||||
|
||||
float angle = me->GetAngle(&Locs[LOC_CENTER]);
|
||||
angle = angle >= M_PI ? angle-M_PI : angle+M_PI;
|
||||
angle = angle >= M_PI ? angle - M_PI : angle + M_PI;
|
||||
|
||||
me->UpdatePosition(destX, destY, destZ, angle, true);
|
||||
me->StopMovingOnCurrentPos();
|
||||
@@ -868,16 +868,16 @@ public:
|
||||
case EVENT_SPELL_FEROCIOUS_BUTT:
|
||||
if( Unit* victim = me->GetVictim() )
|
||||
me->CastSpell(victim, SPELL_FEROCIOUS_BUTT, false);
|
||||
events.RepeatEvent(urand(15000,30000));
|
||||
events.RepeatEvent(urand(15000, 30000));
|
||||
break;
|
||||
case EVENT_SPELL_WHIRL:
|
||||
me->CastSpell((Unit*)NULL, SPELL_WHIRL, false);
|
||||
events.RepeatEvent(urand(15000,20000));
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
break;
|
||||
case EVENT_SPELL_ARCTIC_BREATH:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 90.0f, true) )
|
||||
me->CastSpell(target, SPELL_ARCTIC_BREATH, false);
|
||||
events.RepeatEvent(urand(20000,30000));
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
break;
|
||||
case EVENT_JUMP_MIDDLE:
|
||||
me->StopMoving();
|
||||
@@ -908,10 +908,10 @@ public:
|
||||
}
|
||||
else // in case something went wrong
|
||||
{
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000,15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000,5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000,50000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000, 5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000, 50000));
|
||||
me->GetMotionMaster()->MovementExpired();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
@@ -923,17 +923,17 @@ public:
|
||||
if( Unit* target = ObjectAccessor::GetPlayer(*me, TargetGUID) )
|
||||
angle = me->GetAngle(target);
|
||||
else // in case something went wrong
|
||||
angle = rand_norm()*2*M_PI;
|
||||
angle = rand_norm() * 2 * M_PI;
|
||||
|
||||
float jumpangle = angle >= M_PI ? angle-M_PI : angle+M_PI;
|
||||
float jumpangle = angle >= M_PI ? angle - M_PI : angle + M_PI;
|
||||
float dist = 50.0f;
|
||||
if( angle > 1.0f && angle < 2.0f ) // near main gate
|
||||
dist = 46.0f;
|
||||
destX = Locs[LOC_CENTER].GetPositionX()+cos(angle)*dist;
|
||||
destY = Locs[LOC_CENTER].GetPositionY()+sin(angle)*dist;
|
||||
destZ = Locs[LOC_CENTER].GetPositionZ()+1.0f;
|
||||
destX = Locs[LOC_CENTER].GetPositionX() + cos(angle) * dist;
|
||||
destY = Locs[LOC_CENTER].GetPositionY() + sin(angle) * dist;
|
||||
destZ = Locs[LOC_CENTER].GetPositionZ() + 1.0f;
|
||||
me->StopMoving();
|
||||
me->GetMotionMaster()->MoveJump(Locs[LOC_CENTER].GetPositionX()+cos(jumpangle)*35.0f, Locs[LOC_CENTER].GetPositionY()+sin(jumpangle)*35.0f, Locs[LOC_CENTER].GetPositionZ()+1.0f, 40.0f, 12.0f);
|
||||
me->GetMotionMaster()->MoveJump(Locs[LOC_CENTER].GetPositionX() + cos(jumpangle) * 35.0f, Locs[LOC_CENTER].GetPositionY() + sin(jumpangle) * 35.0f, Locs[LOC_CENTER].GetPositionZ() + 1.0f, 40.0f, 12.0f);
|
||||
|
||||
events.PopEvent();
|
||||
events.RescheduleEvent(EVENT_TRAMPLE, 1500);
|
||||
@@ -962,7 +962,7 @@ public:
|
||||
//Talk(EMOTE_TRAMPLE_START);
|
||||
me->DisableSpline();
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MoveCharge(destX, destY, destZ+1.0f, 65.0f);
|
||||
me->GetMotionMaster()->MoveCharge(destX, destY, destZ + 1.0f, 65.0f);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
events.RescheduleEvent(EVENT_CHECK_TRAMPLE_PLAYERS, 100);
|
||||
events.PopEvent();
|
||||
@@ -971,10 +971,10 @@ public:
|
||||
if( DoTrampleIfValid() )
|
||||
{
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000,15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000,5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000,50000));
|
||||
events.RescheduleEvent(EVENT_SPELL_FEROCIOUS_BUTT, urand(5000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPELL_WHIRL, urand(2000, 5000));
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCTIC_BREATH, urand(5000, 8000));
|
||||
events.RescheduleEvent(EVENT_JUMP_MIDDLE, urand(30000, 50000));
|
||||
Talk(EMOTE_TRAMPLE_FAIL);
|
||||
me->CastSpell(me, SPELL_FROTHING_RAGE, true);
|
||||
me->GetMotionMaster()->MovementExpired();
|
||||
@@ -1016,7 +1016,7 @@ public:
|
||||
|
||||
// remove loot for the other faction (items are invisible for players, done in conditions), so corpse can be skinned
|
||||
for( std::vector<LootItem>::iterator itr = me->loot.items.begin(); itr != me->loot.items.end(); ++itr )
|
||||
if( ItemTemplate const *iProto = sObjectMgr->GetItemTemplate((*itr).itemid) )
|
||||
if( ItemTemplate const* iProto = sObjectMgr->GetItemTemplate((*itr).itemid) )
|
||||
if( ((iProto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && plr->GetTeamId() != TEAM_HORDE) || ((iProto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && plr->GetTeamId() != TEAM_ALLIANCE) )
|
||||
{
|
||||
(*itr).count = 0;
|
||||
|
||||
@@ -41,7 +41,7 @@ enum ValkyrNPCs
|
||||
NPC_DARK_ESSENCE = 34567,
|
||||
NPC_LIGHT_ESSENCE = 34568,
|
||||
NPC_CONCENTRATED_DARK = 34628,
|
||||
NPC_CONCENTRATED_LIGHT= 34630,
|
||||
NPC_CONCENTRATED_LIGHT = 34630,
|
||||
};
|
||||
|
||||
enum ValkyrSpells
|
||||
@@ -108,12 +108,12 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
|
||||
// special events here
|
||||
events.RescheduleEvent(EVENT_BERSERK, IsHeroic() ? 360000 : 600000);
|
||||
events.RescheduleEvent(EVENT_SUMMON_BALLS_1, urand(10000,15000));
|
||||
events.RescheduleEvent(EVENT_SUMMON_BALLS_1, urand(10000, 15000));
|
||||
events.RescheduleEvent(EVENT_SPECIAL, 45000);
|
||||
}
|
||||
events.RescheduleEvent(EVENT_SPELL_SPIKE, urand(5000,8000));
|
||||
events.RescheduleEvent(EVENT_SPELL_SPIKE, urand(5000, 8000));
|
||||
if( IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_SPELL_TOUCH, urand(10000,25000), 1);
|
||||
events.RescheduleEvent(EVENT_SPELL_TOUCH, urand(10000, 25000), 1);
|
||||
|
||||
me->SetDisableGravity(true);
|
||||
me->SetHover(true);
|
||||
@@ -188,7 +188,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
|
||||
Creature* GetSister()
|
||||
{
|
||||
return ObjectAccessor::GetCreature(*me, pInstance->GetData64(me->GetEntry()==NPC_DARKBANE ? NPC_LIGHTBANE : NPC_DARKBANE));
|
||||
return ObjectAccessor::GetCreature(*me, pInstance->GetData64(me->GetEntry() == NPC_DARKBANE ? NPC_LIGHTBANE : NPC_DARKBANE));
|
||||
}
|
||||
|
||||
/*void AttackStart(Unit* victim)
|
||||
@@ -227,7 +227,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
Unit *victim = me->GetVictim();
|
||||
Unit* victim = me->GetVictim();
|
||||
if (!victim || !victim->IsInWorld())
|
||||
return;
|
||||
|
||||
@@ -297,13 +297,13 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
uint8 eventId = events.GetEvent();
|
||||
uint8 count = 0;
|
||||
if( IsHeroic() )
|
||||
count = eventId==EVENT_SUMMON_BALLS_3 ? 36 : 6;
|
||||
count = eventId == EVENT_SUMMON_BALLS_3 ? 36 : 6;
|
||||
else
|
||||
count = eventId==EVENT_SUMMON_BALLS_3 ? 24 : 4;
|
||||
for( uint8 i=0; i<count; ++i )
|
||||
count = eventId == EVENT_SUMMON_BALLS_3 ? 24 : 4;
|
||||
for( uint8 i = 0; i < count; ++i )
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
if( Creature* ball = me->SummonCreature((i%2) ? NPC_CONCENTRATED_DARK : NPC_CONCENTRATED_LIGHT, Locs[LOC_CENTER].GetPositionX()+cos(angle)*47.0f, Locs[LOC_CENTER].GetPositionY()+sin(angle)*47.0f, Locs[LOC_CENTER].GetPositionZ()+1.5f, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1500) )
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
if( Creature* ball = me->SummonCreature((i % 2) ? NPC_CONCENTRATED_DARK : NPC_CONCENTRATED_LIGHT, Locs[LOC_CENTER].GetPositionX() + cos(angle) * 47.0f, Locs[LOC_CENTER].GetPositionY() + sin(angle) * 47.0f, Locs[LOC_CENTER].GetPositionZ() + 1.5f, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1500) )
|
||||
boss_twin_valkyrAI::JustSummoned(ball);
|
||||
}
|
||||
events.PopEvent();
|
||||
@@ -322,8 +322,8 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
}
|
||||
break;
|
||||
case EVENT_SPELL_SPIKE:
|
||||
me->CastSpell(me->GetVictim(), me->GetEntry()==NPC_LIGHTBANE ? SPELL_LIGHT_TWIN_SPIKE : SPELL_DARK_TWIN_SPIKE, false);
|
||||
events.RepeatEvent(urand(7000,10000));
|
||||
me->CastSpell(me->GetVictim(), me->GetEntry() == NPC_LIGHTBANE ? SPELL_LIGHT_TWIN_SPIKE : SPELL_DARK_TWIN_SPIKE, false);
|
||||
events.RepeatEvent(urand(7000, 10000));
|
||||
break;
|
||||
case EVENT_SPELL_TOUCH:
|
||||
{
|
||||
@@ -373,7 +373,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
*/
|
||||
|
||||
std::vector<uint64> tList;
|
||||
Map::PlayerList const &pList = me->GetMap()->GetPlayers();
|
||||
Map::PlayerList const& pList = me->GetMap()->GetPlayers();
|
||||
if (pList.getSize())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
|
||||
@@ -383,10 +383,10 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
tList.push_back(plr->GetGUID());
|
||||
|
||||
if (!tList.empty())
|
||||
if (Player* target = ObjectAccessor::GetPlayer(*me, tList[urand(0,tList.size()-1)]))
|
||||
if (Player* target = ObjectAccessor::GetPlayer(*me, tList[urand(0, tList.size() - 1)]))
|
||||
{
|
||||
me->CastSpell(target, me->GetEntry()==NPC_LIGHTBANE ? SPELL_LIGHT_TOUCH : SPELL_DARK_TOUCH, false);
|
||||
events.RepeatEvent(urand(45000,50000));
|
||||
me->CastSpell(target, me->GetEntry() == NPC_LIGHTBANE ? SPELL_LIGHT_TOUCH : SPELL_DARK_TOUCH, false);
|
||||
events.RepeatEvent(urand(45000, 50000));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -396,8 +396,9 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
case EVENT_SPECIAL:
|
||||
{
|
||||
uint8 s;
|
||||
do s=urand(0,3); while( SpecialMask & (1<<s) && (SpecialMask & 0xF) != 0xF );
|
||||
SpecialMask |= (1<<s);
|
||||
do s = urand(0, 3);
|
||||
while( SpecialMask & (1 << s) && (SpecialMask & 0xF) != 0xF );
|
||||
SpecialMask |= (1 << s);
|
||||
switch( s )
|
||||
{
|
||||
case 0: // light vortex
|
||||
@@ -485,7 +486,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
{
|
||||
if( who->GetTypeId() == TYPEID_PLAYER )
|
||||
{
|
||||
int32 id = urand(0,1) ? SAY_KILL_PLAYER_1 : SAY_KILL_PLAYER_2;
|
||||
int32 id = urand(0, 1) ? SAY_KILL_PLAYER_1 : SAY_KILL_PLAYER_2;
|
||||
Talk(id);
|
||||
if( Creature* twin = GetSister() )
|
||||
twin->AI()->Talk(id);
|
||||
@@ -513,7 +514,7 @@ public:
|
||||
{
|
||||
boss_eydisAI(Creature* pCreature) : boss_twin_valkyrAI(pCreature)
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_AURASTATE, 1<<(19-1));
|
||||
me->SetFlag(UNIT_FIELD_AURASTATE, 1 << (19 - 1));
|
||||
SetEquipmentSlots(false, EQUIP_MAIN_2, EQUIP_OFFHAND_2, EQUIP_RANGED_2);
|
||||
if( Creature* c = me->SummonCreature(NPC_DARK_ESSENCE, Locs[LOC_DARKESS_1]) )
|
||||
boss_twin_valkyrAI::JustSummoned(c);
|
||||
@@ -539,7 +540,7 @@ public:
|
||||
{
|
||||
boss_fjolaAI(Creature* pCreature) : boss_twin_valkyrAI(pCreature)
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_AURASTATE, 1<<(22-1));
|
||||
me->SetFlag(UNIT_FIELD_AURASTATE, 1 << (22 - 1));
|
||||
SetEquipmentSlots(false, EQUIP_MAIN_1, EQUIP_OFFHAND_1, EQUIP_RANGED_1);
|
||||
if( Creature* c = me->SummonCreature(NPC_LIGHT_ESSENCE, Locs[LOC_LIGHTESS_1]) )
|
||||
boss_twin_valkyrAI::JustSummoned(c);
|
||||
@@ -665,14 +666,14 @@ class npc_concentrated_ball : public CreatureScript
|
||||
public:
|
||||
npc_concentrated_ball() : CreatureScript("npc_concentrated_ball") { }
|
||||
|
||||
CreatureAI* GetAI(Creature *pCreature) const
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
{
|
||||
return new npc_concentrated_ballAI(pCreature);
|
||||
}
|
||||
|
||||
struct npc_concentrated_ballAI : public NullCreatureAI
|
||||
{
|
||||
npc_concentrated_ballAI(Creature *pCreature) : NullCreatureAI(pCreature)
|
||||
npc_concentrated_ballAI(Creature* pCreature) : NullCreatureAI(pCreature)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetCanFly(true);
|
||||
@@ -694,14 +695,14 @@ public:
|
||||
if( type != POINT_MOTION_TYPE || id != 0 )
|
||||
return;
|
||||
|
||||
if( urand(0,2) )
|
||||
if( urand(0, 2) )
|
||||
me->DespawnOrUnsummon(0);
|
||||
}
|
||||
|
||||
void MoveToNextPoint()
|
||||
{
|
||||
float angle = rand_norm()*2*M_PI;
|
||||
me->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX()+cos(angle)*47.0f, Locs[LOC_CENTER].GetPositionY()+sin(angle)*47.0f, me->GetPositionZ());
|
||||
float angle = rand_norm() * 2 * M_PI;
|
||||
me->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX() + cos(angle) * 47.0f, Locs[LOC_CENTER].GetPositionY() + sin(angle) * 47.0f, me->GetPositionZ());
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/)
|
||||
@@ -717,184 +718,184 @@ public:
|
||||
|
||||
class spell_valkyr_essence : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_valkyr_essence() : SpellScriptLoader("spell_valkyr_essence") { }
|
||||
public:
|
||||
spell_valkyr_essence() : SpellScriptLoader("spell_valkyr_essence") { }
|
||||
|
||||
class spell_valkyr_essence_auraAuraScript : public AuraScript
|
||||
class spell_valkyr_essence_auraAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_essence_auraAuraScript)
|
||||
|
||||
void HandleAfterEffectAbsorb(AuraEffect* /*aurEff*/, DamageInfo& /*dmgInfo*/, uint32& absorbAmount)
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_essence_auraAuraScript)
|
||||
uint16 count = absorbAmount / 1000;
|
||||
if( !count || !GetOwner() )
|
||||
return;
|
||||
|
||||
void HandleAfterEffectAbsorb(AuraEffect * /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & absorbAmount)
|
||||
{
|
||||
uint16 count = absorbAmount/1000;
|
||||
if( !count || !GetOwner() )
|
||||
return;
|
||||
|
||||
if( const SpellInfo* se = GetAura()->GetSpellInfo() )
|
||||
if( Unit* owner = GetOwner()->ToUnit() )
|
||||
if( const SpellInfo* se = GetAura()->GetSpellInfo() )
|
||||
if( Unit* owner = GetOwner()->ToUnit() )
|
||||
{
|
||||
uint32 auraId = 0;
|
||||
uint32 empoweredId = 0;
|
||||
switch( se->Id )
|
||||
{
|
||||
uint32 auraId = 0;
|
||||
uint32 empoweredId = 0;
|
||||
switch( se->Id )
|
||||
case 65686:
|
||||
auraId = 67590;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 65684:
|
||||
auraId = 67590;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67222:
|
||||
auraId = 67602;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67176:
|
||||
auraId = 67602;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67223:
|
||||
auraId = 67603;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67177:
|
||||
auraId = 67603;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67224:
|
||||
auraId = 67604;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67178:
|
||||
auraId = 67604;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
}
|
||||
if( !owner->HasAura(auraId) )
|
||||
{
|
||||
owner->CastSpell(owner, SPELL_POWERING_UP, true);
|
||||
if( --count == 0 )
|
||||
return;
|
||||
}
|
||||
if( Aura* aur = owner->GetAura(auraId) )
|
||||
{
|
||||
if( aur->GetStackAmount() + count < 100 )
|
||||
{
|
||||
case 65686:
|
||||
auraId = 67590;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 65684:
|
||||
auraId = 67590;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67222:
|
||||
auraId = 67602;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67176:
|
||||
auraId = 67602;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67223:
|
||||
auraId = 67603;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67177:
|
||||
auraId = 67603;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
case 67224:
|
||||
auraId = 67604;
|
||||
empoweredId = 65748;
|
||||
break;
|
||||
case 67178:
|
||||
auraId = 67604;
|
||||
empoweredId = 65724;
|
||||
break;
|
||||
}
|
||||
if( !owner->HasAura(auraId) )
|
||||
{
|
||||
owner->CastSpell(owner, SPELL_POWERING_UP, true);
|
||||
if( --count == 0 )
|
||||
return;
|
||||
}
|
||||
if( Aura* aur = owner->GetAura(auraId) )
|
||||
{
|
||||
if( aur->GetStackAmount()+count < 100 )
|
||||
{
|
||||
aur->ModStackAmount(count);
|
||||
aur->ModStackAmount(count);
|
||||
|
||||
if (roll_chance_i(30)) // 30% chance to gain extra speed for collecting
|
||||
owner->CastSpell(owner, SPELL_SURGE_OF_SPEED, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
owner->CastSpell(owner, empoweredId, true);
|
||||
aur->Remove();
|
||||
}
|
||||
if (roll_chance_i(30)) // 30% chance to gain extra speed for collecting
|
||||
owner->CastSpell(owner, SPELL_SURGE_OF_SPEED, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
owner->CastSpell(owner, empoweredId, true);
|
||||
aur->Remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
AfterEffectAbsorb += AuraEffectAbsorbFn(spell_valkyr_essence_auraAuraScript::HandleAfterEffectAbsorb, EFFECT_0);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_essence_auraAuraScript();
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
AfterEffectAbsorb += AuraEffectAbsorbFn(spell_valkyr_essence_auraAuraScript::HandleAfterEffectAbsorb, EFFECT_0);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_essence_auraAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_valkyr_touch : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_valkyr_touch() : SpellScriptLoader("spell_valkyr_touch") { }
|
||||
public:
|
||||
spell_valkyr_touch() : SpellScriptLoader("spell_valkyr_touch") { }
|
||||
|
||||
class spell_valkyr_touchAuraScript : public AuraScript
|
||||
class spell_valkyr_touchAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_touchAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_touchAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const * aurEff)
|
||||
PreventDefaultAction();
|
||||
Unit* caster = GetCaster();
|
||||
if( !caster )
|
||||
return;
|
||||
if( caster->GetMap()->GetId() == 649 )
|
||||
{
|
||||
PreventDefaultAction();
|
||||
Unit* caster = GetCaster();
|
||||
if( !caster )
|
||||
return;
|
||||
if( caster->GetMap()->GetId() == 649 )
|
||||
{
|
||||
uint32 excludedID = GetSpellInfo()->ExcludeTargetAuraSpell;
|
||||
Map::PlayerList const &pl = caster->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( plr->IsAlive() && !plr->HasAura(excludedID) && !plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION) )
|
||||
{
|
||||
uint32 absorb=0;
|
||||
uint32 resist=0;
|
||||
CleanDamage(0, 0, BASE_ATTACK, MELEE_HIT_NORMAL);
|
||||
int32 dmg = urand(2925,3075)*(caster->GetMap()->GetDifficulty()-1);
|
||||
if (caster->CanApplyResilience())
|
||||
Unit::ApplyResilience(plr, NULL, &dmg, false, CR_CRIT_TAKEN_SPELL);
|
||||
uint32 damage = dmg;
|
||||
Unit::CalcAbsorbResist(caster, plr, GetSpellInfo()->GetSchoolMask(), DOT, damage, &absorb, &resist, GetSpellInfo());
|
||||
Unit::DealDamageMods(plr,damage,&absorb);
|
||||
int32 overkill = damage - plr->GetHealth();
|
||||
if (overkill < 0)
|
||||
overkill = 0;
|
||||
SpellPeriodicAuraLogInfo pInfo(aurEff, damage, overkill, absorb, resist, 0.0f, false);
|
||||
plr->SendPeriodicAuraLog(&pInfo);
|
||||
Unit::DealDamage(caster, plr, damage, 0, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), true);
|
||||
}
|
||||
}
|
||||
uint32 excludedID = GetSpellInfo()->ExcludeTargetAuraSpell;
|
||||
Map::PlayerList const& pl = caster->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( plr->IsAlive() && !plr->HasAura(excludedID) && !plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION) )
|
||||
{
|
||||
uint32 absorb = 0;
|
||||
uint32 resist = 0;
|
||||
CleanDamage(0, 0, BASE_ATTACK, MELEE_HIT_NORMAL);
|
||||
int32 dmg = urand(2925, 3075) * (caster->GetMap()->GetDifficulty() - 1);
|
||||
if (caster->CanApplyResilience())
|
||||
Unit::ApplyResilience(plr, NULL, &dmg, false, CR_CRIT_TAKEN_SPELL);
|
||||
uint32 damage = dmg;
|
||||
Unit::CalcAbsorbResist(caster, plr, GetSpellInfo()->GetSchoolMask(), DOT, damage, &absorb, &resist, GetSpellInfo());
|
||||
Unit::DealDamageMods(plr, damage, &absorb);
|
||||
int32 overkill = damage - plr->GetHealth();
|
||||
if (overkill < 0)
|
||||
overkill = 0;
|
||||
SpellPeriodicAuraLogInfo pInfo(aurEff, damage, overkill, absorb, resist, 0.0f, false);
|
||||
plr->SendPeriodicAuraLog(&pInfo);
|
||||
Unit::DealDamage(caster, plr, damage, 0, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_valkyr_touchAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_touchAuraScript();
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_valkyr_touchAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_touchAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_valkyr_ball_periodic_dummy : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_valkyr_ball_periodic_dummy() : SpellScriptLoader("spell_valkyr_ball_periodic_dummy") { }
|
||||
public:
|
||||
spell_valkyr_ball_periodic_dummy() : SpellScriptLoader("spell_valkyr_ball_periodic_dummy") { }
|
||||
|
||||
class spell_valkyr_ball_periodic_dummyAuraScript : public AuraScript
|
||||
class spell_valkyr_ball_periodic_dummyAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_ball_periodic_dummyAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
PrepareAuraScript(spell_valkyr_ball_periodic_dummyAuraScript)
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/)
|
||||
{
|
||||
if (Unit* target = GetTarget())
|
||||
if (target->GetDisplayId() != 11686)
|
||||
if (Creature* me = target->ToCreature())
|
||||
if (Player* p = me->SelectNearestPlayer(2.75f))
|
||||
if (me->GetExactDist2d(p) <= 2.75f)
|
||||
{
|
||||
me->AI()->DoAction(1); // despawning = true;
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->CastSpell((Unit*)NULL, me->GetEntry()==NPC_CONCENTRATED_LIGHT ? SPELL_UNLEASHED_LIGHT : SPELL_UNLEASHED_DARK, false);
|
||||
me->SetDisplayId(11686);
|
||||
me->DespawnOrUnsummon(1500);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_valkyr_ball_periodic_dummyAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_ball_periodic_dummyAuraScript();
|
||||
if (Unit* target = GetTarget())
|
||||
if (target->GetDisplayId() != 11686)
|
||||
if (Creature* me = target->ToCreature())
|
||||
if (Player* p = me->SelectNearestPlayer(2.75f))
|
||||
if (me->GetExactDist2d(p) <= 2.75f)
|
||||
{
|
||||
me->AI()->DoAction(1); // despawning = true;
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->CastSpell((Unit*)NULL, me->GetEntry() == NPC_CONCENTRATED_LIGHT ? SPELL_UNLEASHED_LIGHT : SPELL_UNLEASHED_DARK, false);
|
||||
me->SetDisplayId(11686);
|
||||
me->DespawnOrUnsummon(1500);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_valkyr_ball_periodic_dummyAuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_valkyr_ball_periodic_dummyAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_twin_valkyr()
|
||||
|
||||
@@ -116,16 +116,16 @@ public:
|
||||
|
||||
if (validDedicatedInsanityItems.empty())
|
||||
{
|
||||
for (uint32 i=0; i<dIIc; ++i)
|
||||
for (uint32 i = 0; i < dIIc; ++i)
|
||||
validDedicatedInsanityItems[dedicatedInsanityItems[i]] = true;
|
||||
}
|
||||
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* plr = itr->GetSource())
|
||||
if (!plr->IsGameMaster() && plr->IsInCombat() /*performance*/)
|
||||
{
|
||||
for (uint8 i=EQUIPMENT_SLOT_START; i<EQUIPMENT_SLOT_END; ++i) // loop through equipped items
|
||||
for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i) // loop through equipped items
|
||||
if (Item* item = plr->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
|
||||
if (!IsValidDedicatedInsanityItem(item->GetTemplate()))
|
||||
{
|
||||
@@ -189,7 +189,7 @@ public:
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( plr->IsAlive() && !plr->IsGameMaster() )
|
||||
@@ -288,7 +288,7 @@ public:
|
||||
{
|
||||
if( AttemptsLeft > 0 )
|
||||
--AttemptsLeft;
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
|
||||
@@ -358,7 +358,7 @@ public:
|
||||
c->DespawnOrUnsummon(10000);
|
||||
if( Creature* c = instance->GetCreature(NPC_DreadscaleGUID) )
|
||||
c->DespawnOrUnsummon(10000);
|
||||
if( AchievementTimer+10 >= time(nullptr) )
|
||||
if( AchievementTimer + 10 >= time(nullptr) )
|
||||
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_JORMUNGAR_ACHIEV);
|
||||
AchievementTimer = 0;
|
||||
|
||||
@@ -450,7 +450,7 @@ public:
|
||||
}
|
||||
if (GameObject* go = c->SummonGameObject(cacheEntry, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), Locs[LOC_CENTER].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 630000000))
|
||||
{
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* plr = itr->GetSource())
|
||||
if (Group* g = plr->GetGroup())
|
||||
@@ -464,7 +464,7 @@ public:
|
||||
|
||||
HandleGameObject(GO_EnterGateGUID, true);
|
||||
|
||||
if( AchievementTimer+60 >= time(nullptr) )
|
||||
if( AchievementTimer + 60 >= time(nullptr) )
|
||||
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_RESILIENCE_WILL_FIX_IT_CREDIT);
|
||||
AchievementTimer = 0;
|
||||
|
||||
@@ -486,16 +486,15 @@ public:
|
||||
}
|
||||
break;
|
||||
case TYPE_FACTION_CHAMPIONS_PLAYER_DIED:
|
||||
if( urand(0,2) == 0 )
|
||||
if( urand(0, 2) == 0 )
|
||||
{
|
||||
if( TeamIdInInstance == TEAM_HORDE )
|
||||
{
|
||||
if( Creature* pTemp = instance->GetCreature(NPC_VarianGUID) )
|
||||
pTemp->AI()->Talk(SAY_VARIAN_KILL_HORDE_PLAYER_1);
|
||||
}
|
||||
else
|
||||
if( Creature* pTemp = instance->GetCreature(NPC_GarroshGUID) )
|
||||
pTemp->AI()->Talk(SAY_GARROSH_KILL_ALLIANCE_PLAYER_1);
|
||||
else if( Creature* pTemp = instance->GetCreature(NPC_GarroshGUID) )
|
||||
pTemp->AI()->Talk(SAY_GARROSH_KILL_ALLIANCE_PLAYER_1);
|
||||
}
|
||||
break;
|
||||
case TYPE_VALKYR:
|
||||
@@ -544,7 +543,8 @@ public:
|
||||
{
|
||||
switch( type )
|
||||
{
|
||||
case TYPE_INSTANCE_PROGRESS: return InstanceProgress;
|
||||
case TYPE_INSTANCE_PROGRESS:
|
||||
return InstanceProgress;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -553,12 +553,18 @@ public:
|
||||
{
|
||||
switch( type )
|
||||
{
|
||||
case TYPE_GORMOK: return NPC_GormokGUID;
|
||||
case TYPE_DREADSCALE: return NPC_DreadscaleGUID;
|
||||
case TYPE_ACIDMAW: return NPC_AcidmawGUID;
|
||||
case NPC_DARKBANE: return NPC_DarkbaneGUID;
|
||||
case NPC_LIGHTBANE: return NPC_LightbaneGUID;
|
||||
case TYPE_ANUBARAK: return NPC_AnubarakGUID;
|
||||
case TYPE_GORMOK:
|
||||
return NPC_GormokGUID;
|
||||
case TYPE_DREADSCALE:
|
||||
return NPC_DreadscaleGUID;
|
||||
case TYPE_ACIDMAW:
|
||||
return NPC_AcidmawGUID;
|
||||
case NPC_DARKBANE:
|
||||
return NPC_DarkbaneGUID;
|
||||
case NPC_LIGHTBANE:
|
||||
return NPC_LightbaneGUID;
|
||||
case TYPE_ANUBARAK:
|
||||
return NPC_AnubarakGUID;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -693,7 +699,7 @@ public:
|
||||
if( Creature* c = instance->GetCreature(NPC_TirionGUID) )
|
||||
{
|
||||
if( Creature* dreadscale = c->SummonCreature(NPC_DREADSCALE, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY(), Locs[LOC_BEHIND_GATE].GetPositionZ(), Locs[LOC_BEHIND_GATE].GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN) )
|
||||
dreadscale->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY()-25.0f, Locs[LOC_BEHIND_GATE].GetPositionZ());
|
||||
dreadscale->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY() - 25.0f, Locs[LOC_BEHIND_GATE].GetPositionZ());
|
||||
if( Creature* acidmaw = c->SummonCreature(NPC_ACIDMAW, Locs[LOC_ACIDMAW].GetPositionX(), Locs[LOC_ACIDMAW].GetPositionY(), Locs[LOC_ACIDMAW].GetPositionZ(), Locs[LOC_ACIDMAW].GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN) )
|
||||
acidmaw->AddAura(53421, acidmaw);
|
||||
}
|
||||
@@ -793,14 +799,14 @@ public:
|
||||
if( Creature* fizzlebang = c->SummonCreature(NPC_FIZZLEBANG, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY(), Locs[LOC_BEHIND_GATE].GetPositionZ(), Locs[LOC_BEHIND_GATE].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000) )
|
||||
{
|
||||
fizzlebang->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
fizzlebang->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY()-65.0f, Locs[LOC_BEHIND_GATE].GetPositionZ()-1.0f);
|
||||
fizzlebang->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY() - 65.0f, Locs[LOC_BEHIND_GATE].GetPositionZ() - 1.0f);
|
||||
}
|
||||
events.RescheduleEvent(EVENT_SCENE_102, 20000);
|
||||
|
||||
// move Icehowl to side, can't remove corpse because of loot!
|
||||
if( Creature* icehowl = instance->GetCreature(NPC_IcehowlGUID) )
|
||||
{
|
||||
icehowl->UpdatePosition(513.19f, 139.48f, 395.22f, 3*M_PI/2, true);
|
||||
icehowl->UpdatePosition(513.19f, 139.48f, 395.22f, 3 * M_PI / 2, true);
|
||||
icehowl->StopMovingOnCurrentPos();
|
||||
icehowl->DestroyForNearbyPlayers();
|
||||
}
|
||||
@@ -852,7 +858,7 @@ public:
|
||||
if( Creature* c = instance->GetCreature(NPC_FizzlebangGUID) )
|
||||
{
|
||||
if( Creature* jaraxxus = c->SummonCreature(NPC_JARAXXUS, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), Locs[LOC_CENTER].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 630000000) )
|
||||
jaraxxus->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY()-10.0f, Locs[LOC_CENTER].GetPositionZ());
|
||||
jaraxxus->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY() - 10.0f, Locs[LOC_CENTER].GetPositionZ());
|
||||
c->HandleEmoteCommand(EMOTE_STATE_NONE);
|
||||
c->AI()->Talk(SAY_STAGE_1_04);
|
||||
}
|
||||
@@ -863,7 +869,7 @@ public:
|
||||
case EVENT_SCENE_105:
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_JaraxxusGUID) )
|
||||
c->SetFacingTo(M_PI/2);
|
||||
c->SetFacingTo(M_PI / 2);
|
||||
if( Creature* c = instance->GetCreature(NPC_PurpleGroundGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_PurpleGroundGUID = 0;
|
||||
@@ -909,7 +915,7 @@ public:
|
||||
case EVENT_SCENE_109:
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_JaraxxusGUID) )
|
||||
c->SetFacingTo(3*M_PI/2);
|
||||
c->SetFacingTo(3 * M_PI / 2);
|
||||
if( Creature* c = instance->GetCreature(NPC_TirionGUID) )
|
||||
c->AI()->Talk(SAY_STAGE_1_07);
|
||||
events.PopEvent();
|
||||
@@ -971,7 +977,7 @@ public:
|
||||
// move Jaraxxus to side, can't remove corpse because of loot!
|
||||
if( Creature* jaraxxus = instance->GetCreature(NPC_JaraxxusGUID) )
|
||||
{
|
||||
jaraxxus->UpdatePosition(613.83f, 139.5f, 395.22f, 3*M_PI/2, true);
|
||||
jaraxxus->UpdatePosition(613.83f, 139.5f, 395.22f, 3 * M_PI / 2, true);
|
||||
jaraxxus->StopMovingOnCurrentPos();
|
||||
jaraxxus->DestroyForNearbyPlayers();
|
||||
}
|
||||
@@ -984,7 +990,7 @@ public:
|
||||
break;
|
||||
case EVENT_SCENE_202:
|
||||
{
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( !plr->IsGameMaster() )
|
||||
@@ -1062,7 +1068,7 @@ public:
|
||||
healersSubtracted = 1;
|
||||
for( uint8 i = 0; i < healersSubtracted; ++i )
|
||||
{
|
||||
uint8 pos = urand(0, vHealerEntries.size()-1);
|
||||
uint8 pos = urand(0, vHealerEntries.size() - 1);
|
||||
switch( vHealerEntries[pos] )
|
||||
{
|
||||
case NPC_ALLIANCE_DRUID_RESTORATION:
|
||||
@@ -1090,12 +1096,12 @@ public:
|
||||
vOtherEntries.push_back(NPC_HORDE_SHAMAN_ENHANCEMENT);
|
||||
break;
|
||||
}
|
||||
vHealerEntries.erase(vHealerEntries.begin()+pos);
|
||||
vHealerEntries.erase(vHealerEntries.begin() + pos);
|
||||
}
|
||||
|
||||
if( instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_NORMAL || instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_HEROIC )
|
||||
for( uint8 i=0; i<4; ++i )
|
||||
vOtherEntries.erase(vOtherEntries.begin()+urand(0, vOtherEntries.size()-1));
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
vOtherEntries.erase(vOtherEntries.begin() + urand(0, vOtherEntries.size() - 1));
|
||||
|
||||
for( std::vector<uint32>::iterator itr = vHealerEntries.begin(); itr != vHealerEntries.end(); ++itr )
|
||||
vOtherEntries.push_back(*itr);
|
||||
@@ -1103,11 +1109,11 @@ public:
|
||||
uint8 pos2 = 10;
|
||||
for( std::vector<uint32>::iterator itr = vOtherEntries.begin(); itr != vOtherEntries.end(); ++itr )
|
||||
{
|
||||
if( Creature* pTemp = instance->SummonCreature(*itr, FactionChampionLoc[urand(0, 4)+(TeamIdInInstance == TEAM_ALLIANCE ? 0 : 5)]) )
|
||||
if( Creature* pTemp = instance->SummonCreature(*itr, FactionChampionLoc[urand(0, 4) + (TeamIdInInstance == TEAM_ALLIANCE ? 0 : 5)]) )
|
||||
{
|
||||
NPC_ChampionGUIDs.push_back(pTemp->GetGUID());
|
||||
pTemp->SetHomePosition((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX()*2-FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 0.0f);
|
||||
pTemp->GetMotionMaster()->MoveJump((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX()*2-FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 20.0f, 20.0f);
|
||||
pTemp->SetHomePosition((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 0.0f);
|
||||
pTemp->GetMotionMaster()->MoveJump((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 20.0f, 20.0f);
|
||||
}
|
||||
++pos2;
|
||||
}
|
||||
@@ -1216,7 +1222,7 @@ public:
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( !plr->IsGameMaster() )
|
||||
@@ -1402,7 +1408,7 @@ public:
|
||||
{
|
||||
chest->SetRespawnTime(chest->GetRespawnDelay());
|
||||
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* plr = itr->GetSource())
|
||||
if (Group* g = plr->GetGroup())
|
||||
@@ -1443,13 +1449,13 @@ public:
|
||||
bool DoNeedCleanup(bool /*enter*/)
|
||||
{
|
||||
uint8 aliveCount = 0;
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
if( plr->IsAlive() && !plr->IsGameMaster() )
|
||||
++aliveCount;
|
||||
|
||||
bool need = aliveCount==0;
|
||||
bool need = aliveCount == 0;
|
||||
if( !need && CLEANED )
|
||||
CLEANED = false;
|
||||
return need;
|
||||
@@ -1588,7 +1594,7 @@ public:
|
||||
if (instance->IsHeroic() && AttemptsLeft > 0 && !fromFailed && EncounterStatus == IN_PROGRESS)
|
||||
{
|
||||
--AttemptsLeft;
|
||||
Map::PlayerList const &pl = instance->GetPlayers();
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
|
||||
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1337);
|
||||
SendGossipMenuFor(player, gossipTextId, creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
if( !pInstance )
|
||||
return true;
|
||||
|
||||
if( uiAction == GOSSIP_ACTION_INFO_DEF+1337 )
|
||||
if( uiAction == GOSSIP_ACTION_INFO_DEF + 1337 )
|
||||
{
|
||||
pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0);
|
||||
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
@@ -253,20 +253,20 @@ enum eTexts
|
||||
SAY_STAGE_4_07 = 18,
|
||||
};
|
||||
|
||||
const Position Locs[] =
|
||||
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
|
||||
{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.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
|
||||
@@ -301,7 +301,7 @@ enum LocNames
|
||||
LOC_MAGE,
|
||||
};
|
||||
|
||||
const Position FactionChampionLoc[]=
|
||||
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
|
||||
@@ -369,20 +369,22 @@ enum euiWorldStates
|
||||
};
|
||||
|
||||
const uint32 dIIc = 405;
|
||||
const uint32 dedicatedInsanityItems[405] = {
|
||||
47658, 47659, 47660, 47661, 47662, 47664, 47665, 47666, 47667, 47668, 47670, 47671, 47672, 47673, 47674, 47675, 47677, 47678, 47681, 47682, 47684, 47685, 47686, 47687, 47688, 47689, 47690, 47691, 47692, 47693,
|
||||
47694, 47695, 47696, 47697, 47698, 47699, 47701, 47702, 47704, 47705, 47706, 47707, 47708, 47709, 47710, 47712, 47713, 47714, 47715, 47716, 47729, 47730, 47731, 47732, 47733, 47734, 47735, 47753, 47754, 47755,
|
||||
47756, 47757, 47768, 47769, 47770, 47771, 47772, 47778, 47779, 47780, 47781, 47782, 47803, 47804, 47805, 47806, 47807, 47915, 47916, 47917, 47918, 47919, 47920, 47921, 47922, 47923, 47924, 47925, 47926, 47927,
|
||||
47928, 47929, 47930, 47931, 47932, 47933, 47934, 47935, 47937, 47938, 47939, 47940, 47941, 47942, 47943, 47944, 47945, 47946, 47947, 47948, 47949, 47950, 47951, 47952, 47953, 47954, 47955, 47956, 47957, 47958,
|
||||
47959, 47960, 47961, 47962, 47963, 47964, 47965, 47966, 47967, 47968, 47969, 47970, 47971, 47972, 47973, 47974, 47975, 47976, 47977, 47978, 47979, 47983, 47984, 47985, 47986, 47987, 47988, 47989, 47990, 47991,
|
||||
47992, 47993, 47994, 47995, 47996, 47997, 47998, 47999, 48000, 48001, 48002, 48003, 48004, 48005, 48006, 48007, 48008, 48009, 48010, 48011, 48012, 48013, 48014, 48015, 48016, 48017, 48018, 48019, 48020, 48021,
|
||||
48022, 48023, 48024, 48025, 48026, 48027, 48028, 48030, 48032, 48034, 48036, 48038, 48039, 48040, 48041, 48042, 48043, 48044, 48045, 48046, 48047, 48048, 48049, 48050, 48051, 48052, 48053, 48054, 48055, 48056,
|
||||
48062, 48063, 48064, 48065, 48066, 48077, 48078, 48079, 48080, 48081, 48092, 48093, 48094, 48095, 48096, 48133, 48134, 48135, 48136, 48137, 48148, 48149, 48150, 48151, 48152, 48163, 48164, 48165, 48166, 48167,
|
||||
48178, 48179, 48180, 48181, 48182, 48193, 48194, 48195, 48196, 48197, 48208, 48209, 48210, 48211, 48212, 48223, 48224, 48225, 48226, 48227, 48238, 48239, 48240, 48241, 48242, 48255, 48256, 48257, 48258, 48259,
|
||||
48270, 48271, 48272, 48273, 48274, 48285, 48286, 48287, 48288, 48289, 48300, 48301, 48302, 48303, 48304, 48316, 48317, 48318, 48319, 48320, 48331, 48332, 48333, 48334, 48335, 48346, 48347, 48348, 48349, 48350,
|
||||
48361, 48362, 48363, 48364, 48365, 48376, 48377, 48378, 48379, 48380, 48391, 48392, 48393, 48394, 48395, 48430, 48446, 48450, 48452, 48454, 48461, 48462, 48463, 48464, 48465, 48481, 48482, 48483, 48484, 48485,
|
||||
48496, 48497, 48498, 48499, 48500, 48538, 48539, 48540, 48541, 48542, 48553, 48554, 48555, 48556, 48557, 48575, 48576, 48577, 48578, 48579, 48590, 48591, 48592, 48593, 48594, 48607, 48608, 48609, 48610, 48611,
|
||||
48622, 48623, 48624, 48625, 48626, 48637, 48638, 48639, 48640, 48641, 48657, 48658, 48659, 48660, 48661, 48666, 48667, 48668, 48669, 48670, 48671, 48672, 48673, 48674, 48675, 48693, 48695, 48697, 48699, 48701,
|
||||
48703, 48705, 48708, 48709, 48710, 48711, 48712, 48713, 48714, 48722, 48724, 49233, 49234, 49237, 49238 };
|
||||
const uint32 dedicatedInsanityItems[405] =
|
||||
{
|
||||
47658, 47659, 47660, 47661, 47662, 47664, 47665, 47666, 47667, 47668, 47670, 47671, 47672, 47673, 47674, 47675, 47677, 47678, 47681, 47682, 47684, 47685, 47686, 47687, 47688, 47689, 47690, 47691, 47692, 47693,
|
||||
47694, 47695, 47696, 47697, 47698, 47699, 47701, 47702, 47704, 47705, 47706, 47707, 47708, 47709, 47710, 47712, 47713, 47714, 47715, 47716, 47729, 47730, 47731, 47732, 47733, 47734, 47735, 47753, 47754, 47755,
|
||||
47756, 47757, 47768, 47769, 47770, 47771, 47772, 47778, 47779, 47780, 47781, 47782, 47803, 47804, 47805, 47806, 47807, 47915, 47916, 47917, 47918, 47919, 47920, 47921, 47922, 47923, 47924, 47925, 47926, 47927,
|
||||
47928, 47929, 47930, 47931, 47932, 47933, 47934, 47935, 47937, 47938, 47939, 47940, 47941, 47942, 47943, 47944, 47945, 47946, 47947, 47948, 47949, 47950, 47951, 47952, 47953, 47954, 47955, 47956, 47957, 47958,
|
||||
47959, 47960, 47961, 47962, 47963, 47964, 47965, 47966, 47967, 47968, 47969, 47970, 47971, 47972, 47973, 47974, 47975, 47976, 47977, 47978, 47979, 47983, 47984, 47985, 47986, 47987, 47988, 47989, 47990, 47991,
|
||||
47992, 47993, 47994, 47995, 47996, 47997, 47998, 47999, 48000, 48001, 48002, 48003, 48004, 48005, 48006, 48007, 48008, 48009, 48010, 48011, 48012, 48013, 48014, 48015, 48016, 48017, 48018, 48019, 48020, 48021,
|
||||
48022, 48023, 48024, 48025, 48026, 48027, 48028, 48030, 48032, 48034, 48036, 48038, 48039, 48040, 48041, 48042, 48043, 48044, 48045, 48046, 48047, 48048, 48049, 48050, 48051, 48052, 48053, 48054, 48055, 48056,
|
||||
48062, 48063, 48064, 48065, 48066, 48077, 48078, 48079, 48080, 48081, 48092, 48093, 48094, 48095, 48096, 48133, 48134, 48135, 48136, 48137, 48148, 48149, 48150, 48151, 48152, 48163, 48164, 48165, 48166, 48167,
|
||||
48178, 48179, 48180, 48181, 48182, 48193, 48194, 48195, 48196, 48197, 48208, 48209, 48210, 48211, 48212, 48223, 48224, 48225, 48226, 48227, 48238, 48239, 48240, 48241, 48242, 48255, 48256, 48257, 48258, 48259,
|
||||
48270, 48271, 48272, 48273, 48274, 48285, 48286, 48287, 48288, 48289, 48300, 48301, 48302, 48303, 48304, 48316, 48317, 48318, 48319, 48320, 48331, 48332, 48333, 48334, 48335, 48346, 48347, 48348, 48349, 48350,
|
||||
48361, 48362, 48363, 48364, 48365, 48376, 48377, 48378, 48379, 48380, 48391, 48392, 48393, 48394, 48395, 48430, 48446, 48450, 48452, 48454, 48461, 48462, 48463, 48464, 48465, 48481, 48482, 48483, 48484, 48485,
|
||||
48496, 48497, 48498, 48499, 48500, 48538, 48539, 48540, 48541, 48542, 48553, 48554, 48555, 48556, 48557, 48575, 48576, 48577, 48578, 48579, 48590, 48591, 48592, 48593, 48594, 48607, 48608, 48609, 48610, 48611,
|
||||
48622, 48623, 48624, 48625, 48626, 48637, 48638, 48639, 48640, 48641, 48657, 48658, 48659, 48660, 48661, 48666, 48667, 48668, 48669, 48670, 48671, 48672, 48673, 48674, 48675, 48693, 48695, 48697, 48699, 48701,
|
||||
48703, 48705, 48708, 48709, 48710, 48711, 48712, 48713, 48714, 48722, 48724, 49233, 49234, 49237, 49238
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user