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

@@ -44,7 +44,7 @@ enum Misc
WEAPON_KIRTONOS_STAFF = 11365,
POINT_KIRTONOS_LAND = 13,
KIRTONOS_PATH = 105061,
EMOTE_SUMMONED = 0
};
@@ -56,163 +56,164 @@ Position const PosMove[2] =
class boss_kirtonos_the_herald : public CreatureScript
{
public: boss_kirtonos_the_herald() : CreatureScript("boss_kirtonos_the_herald") { }
public:
boss_kirtonos_the_herald() : CreatureScript("boss_kirtonos_the_herald") { }
struct boss_kirtonos_the_heraldAI : public ScriptedAI
struct boss_kirtonos_the_heraldAI : public ScriptedAI
{
boss_kirtonos_the_heraldAI(Creature* creature) : ScriptedAI(creature)
{
boss_kirtonos_the_heraldAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
}
EventMap events;
EventMap events2;
InstanceScript* instance;
void EnterCombat(Unit* /*who*/)
{
events.Reset();
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 2000);
events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 6000);
events.ScheduleEvent(EVENT_DOMINATE_MIND, 20000);
events.ScheduleEvent(EVENT_KIRTONOS_TRANSFORM, 5000);
}
void JustDied(Unit* /*killer*/)
{
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_ACTIVE);
instance->SetData(DATA_KIRTONOS_THE_HERALD, DONE);
}
void EnterEvadeMode()
{
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_ACTIVE);
instance->SetData(DATA_KIRTONOS_THE_HERALD, NOT_STARTED);
me->DespawnOrUnsummon(1);
}
void IsSummonedBy(Unit* /*summoner*/)
{
events2.Reset();
events2.ScheduleEvent(INTRO_1, 500);
me->SetDisableGravity(true);
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
Talk(EMOTE_SUMMONED);
}
void MovementInform(uint32 type, uint32 id)
{
if (type == WAYPOINT_MOTION_TYPE && id == POINT_KIRTONOS_LAND)
{
events2.ScheduleEvent(INTRO_2, 1500);
events2.ScheduleEvent(INTRO_3, 2500);
events2.ScheduleEvent(INTRO_4, 5500);
events2.ScheduleEvent(INTRO_5, 6500);
events2.ScheduleEvent(INTRO_6, 11500);
}
}
void UpdateAI(uint32 diff)
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case INTRO_1:
me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
break;
case INTRO_2:
me->GetMotionMaster()->MovePoint(0, PosMove[0]);
break;
case INTRO_3:
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_READY);
me->SetFacingTo(0.01745329f);
break;
case INTRO_4:
me->SetWalk(true);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_KIRTONOS_TRANSFORM, true);
me->SetCanFly(false);
break;
case INTRO_5:
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
break;
case INTRO_6:
me->GetMotionMaster()->MovePoint(0, PosMove[1]);
break;
}
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_SWOOP:
me->CastSpell(me->GetVictim(), SPELL_SWOOP, false);
events.ScheduleEvent(EVENT_SWOOP, 15000);
break;
case EVENT_WING_FLAP:
me->CastSpell(me, SPELL_WING_FLAP, false);
events.ScheduleEvent(EVENT_WING_FLAP, 13000);
break;
case EVENT_PIERCE_ARMOR:
me->CastSpell(me->GetVictim(), SPELL_PIERCE_ARMOR, false);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 12000);
break;
case EVENT_DISARM:
me->CastSpell(me->GetVictim(), SPELL_DISARM, false);
events.ScheduleEvent(EVENT_DISARM, 11000);
break;
case EVENT_SHADOW_BOLT_VOLLEY:
me->CastSpell(me, SPELL_SHADOW_BOLT_VOLLEY, false);
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 10000);
break;
case EVENT_CURSE_OF_TONGUES:
me->CastSpell(me, SPELL_CURSE_OF_TONGUES, false);
events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 20000);
break;
case EVENT_DOMINATE_MIND:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 20.0f, true))
me->CastSpell(target, SPELL_DOMINATE_MIND, false);
events.ScheduleEvent(EVENT_DOMINATE_MIND, urand(44000, 48000));
break;
case EVENT_KIRTONOS_TRANSFORM:
if (me->HealthBelowPct(50))
{
events.Reset();
events.ScheduleEvent(EVENT_SWOOP, 4000);
events.ScheduleEvent(EVENT_WING_FLAP, 7000);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 11000);
events.ScheduleEvent(EVENT_DISARM, 15000);
me->RemoveAura(SPELL_KIRTONOS_TRANSFORM);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0));
break;
}
events.ScheduleEvent(EVENT_KIRTONOS_TRANSFORM, 2000);
break;
}
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI(Creature* creature) const
{
return GetInstanceAI<boss_kirtonos_the_heraldAI>(creature);
instance = me->GetInstanceScript();
}
EventMap events;
EventMap events2;
InstanceScript* instance;
void EnterCombat(Unit* /*who*/)
{
events.Reset();
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 2000);
events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 6000);
events.ScheduleEvent(EVENT_DOMINATE_MIND, 20000);
events.ScheduleEvent(EVENT_KIRTONOS_TRANSFORM, 5000);
}
void JustDied(Unit* /*killer*/)
{
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_ACTIVE);
instance->SetData(DATA_KIRTONOS_THE_HERALD, DONE);
}
void EnterEvadeMode()
{
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_ACTIVE);
instance->SetData(DATA_KIRTONOS_THE_HERALD, NOT_STARTED);
me->DespawnOrUnsummon(1);
}
void IsSummonedBy(Unit* /*summoner*/)
{
events2.Reset();
events2.ScheduleEvent(INTRO_1, 500);
me->SetDisableGravity(true);
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
Talk(EMOTE_SUMMONED);
}
void MovementInform(uint32 type, uint32 id)
{
if (type == WAYPOINT_MOTION_TYPE && id == POINT_KIRTONOS_LAND)
{
events2.ScheduleEvent(INTRO_2, 1500);
events2.ScheduleEvent(INTRO_3, 2500);
events2.ScheduleEvent(INTRO_4, 5500);
events2.ScheduleEvent(INTRO_5, 6500);
events2.ScheduleEvent(INTRO_6, 11500);
}
}
void UpdateAI(uint32 diff)
{
events2.Update(diff);
switch (events2.ExecuteEvent())
{
case INTRO_1:
me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
break;
case INTRO_2:
me->GetMotionMaster()->MovePoint(0, PosMove[0]);
break;
case INTRO_3:
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
gate->SetGoState(GO_STATE_READY);
me->SetFacingTo(0.01745329f);
break;
case INTRO_4:
me->SetWalk(true);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_KIRTONOS_TRANSFORM, true);
me->SetCanFly(false);
break;
case INTRO_5:
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
break;
case INTRO_6:
me->GetMotionMaster()->MovePoint(0, PosMove[1]);
break;
}
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_SWOOP:
me->CastSpell(me->GetVictim(), SPELL_SWOOP, false);
events.ScheduleEvent(EVENT_SWOOP, 15000);
break;
case EVENT_WING_FLAP:
me->CastSpell(me, SPELL_WING_FLAP, false);
events.ScheduleEvent(EVENT_WING_FLAP, 13000);
break;
case EVENT_PIERCE_ARMOR:
me->CastSpell(me->GetVictim(), SPELL_PIERCE_ARMOR, false);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 12000);
break;
case EVENT_DISARM:
me->CastSpell(me->GetVictim(), SPELL_DISARM, false);
events.ScheduleEvent(EVENT_DISARM, 11000);
break;
case EVENT_SHADOW_BOLT_VOLLEY:
me->CastSpell(me, SPELL_SHADOW_BOLT_VOLLEY, false);
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 10000);
break;
case EVENT_CURSE_OF_TONGUES:
me->CastSpell(me, SPELL_CURSE_OF_TONGUES, false);
events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 20000);
break;
case EVENT_DOMINATE_MIND:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 20.0f, true))
me->CastSpell(target, SPELL_DOMINATE_MIND, false);
events.ScheduleEvent(EVENT_DOMINATE_MIND, urand(44000, 48000));
break;
case EVENT_KIRTONOS_TRANSFORM:
if (me->HealthBelowPct(50))
{
events.Reset();
events.ScheduleEvent(EVENT_SWOOP, 4000);
events.ScheduleEvent(EVENT_WING_FLAP, 7000);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 11000);
events.ScheduleEvent(EVENT_DISARM, 15000);
me->RemoveAura(SPELL_KIRTONOS_TRANSFORM);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0));
break;
}
events.ScheduleEvent(EVENT_KIRTONOS_TRANSFORM, 2000);
break;
}
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI(Creature* creature) const
{
return GetInstanceAI<boss_kirtonos_the_heraldAI>(creature);
}
};
void AddSC_boss_kirtonos_the_herald()

View File

@@ -12,245 +12,245 @@
class instance_scholomance : public InstanceMapScript
{
public:
instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { }
public:
instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { }
InstanceScript* GetInstanceScript(InstanceMap* map) const
InstanceScript* GetInstanceScript(InstanceMap* map) const
{
return new instance_scholomance_InstanceMapScript(map);
}
struct instance_scholomance_InstanceMapScript : public InstanceScript
{
instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map),
GateKirtonosGUID { 0 },
GateMiliciaGUID { 0 },
GateTheolenGUID { 0 },
GatePolkeltGUID { 0 },
GateRavenianGUID { 0 },
GateBarovGUID { 0 },
GateIlluciaGUID { 0 },
_kirtonosState { 0 },
_miniBosses { 0 },
_rasHuman { 0 }
{ }
void OnGameObjectCreate(GameObject* go)
{
return new instance_scholomance_InstanceMapScript(map);
switch (go->GetEntry())
{
case GO_GATE_KIRTONOS:
GateKirtonosGUID = go->GetGUID();
break;
case GO_GATE_MALICIA:
GateMiliciaGUID = go->GetGUID();
break;
case GO_GATE_THEOLEN:
GateTheolenGUID = go->GetGUID();
break;
case GO_GATE_POLKELT:
GatePolkeltGUID = go->GetGUID();
break;
case GO_GATE_RAVENIAN:
GateRavenianGUID = go->GetGUID();
break;
case GO_GATE_BAROV:
GateBarovGUID = go->GetGUID();
break;
case GO_GATE_ILLUCIA:
GateIlluciaGUID = go->GetGUID();
break;
}
}
struct instance_scholomance_InstanceMapScript : public InstanceScript
uint64 GetData64(uint32 type) const
{
instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map),
GateKirtonosGUID { 0 },
GateMiliciaGUID { 0 },
GateTheolenGUID { 0 },
GatePolkeltGUID { 0 },
GateRavenianGUID { 0 },
GateBarovGUID { 0 },
GateIlluciaGUID { 0 },
_kirtonosState { 0 },
_miniBosses { 0 },
_rasHuman { 0 }
{ }
void OnGameObjectCreate(GameObject* go)
switch (type)
{
switch (go->GetEntry())
{
case GO_GATE_KIRTONOS:
GateKirtonosGUID = go->GetGUID();
break;
case GO_GATE_MALICIA:
GateMiliciaGUID = go->GetGUID();
break;
case GO_GATE_THEOLEN:
GateTheolenGUID = go->GetGUID();
break;
case GO_GATE_POLKELT:
GatePolkeltGUID = go->GetGUID();
break;
case GO_GATE_RAVENIAN:
GateRavenianGUID = go->GetGUID();
break;
case GO_GATE_BAROV:
GateBarovGUID = go->GetGUID();
break;
case GO_GATE_ILLUCIA:
GateIlluciaGUID = go->GetGUID();
break;
}
case GO_GATE_KIRTONOS:
return GateKirtonosGUID;
case GO_GATE_MALICIA:
return GateMiliciaGUID;
case GO_GATE_THEOLEN:
return GateTheolenGUID;
case GO_GATE_POLKELT:
return GatePolkeltGUID;
case GO_GATE_RAVENIAN:
return GateRavenianGUID;
case GO_GATE_BAROV:
return GateBarovGUID;
case GO_GATE_ILLUCIA:
return GateIlluciaGUID;
}
uint64 GetData64(uint32 type) const
{
switch (type)
{
case GO_GATE_KIRTONOS:
return GateKirtonosGUID;
case GO_GATE_MALICIA:
return GateMiliciaGUID;
case GO_GATE_THEOLEN:
return GateTheolenGUID;
case GO_GATE_POLKELT:
return GatePolkeltGUID;
case GO_GATE_RAVENIAN:
return GateRavenianGUID;
case GO_GATE_BAROV:
return GateBarovGUID;
case GO_GATE_ILLUCIA:
return GateIlluciaGUID;
}
return 0;
}
return 0;
void SetData(uint32 type, uint32 data)
{
switch (type)
{
case DATA_KIRTONOS_THE_HERALD:
_kirtonosState = data;
break;
case DATA_MINI_BOSSES:
++_miniBosses;
break;
case DATA_RAS_HUMAN:
_rasHuman = data;
break;
}
void SetData(uint32 type, uint32 data)
SaveToDB();
}
uint32 GetData(uint32 type) const
{
switch (type)
{
switch (type)
{
case DATA_KIRTONOS_THE_HERALD:
_kirtonosState = data;
break;
case DATA_MINI_BOSSES:
++_miniBosses;
break;
case DATA_RAS_HUMAN:
_rasHuman = data;
break;
}
SaveToDB();
case DATA_KIRTONOS_THE_HERALD:
return _kirtonosState;
case DATA_MINI_BOSSES:
return _miniBosses;
case DATA_RAS_HUMAN:
return _rasHuman;
}
return 0;
}
uint32 GetData(uint32 type) const
std::string GetSaveData()
{
std::ostringstream saveStream;
saveStream << "S O " << _kirtonosState << ' ' << _miniBosses;
return saveStream.str();
}
void Load(const char* str)
{
if (!str)
return;
char dataHead1, dataHead2;
std::istringstream loadStream(str);
loadStream >> dataHead1 >> dataHead2;
if (dataHead1 == 'S' && dataHead2 == 'O')
{
switch (type)
{
case DATA_KIRTONOS_THE_HERALD:
return _kirtonosState;
case DATA_MINI_BOSSES:
return _miniBosses;
case DATA_RAS_HUMAN:
return _rasHuman;
}
return 0;
loadStream >> _kirtonosState;
loadStream >> _miniBosses;
if (_kirtonosState == IN_PROGRESS)
_kirtonosState = NOT_STARTED;
}
}
std::string GetSaveData()
{
std::ostringstream saveStream;
saveStream << "S O " << _kirtonosState << ' ' << _miniBosses;
return saveStream.str();
}
protected:
uint64 GateKirtonosGUID;
uint64 GateMiliciaGUID;
uint64 GateTheolenGUID;
uint64 GatePolkeltGUID;
uint64 GateRavenianGUID;
uint64 GateBarovGUID;
uint64 GateIlluciaGUID;
void Load(const char* str)
{
if (!str)
return;
char dataHead1, dataHead2;
std::istringstream loadStream(str);
loadStream >> dataHead1 >> dataHead2;
if (dataHead1 == 'S' && dataHead2 == 'O')
{
loadStream >> _kirtonosState;
loadStream >> _miniBosses;
if (_kirtonosState == IN_PROGRESS)
_kirtonosState = NOT_STARTED;
}
}
protected:
uint64 GateKirtonosGUID;
uint64 GateMiliciaGUID;
uint64 GateTheolenGUID;
uint64 GatePolkeltGUID;
uint64 GateRavenianGUID;
uint64 GateBarovGUID;
uint64 GateIlluciaGUID;
uint32 _kirtonosState;
uint32 _miniBosses;
uint32 _rasHuman;
};
uint32 _kirtonosState;
uint32 _miniBosses;
uint32 _rasHuman;
};
};
class spell_scholomance_fixate : public SpellScriptLoader
{
public:
spell_scholomance_fixate() : SpellScriptLoader("spell_scholomance_fixate") { }
public:
spell_scholomance_fixate() : SpellScriptLoader("spell_scholomance_fixate") { }
class spell_scholomance_fixate_AuraScript : public AuraScript
class spell_scholomance_fixate_AuraScript : public AuraScript
{
PrepareAuraScript(spell_scholomance_fixate_AuraScript);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
PrepareAuraScript(spell_scholomance_fixate_AuraScript);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
if (Unit* caster = GetCaster())
caster->TauntApply(target);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
if (Unit* caster = GetCaster())
caster->TauntFadeOut(target);
}
void Register()
{
OnEffectApply += AuraEffectApplyFn(spell_scholomance_fixate_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_scholomance_fixate_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_scholomance_fixate_AuraScript();
Unit* target = GetTarget();
if (Unit* caster = GetCaster())
caster->TauntApply(target);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
if (Unit* caster = GetCaster())
caster->TauntFadeOut(target);
}
void Register()
{
OnEffectApply += AuraEffectApplyFn(spell_scholomance_fixate_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_scholomance_fixate_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_scholomance_fixate_AuraScript();
}
};
class spell_kormok_summon_bone_mages : SpellScriptLoader
{
public:
spell_kormok_summon_bone_mages() : SpellScriptLoader("spell_kormok_summon_bone_mages") { }
public:
spell_kormok_summon_bone_mages() : SpellScriptLoader("spell_kormok_summon_bone_mages") { }
class spell_kormok_summon_bone_magesSpellScript : public SpellScript
class spell_kormok_summon_bone_magesSpellScript : public SpellScript
{
PrepareSpellScript(spell_kormok_summon_bone_magesSpellScript);
void HandleScript(SpellEffIndex effIndex)
{
PrepareSpellScript(spell_kormok_summon_bone_magesSpellScript);
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
for (uint8 i = 0; i < 2; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_BONE_MAGE_FRONT_LEFT+urand(0, 3), true);
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_kormok_summon_bone_magesSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_kormok_summon_bone_magesSpellScript();
PreventHitDefaultEffect(effIndex);
for (uint8 i = 0; i < 2; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_BONE_MAGE_FRONT_LEFT + urand(0, 3), true);
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_kormok_summon_bone_magesSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_kormok_summon_bone_magesSpellScript();
}
};
class spell_kormok_summon_bone_minions : SpellScriptLoader
{
public:
spell_kormok_summon_bone_minions() : SpellScriptLoader("spell_kormok_summon_bone_minions") { }
public:
spell_kormok_summon_bone_minions() : SpellScriptLoader("spell_kormok_summon_bone_minions") { }
class spell_kormok_summon_bone_minionsSpellScript : public SpellScript
class spell_kormok_summon_bone_minionsSpellScript : public SpellScript
{
PrepareSpellScript(spell_kormok_summon_bone_minionsSpellScript);
void HandleScript(SpellEffIndex effIndex)
{
PrepareSpellScript(spell_kormok_summon_bone_minionsSpellScript);
PreventHitDefaultEffect(effIndex);
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
for (uint32 i = 0; i < 4; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_BONE_MINION1+i, true);
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_kormok_summon_bone_minionsSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_kormok_summon_bone_minionsSpellScript();
for (uint32 i = 0; i < 4; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_BONE_MINION1 + i, true);
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_kormok_summon_bone_minionsSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_kormok_summon_bone_minionsSpellScript();
}
};
enum Rooms
@@ -266,93 +266,93 @@ enum Rooms
class spell_scholomance_shadow_portal : public SpellScriptLoader
{
public:
spell_scholomance_shadow_portal() : SpellScriptLoader("spell_scholomance_shadow_portal") { }
public:
spell_scholomance_shadow_portal() : SpellScriptLoader("spell_scholomance_shadow_portal") { }
class spell_scholomance_shadow_portal_SpellScript : public SpellScript
class spell_scholomance_shadow_portal_SpellScript : public SpellScript
{
PrepareSpellScript(spell_scholomance_shadow_portal_SpellScript);
bool Load()
{
PrepareSpellScript(spell_scholomance_shadow_portal_SpellScript);
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
bool Load()
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Creature* caster = GetCaster()->ToCreature();
uint8 attempts = 0;
uint8 room = urand(ROOM_HALL_OF_SECRETS, ROOM_VAULT_OF_THE_RAVENIAN);
uint32 spellId = 0;
while (attempts < ROOM_MAX)
{
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Creature* caster = GetCaster()->ToCreature();
uint8 attempts = 0;
uint8 room = urand(ROOM_HALL_OF_SECRETS, ROOM_VAULT_OF_THE_RAVENIAN);
uint32 spellId = 0;
while (attempts < ROOM_MAX)
switch (room)
{
switch (room)
{
case ROOM_HALL_OF_SECRETS:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_RAVENIAN)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_HALLOFSECRETS;
break;
case ROOM_HALL_OF_THE_DAMNED:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_THEOLEN)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_HALLOFTHEDAMNED;
break;
case ROOM_THE_COVEN:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_MALICIA)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_THECOVEN;
break;
case ROOM_THE_SHADOW_VAULT:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_ILLUCIA)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_THESHADOWVAULT;
break;
case ROOM_BAROV_FAMILY_VAULT:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_BAROV)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_BAROVFAMILYVAULT;
break;
case ROOM_VAULT_OF_THE_RAVENIAN:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_POLKELT)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_VAULTOFTHERAVENIAN;
break;
}
if (spellId)
{
caster->CastSpell(GetHitUnit(), spellId, true);
case ROOM_HALL_OF_SECRETS:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_RAVENIAN)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_HALLOFSECRETS;
break;
}
else
{
room = (room+1)%ROOM_MAX;
++attempts;
}
case ROOM_HALL_OF_THE_DAMNED:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_THEOLEN)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_HALLOFTHEDAMNED;
break;
case ROOM_THE_COVEN:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_MALICIA)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_THECOVEN;
break;
case ROOM_THE_SHADOW_VAULT:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_ILLUCIA)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_THESHADOWVAULT;
break;
case ROOM_BAROV_FAMILY_VAULT:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_BAROV)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_BAROVFAMILYVAULT;
break;
case ROOM_VAULT_OF_THE_RAVENIAN:
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(GO_GATE_POLKELT)))
if (gate->GetGoState() == GO_STATE_ACTIVE)
spellId = SPELL_SHADOW_PORTAL_VAULTOFTHERAVENIAN;
break;
}
if (spellId)
{
caster->CastSpell(GetHitUnit(), spellId, true);
break;
}
else
{
room = (room + 1) % ROOM_MAX;
++attempts;
}
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_scholomance_shadow_portal_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const
{
return new spell_scholomance_shadow_portal_SpellScript();
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_scholomance_shadow_portal_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const
{
return new spell_scholomance_shadow_portal_SpellScript();
}
};
Position const SummonPos[3*ROOM_MAX] =
Position const SummonPos[3 * ROOM_MAX] =
{
// Hall of Secrects
{ 230.80f, 0.138f, 85.23f, 0.0f },
@@ -382,131 +382,131 @@ Position const SummonPos[3*ROOM_MAX] =
class spell_scholomance_shadow_portal_rooms : public SpellScriptLoader
{
public:
spell_scholomance_shadow_portal_rooms() : SpellScriptLoader("spell_scholomance_shadow_portal_rooms") { }
public:
spell_scholomance_shadow_portal_rooms() : SpellScriptLoader("spell_scholomance_shadow_portal_rooms") { }
class spell_scholomance_shadow_portal_rooms_SpellScript : public SpellScript
class spell_scholomance_shadow_portal_rooms_SpellScript : public SpellScript
{
PrepareSpellScript(spell_scholomance_shadow_portal_rooms_SpellScript);
bool Load()
{
PrepareSpellScript(spell_scholomance_shadow_portal_rooms_SpellScript);
bool Load()
{
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
void HandleSendEvent(SpellEffIndex effIndex)
{
PreventHitEffect(effIndex);
Creature* caster = GetCaster()->ToCreature();
uint8 summonPos = 0;
uint32 gateId = 0;
switch (GetSpellInfo()->Id)
{
case SPELL_SHADOW_PORTAL_HALLOFSECRETS:
summonPos = ROOM_HALL_OF_SECRETS*3;
gateId = GO_GATE_POLKELT;
break;
case SPELL_SHADOW_PORTAL_HALLOFTHEDAMNED:
summonPos = ROOM_HALL_OF_THE_DAMNED*3;
gateId = GO_GATE_THEOLEN;
break;
case SPELL_SHADOW_PORTAL_THECOVEN:
summonPos = ROOM_THE_COVEN*3;
gateId = GO_GATE_MALICIA;
break;
case SPELL_SHADOW_PORTAL_THESHADOWVAULT:
summonPos = ROOM_THE_SHADOW_VAULT*3;
gateId = GO_GATE_ILLUCIA;
break;
case SPELL_SHADOW_PORTAL_BAROVFAMILYVAULT:
summonPos = ROOM_BAROV_FAMILY_VAULT*4;
gateId = GO_GATE_BAROV;
break;
case SPELL_SHADOW_PORTAL_VAULTOFTHERAVENIAN:
summonPos = ROOM_VAULT_OF_THE_RAVENIAN*3;
gateId = GO_GATE_RAVENIAN;
break;
}
if (gateId && (GetCaster()->GetMap()->GetId() == 289))
{
for (uint8 i = 0; i < 3; ++i)
{
if (Creature* summon = GetCaster()->SummonCreature(NPC_RISEN_GUARDIAN, SummonPos[summonPos+i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000))
{
summon->GetMotionMaster()->MoveRandom(8.0f);
summon->AI()->SetData(0, summonPos/3 + 1);
}
}
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(gateId)))
{
gate->SetGoState(GO_STATE_READY);
gate->AI()->SetData(1, 1);
}
}
}
void Register()
{
OnEffectHit += SpellEffectFn(spell_scholomance_shadow_portal_rooms_SpellScript::HandleSendEvent, EFFECT_1, SPELL_EFFECT_SEND_EVENT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_scholomance_shadow_portal_rooms_SpellScript();
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
void HandleSendEvent(SpellEffIndex effIndex)
{
PreventHitEffect(effIndex);
Creature* caster = GetCaster()->ToCreature();
uint8 summonPos = 0;
uint32 gateId = 0;
switch (GetSpellInfo()->Id)
{
case SPELL_SHADOW_PORTAL_HALLOFSECRETS:
summonPos = ROOM_HALL_OF_SECRETS * 3;
gateId = GO_GATE_POLKELT;
break;
case SPELL_SHADOW_PORTAL_HALLOFTHEDAMNED:
summonPos = ROOM_HALL_OF_THE_DAMNED * 3;
gateId = GO_GATE_THEOLEN;
break;
case SPELL_SHADOW_PORTAL_THECOVEN:
summonPos = ROOM_THE_COVEN * 3;
gateId = GO_GATE_MALICIA;
break;
case SPELL_SHADOW_PORTAL_THESHADOWVAULT:
summonPos = ROOM_THE_SHADOW_VAULT * 3;
gateId = GO_GATE_ILLUCIA;
break;
case SPELL_SHADOW_PORTAL_BAROVFAMILYVAULT:
summonPos = ROOM_BAROV_FAMILY_VAULT * 4;
gateId = GO_GATE_BAROV;
break;
case SPELL_SHADOW_PORTAL_VAULTOFTHERAVENIAN:
summonPos = ROOM_VAULT_OF_THE_RAVENIAN * 3;
gateId = GO_GATE_RAVENIAN;
break;
}
if (gateId && (GetCaster()->GetMap()->GetId() == 289))
{
for (uint8 i = 0; i < 3; ++i)
{
if (Creature* summon = GetCaster()->SummonCreature(NPC_RISEN_GUARDIAN, SummonPos[summonPos + i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000))
{
summon->GetMotionMaster()->MoveRandom(8.0f);
summon->AI()->SetData(0, summonPos / 3 + 1);
}
}
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
if (GameObject* gate = ObjectAccessor::GetGameObject(*caster, instance->GetData64(gateId)))
{
gate->SetGoState(GO_STATE_READY);
gate->AI()->SetData(1, 1);
}
}
}
void Register()
{
OnEffectHit += SpellEffectFn(spell_scholomance_shadow_portal_rooms_SpellScript::HandleSendEvent, EFFECT_1, SPELL_EFFECT_SEND_EVENT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_scholomance_shadow_portal_rooms_SpellScript();
}
};
class spell_scholomance_boon_of_life : public SpellScriptLoader
{
public:
spell_scholomance_boon_of_life() : SpellScriptLoader("spell_scholomance_boon_of_life") { }
public:
spell_scholomance_boon_of_life() : SpellScriptLoader("spell_scholomance_boon_of_life") { }
class spell_scholomance_boon_of_life_AuraScript : public AuraScript
class spell_scholomance_boon_of_life_AuraScript : public AuraScript
{
PrepareAuraScript(spell_scholomance_boon_of_life_AuraScript);
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
PrepareAuraScript(spell_scholomance_boon_of_life_AuraScript);
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
if (Unit* target = GetTarget())
if (Creature* creature = target->ToCreature())
{
creature->AI()->AttackStart(caster);
creature->AddThreat(caster, 10000.0f);
}
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
if (Unit* target = GetTarget())
if (Creature* creature = target->ToCreature())
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_CANCEL)
{
creature->AI()->Talk(TALK_RAS_HUMAN);
creature->SetDisplayId(MODEL_RAS_HUMAN);
creature->SetHealth(target->GetMaxHealth());
if (InstanceScript* instance = creature->GetInstanceScript())
instance->SetData(DATA_RAS_HUMAN,1);
{
creature->AI()->AttackStart(caster);
creature->AddThreat(caster, 10000.0f);
}
}
void Register()
{
OnEffectRemove += AuraEffectRemoveFn(spell_scholomance_boon_of_life_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply += AuraEffectApplyFn(spell_scholomance_boon_of_life_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_scholomance_boon_of_life_AuraScript();
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* target = GetTarget())
if (Creature* creature = target->ToCreature())
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_CANCEL)
{
creature->AI()->Talk(TALK_RAS_HUMAN);
creature->SetDisplayId(MODEL_RAS_HUMAN);
creature->SetHealth(target->GetMaxHealth());
if (InstanceScript* instance = creature->GetInstanceScript())
instance->SetData(DATA_RAS_HUMAN, 1);
}
}
void Register()
{
OnEffectRemove += AuraEffectRemoveFn(spell_scholomance_boon_of_life_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply += AuraEffectApplyFn(spell_scholomance_boon_of_life_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_scholomance_boon_of_life_AuraScript();
}
};
void AddSC_instance_scholomance()