diff options
| author | ModoX <moardox@gmail.com> | 2023-11-24 21:08:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-24 21:08:00 +0100 |
| commit | 3f6f683ce4b5f4a95a2d70921de2c80de6b3a8fe (patch) | |
| tree | f5601a0099a13aacef4bb115679ac51858ac9e42 /src/server/scripts/Outland | |
| parent | b299902881cb6525b5a6cc08c5721c0c1c7401ab (diff) | |
Core/Waypoints: Drop waypoint_scripts table (#29437)
Diffstat (limited to 'src/server/scripts/Outland')
3 files changed, 57 insertions, 3 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index 38a7fd78d66..d7d3c6245c7 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -57,6 +57,11 @@ enum BlackheartEvents EVENT_WAR_STOMP }; +enum BlackheartPaths +{ + PATH_BLACKHEART_IDLE = 5354960, +}; + class BlackheartCharmedPlayerAI : public SimpleCharmedPlayerAI { using SimpleCharmedPlayerAI::SimpleCharmedPlayerAI; @@ -161,6 +166,17 @@ struct boss_blackheart_the_inciter : public BossAI DoMeleeAttackIfReady(); } + + void WaypointReached(uint32 waypointId, uint32 pathId) override + { + if (pathId != PATH_BLACKHEART_IDLE) + return; + + if (waypointId == 2) + Talk(SAY_DEATH); // ? + else if (waypointId == 3) + Talk(SAY_AGGRO); // ? + } }; struct boss_blackheart_the_inciter_mc_dummy : public NullCreatureAI diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp index 2330a2f75ba..3aa3f7c4541 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp @@ -35,7 +35,7 @@ like lack of delays between packets makes it work differently too. Of course as was said above player can be pulled towards 2 times in a row but that looks like a rare case. */ -enum Spells +enum BlackStalkerSpells { SPELL_LEVITATE = 31704, SPELL_CHAIN_LIGHTNING = 31717, @@ -52,7 +52,7 @@ enum Spells SPELL_SUMMON_SPORE_STRIDER = 38755 }; -enum Events +enum BlackStalkerEvents { EVENT_LEASH_CHECK = 1, EVENT_LEVITATE, @@ -61,6 +61,11 @@ enum Events EVENT_SUMMON_SPORE_STRIDER }; +enum BlackStalkerPaths +{ + PATH_BLACK_STALKER_IDLE = 4346960, +}; + struct boss_the_black_stalker : public BossAI { boss_the_black_stalker(Creature* creature) : BossAI(creature, DATA_THE_BLACK_STALKER), _summons(creature) { } @@ -68,6 +73,8 @@ struct boss_the_black_stalker : public BossAI void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); + scheduler.CancelAll(); + _events.ScheduleEvent(EVENT_LEASH_CHECK, 5s); _events.ScheduleEvent(EVENT_LEVITATE, 8s, 18s); _events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 0s, 3s); @@ -130,6 +137,20 @@ struct boss_the_black_stalker : public BossAI DoMeleeAttackIfReady(); } + void WaypointReached(uint32 waypointId, uint32 pathId) override + { + if (pathId != PATH_BLACK_STALKER_IDLE) + return; + + if (waypointId == 2 || waypointId == 4 || waypointId == 6) + { + scheduler.Schedule(2s, [this](TaskContext /*task*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_EAT); + }); + } + } + private: EventMap _events; SummonList _summons; diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index 1bbf80b84e9..c13395e9adc 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -429,7 +429,9 @@ enum PlantBannerQuests NPC_KIL_SORROW_DEATHSWORN = 17148, NPC_GISELDA_THE_CRONE = 18391, NPC_WARMAUL_REAVER = 17138, - NPC_WARMAUL_SHAMAN = 18064 + NPC_WARMAUL_SHAMAN = 18064, + + PATH_NAGRAND_BANNER = 4816480, }; class npc_nagrand_banner : public CreatureScript @@ -474,6 +476,21 @@ public: return bannered; } + void WaypointReached(uint32 waypointId, uint32 pathId) override + { + if (pathId != PATH_NAGRAND_BANNER) + return; + + if (waypointId == 11) + me->HandleEmoteCommand(EMOTE_ONESHOT_APPLAUD); + else if (waypointId == 4 || waypointId == 8) + me->HandleEmoteCommand(EMOTE_ONESHOT_TALK); + else if (waypointId == 10) + me->HandleEmoteCommand(EMOTE_ONESHOT_POINT); + else if (waypointId == 3 || waypointId == 7) + me->HandleEmoteCommand(EMOTE_STATE_USE_STANDING); + } + protected: TaskScheduler scheduler; |
