refactor(Core/Scripts): restyle scripts lib with astyle (#3467)

This commit is contained in:
Kargatum
2020-10-11 15:35:34 +07:00
committed by GitHub
parent 4cca286a4d
commit 5e20b46812
538 changed files with 92888 additions and 91297 deletions

View File

@@ -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()

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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*/)

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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;

View File

@@ -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()

View File

@@ -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);

View File

@@ -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);

View File

@@ -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