diff options
| author | offl <suffle.o@gmail.com> | 2025-05-11 14:29:13 +0200 |
|---|---|---|
| committer | ModoX <moardox@gmail.com> | 2025-05-17 13:20:21 +0200 |
| commit | 06041687565754562b2c266b4195b00cf3e53260 (patch) | |
| tree | 09efd6bbde8f76d57d10ae3126faa80af4fac707 /src/server | |
| parent | 98972550171108bc4b50100d8c923a62f8df1086 (diff) | |
Scripts/TheSlavePens: Modernize scripts
Diffstat (limited to 'src/server')
4 files changed, 109 insertions, 146 deletions
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp index 3cfdb5853a5..894a582e138 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp @@ -34,7 +34,7 @@ #include "TemporarySummon.h" #include "the_slave_pens.h" -enum Spells +enum AhuneSpells { // Ahune SPELL_SYNCH_HEALTH = 46430, @@ -94,21 +94,21 @@ enum Spells SPELL_GHOST_DISGUISE = 46786 }; -enum Emotes +enum AhuneEmotes { EMOTE_EARTHEN_ASSAULT = 0, EMOTE_RETREAT = 0, EMOTE_RESURFACE = 1 }; -enum Says +enum AhuneTexts { SAY_PLAYER_TEXT_1 = 0, SAY_PLAYER_TEXT_2 = 1, SAY_PLAYER_TEXT_3 = 2 }; -enum Events +enum AhuneEvents { EVENT_EMERGE = 1, EVENT_INITIAL_EMERGE, @@ -127,7 +127,7 @@ enum Events EVENT_STOP_LOOKING_FOR_OPENING }; -enum Actions +enum AhuneActions { ACTION_START_EVENT = -2574500, ACTION_STOP_EVENT = -2574501, @@ -136,20 +136,20 @@ enum Actions ACTION_EMOTE_RESURFACE = -2575400 }; -enum Phases +enum AhunePhases { PHASE_ONE = 0, PHASE_TWO = 1 }; -enum Points +enum AhunePoints { POINT_FLAMECALLER_000, POINT_FLAMECALLER_001, POINT_FLAMECALLER_002 }; -enum Misc +enum AhuneMisc { MAX_FLAMECALLERS = 3 }; @@ -170,6 +170,7 @@ Position const FlameCallerSpots[] = { -129.0413f, -132.1494f, -2.09285f, 5.460842f } }; +// 25740 - Ahune struct boss_ahune : public BossAI { boss_ahune(Creature* creature) : BossAI(creature, DATA_AHUNE) @@ -272,6 +273,7 @@ struct boss_ahune : public BossAI } }; +// 25865 - Frozen Core struct npc_frozen_core : public ScriptedAI { npc_frozen_core(Creature* creature) : ScriptedAI(creature) @@ -342,6 +344,7 @@ private: EventMap _events; }; +// 25745 - [PH] Ahune Summon Loc Bunny struct npc_ahune_bunny : public ScriptedAI { npc_ahune_bunny(Creature* creature) : ScriptedAI(creature), _summons(me) @@ -477,6 +480,7 @@ private: bool _submerged; }; +// 25754 - Earthen Ring Flamecaller struct npc_earthen_ring_flamecaller : public ScriptedAI { npc_earthen_ring_flamecaller(Creature* creature) : ScriptedAI(creature) @@ -594,6 +598,7 @@ private: uint8 _mySpot; }; +// 25985 - Ahune Ice Spear Bunny struct npc_ahune_ice_spear_bunny : public ScriptedAI { npc_ahune_ice_spear_bunny(Creature* creature) : ScriptedAI(creature) { } @@ -680,9 +685,9 @@ class spell_ahune_synch_health : public SpellScript }; // 45926 - Summoning Rhyme Aura -class spell_summoning_rhyme_aura : public AuraScript +class spell_ahune_summoning_rhyme_aura : public AuraScript { - PrepareAuraScript(spell_summoning_rhyme_aura); + PrepareAuraScript(spell_ahune_summoning_rhyme_aura); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -719,14 +724,14 @@ class spell_summoning_rhyme_aura : public AuraScript void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_summoning_rhyme_aura::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ahune_summoning_rhyme_aura::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; // 46878 - Summon Ice Spear Delayer -class spell_summon_ice_spear_delayer : public AuraScript +class spell_ahune_summon_ice_spear_delayer : public AuraScript { - PrepareAuraScript(spell_summon_ice_spear_delayer); + PrepareAuraScript(spell_ahune_summon_ice_spear_delayer); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -742,14 +747,14 @@ class spell_summon_ice_spear_delayer : public AuraScript void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_summon_ice_spear_delayer::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ahune_summon_ice_spear_delayer::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; // 46371 - Ice Spear Control Aura -class spell_ice_spear_control_aura : public AuraScript +class spell_ahune_ice_spear_control_aura : public AuraScript { - PrepareAuraScript(spell_ice_spear_control_aura); + PrepareAuraScript(spell_ahune_ice_spear_control_aura); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -764,14 +769,14 @@ class spell_ice_spear_control_aura : public AuraScript void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_ice_spear_control_aura::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ahune_ice_spear_control_aura::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; // 46372 - Ice Spear Target Picker -class spell_ice_spear_target_picker : public SpellScript +class spell_ahune_ice_spear_target_picker : public SpellScript { - PrepareSpellScript(spell_ice_spear_target_picker); + PrepareSpellScript(spell_ahune_ice_spear_target_picker); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -795,15 +800,15 @@ class spell_ice_spear_target_picker : public SpellScript void Register() override { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_ice_spear_target_picker::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY); - OnEffectHitTarget += SpellEffectFn(spell_ice_spear_target_picker::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_ahune_ice_spear_target_picker::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY); + OnEffectHitTarget += SpellEffectFn(spell_ahune_ice_spear_target_picker::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // 46320 - Spell Slippery Floor Periodic -class spell_slippery_floor_periodic : public SpellScript +class spell_ahune_slippery_floor_periodic : public SpellScript { - PrepareSpellScript(spell_slippery_floor_periodic); + PrepareSpellScript(spell_ahune_slippery_floor_periodic); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -822,7 +827,7 @@ class spell_slippery_floor_periodic : public SpellScript void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_slippery_floor_periodic::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + OnEffectHitTarget += SpellEffectFn(spell_ahune_slippery_floor_periodic::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -866,9 +871,9 @@ class spell_ahune_minion_despawner : public SpellScript }; // 46398 - Spell Ice Bombardment Dest Picker -class spell_ice_bombardment_dest_picker : public SpellScript +class spell_ahune_ice_bombardment_dest_picker : public SpellScript { - PrepareSpellScript(spell_ice_bombardment_dest_picker); + PrepareSpellScript(spell_ahune_ice_bombardment_dest_picker); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -882,7 +887,7 @@ class spell_ice_bombardment_dest_picker : public SpellScript void Register() override { - OnEffectHit += SpellEffectFn(spell_ice_bombardment_dest_picker::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHit += SpellEffectFn(spell_ahune_ice_bombardment_dest_picker::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -896,12 +901,12 @@ void AddSC_boss_ahune() RegisterSlavePensGameObjectAI(go_ahune_ice_spear); RegisterSlavePensGameObjectAI(go_ahune_ice_stone); RegisterSpellScript(spell_ahune_synch_health); - RegisterSpellScript(spell_summoning_rhyme_aura); - RegisterSpellScript(spell_summon_ice_spear_delayer); - RegisterSpellScript(spell_ice_spear_control_aura); - RegisterSpellScript(spell_ice_spear_target_picker); - RegisterSpellScript(spell_slippery_floor_periodic); + RegisterSpellScript(spell_ahune_summoning_rhyme_aura); + RegisterSpellScript(spell_ahune_summon_ice_spear_delayer); + RegisterSpellScript(spell_ahune_ice_spear_control_aura); + RegisterSpellScript(spell_ahune_ice_spear_target_picker); + RegisterSpellScript(spell_ahune_slippery_floor_periodic); RegisterSpellScript(spell_ahune_spanky_hands); RegisterSpellScript(spell_ahune_minion_despawner); - RegisterSpellScript(spell_ice_bombardment_dest_picker); + RegisterSpellScript(spell_ahune_ice_bombardment_dest_picker); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp index 715472ca760..06fc07c48cf 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp @@ -15,65 +15,48 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: boss_mennu_the_betrayer -SD%Complete: 95% -SDComment: -SDCategory: Coilfang Reservoir, The Slave Pens -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "the_slave_pens.h" -enum Say +enum MennuTexts { SAY_AGGRO = 0, SAY_SLAY = 1, SAY_DEATH = 2 }; -enum Spells +enum MennuSpells { - SPELL_TAINTED_STONESKIN_TOTEM = 31985, // every 30 sec if health below 100% - SPELL_TAINTED_EARTHGRAB_TOTEM = 31981, // ? - SPELL_CORRUPTED_NOVA_TOTEM = 31991, // ? - SPELL_MENNUS_HEALING_WARD = 34980, // every 14 - 25 sec - SPELL_LIGHTNING_BOLT = 35010 // every 14 - 19 sec + SPELL_TAINTED_STONESKIN_TOTEM = 31985, + SPELL_TAINTED_EARTHGRAB_TOTEM = 31981, + SPELL_CORRUPTED_NOVA_TOTEM = 31991, + SPELL_MENNUS_HEALING_WARD = 34980, + SPELL_LIGHTNING_BOLT = 35010 }; -enum Events +enum MennuEvents { EVENT_TAINTED_STONESKIN_TOTEM = 1, - EVENT_TAINTED_EARTHGRAB_TOTEM = 2, - EVENT_CORRUPTED_NOVA_TOTEM = 3, - EVENT_MENNUS_HEALING_WARD = 4, - EVENT_LIGHTNING_BOLT = 5 + EVENT_TAINTED_EARTHGRAB_TOTEM, + EVENT_CORRUPTED_NOVA_TOTEM, + EVENT_MENNUS_HEALING_WARD, + EVENT_LIGHTNING_BOLT }; +// 17941 - Mennu the Betrayer struct boss_mennu_the_betrayer : public BossAI { boss_mennu_the_betrayer(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER) { } - void Reset() override - { - _Reset(); - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - Talk(SAY_DEATH); - } - void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s); - events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 20s); - events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 1min); - events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s); - events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 19s); + events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s, 40s); + events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 20s, 30s); + events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 20s, 30s); + events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 15s, 25s); + events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 10s, 20s); Talk(SAY_AGGRO); } @@ -82,6 +65,12 @@ struct boss_mennu_the_betrayer : public BossAI Talk(SAY_SLAY); } + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(SAY_DEATH); + } + void UpdateAI(uint32 diff) override { if (!UpdateVictim()) @@ -97,23 +86,24 @@ struct boss_mennu_the_betrayer : public BossAI switch (eventId) { case EVENT_TAINTED_STONESKIN_TOTEM: - if (HealthBelowPct(100)) - DoCast(me, SPELL_TAINTED_STONESKIN_TOTEM); - events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30s); + DoCastSelf(SPELL_TAINTED_STONESKIN_TOTEM); + events.Repeat(35s, 40s); break; case EVENT_TAINTED_EARTHGRAB_TOTEM: - DoCast(me, SPELL_TAINTED_EARTHGRAB_TOTEM); + DoCastSelf(SPELL_TAINTED_EARTHGRAB_TOTEM); + events.Repeat(35s, 40s); break; case EVENT_CORRUPTED_NOVA_TOTEM: - DoCast(me, SPELL_CORRUPTED_NOVA_TOTEM); + DoCastSelf(SPELL_CORRUPTED_NOVA_TOTEM); + events.Repeat(35s, 40s); break; case EVENT_MENNUS_HEALING_WARD: - DoCast(me, SPELL_MENNUS_HEALING_WARD); - events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, 14s, 25s); + DoCastSelf(SPELL_MENNUS_HEALING_WARD); + events.Repeat(35s, 40s); break; case EVENT_LIGHTNING_BOLT: - DoCastVictim(SPELL_LIGHTNING_BOLT, true); - events.ScheduleEvent(EVENT_LIGHTNING_BOLT, 14s, 25s); + DoCastVictim(SPELL_LIGHTNING_BOLT); + events.Repeat(15s, 25s); break; default: break; diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp index 197d2a73332..17747074c15 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp @@ -15,47 +15,31 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: boss_quagmirran -SD%Complete: 100% -SDComment: -SDCategory: Coilfang Reservoir, The Slave Pens -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "the_slave_pens.h" -enum Spells +enum QuagmirranSpells { SPELL_ACID_SPRAY = 38153, SPELL_CLEAVE = 40504, SPELL_UPPERCUT = 32055, - SPELL_POISON_BOLT_VOLLEY = 34780 // 39340 + SPELL_POISON_BOLT_VOLLEY = 34780 }; -enum Events +enum QuagmirranEvents { EVENT_ACID_SPRAY = 1, - EVENT_CLEAVE = 2, - EVENT_UPPERCUT = 3, - EVENT_POISON_BOLT_VOLLEY = 4 + EVENT_CLEAVE, + EVENT_UPPERCUT, + EVENT_POISON_BOLT_VOLLEY }; +// 17942 - Quagmirran struct boss_quagmirran : public BossAI { boss_quagmirran(Creature* creature) : BossAI(creature, DATA_QUAGMIRRAN) { } - void Reset() override - { - _Reset(); - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - } - void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); @@ -65,8 +49,6 @@ struct boss_quagmirran : public BossAI events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 31s); } - void KilledUnit(Unit* /*victim*/) override { } - void UpdateAI(uint32 diff) override { if (!UpdateVictim()) @@ -83,20 +65,20 @@ struct boss_quagmirran : public BossAI { case EVENT_ACID_SPRAY: DoCastAOE(SPELL_ACID_SPRAY); - events.ScheduleEvent(EVENT_ACID_SPRAY, 20s, 25s); + events.Repeat(20s, 25s); break; case EVENT_CLEAVE: - DoCastVictim(SPELL_CLEAVE, true); - events.ScheduleEvent(EVENT_CLEAVE, 18s, 34s); + DoCastVictim(SPELL_CLEAVE); + events.Repeat(18s, 34s); break; case EVENT_UPPERCUT: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 10.0f, true)) DoCast(target, SPELL_UPPERCUT); - events.ScheduleEvent(EVENT_UPPERCUT, 22s); + events.Repeat(22s); break; case EVENT_POISON_BOLT_VOLLEY: - DoCast(me, SPELL_POISON_BOLT_VOLLEY); - events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 24s); + DoCastSelf(SPELL_POISON_BOLT_VOLLEY); + events.Repeat(24s); break; default: break; diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp index 45768c64463..7dd51ebb2e6 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp @@ -15,18 +15,11 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: boss_rokmar_the_crackler -SD%Complete: 100% -SDComment: -SDCategory: Coilfang Reservoir, The Slave Pens -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "the_slave_pens.h" -enum Spells +enum RokmarSpells { SPELL_GRIEVOUS_WOUND = 31956, SPELL_ENSNARING_MOSS = 31948, @@ -34,34 +27,23 @@ enum Spells SPELL_FRENZY = 34970 }; -enum Events +enum RokmarEvents { EVENT_GRIEVOUS_WOUND = 1, - EVENT_ENSNARING_MOSS = 2, - EVENT_WATER_SPIT = 3 + EVENT_ENSNARING_MOSS, + EVENT_WATER_SPIT, + EVENT_FRENZY }; +// 17991 - Rokmar the Crackler struct boss_rokmar_the_crackler : public BossAI { - boss_rokmar_the_crackler(Creature* creature) : BossAI(creature, DATA_ROKMAR_THE_CRACKLER) - { - Initialize(); - } - - void Initialize() - { - rokmarFrenzy = false; - } + boss_rokmar_the_crackler(Creature* creature) : BossAI(creature, DATA_ROKMAR_THE_CRACKLER), _frenzied(false) { } void Reset() override { _Reset(); - Initialize(); - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); + _frenzied = false; } void JustEngagedWith(Unit* who) override @@ -72,7 +54,14 @@ struct boss_rokmar_the_crackler : public BossAI events.ScheduleEvent(EVENT_WATER_SPIT, 14s); } - void KilledUnit(Unit* /*victim*/) override { } + void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override + { + if (!_frenzied && me->HealthBelowPctDamaged(10, damage)) + { + _frenzied = true; + events.ScheduleEvent(EVENT_FRENZY, 0s); + } + } void UpdateAI(uint32 diff) override { @@ -89,16 +78,19 @@ struct boss_rokmar_the_crackler : public BossAI switch (eventId) { case EVENT_GRIEVOUS_WOUND: - DoCastVictim(SPELL_GRIEVOUS_WOUND, true); - events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 20s, 30s); + DoCastVictim(SPELL_GRIEVOUS_WOUND); + events.Repeat(20s, 30s); break; case EVENT_ENSNARING_MOSS: DoCastAOE(SPELL_ENSNARING_MOSS); - events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20s, 30s); + events.Repeat(20s, 30s); break; case EVENT_WATER_SPIT: DoCastAOE(SPELL_WATER_SPIT); - events.ScheduleEvent(EVENT_WATER_SPIT, 14s, 18s); + events.Repeat(14s, 18s); + break; + case EVENT_FRENZY: + DoCastSelf(SPELL_FRENZY); break; default: break; @@ -108,17 +100,11 @@ struct boss_rokmar_the_crackler : public BossAI return; } - if (HealthBelowPct(10) && !rokmarFrenzy) - { - DoCast(me, SPELL_FRENZY); - rokmarFrenzy = true; - } - DoMeleeAttackIfReady(); } private: - bool rokmarFrenzy; + bool _frenzied; }; void AddSC_boss_rokmar_the_crackler() |
