fix(Core/Scripts): Convert Galen's Escape to SAI (#5683)

This commit is contained in:
Silker
2021-05-09 14:20:32 -06:00
committed by GitHub
parent 583d06b3bd
commit 534ec53bb0
4 changed files with 77 additions and 142 deletions

View File

@@ -111,7 +111,6 @@ set(scripts_STAT_SRCS
${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
${AC_SCRIPTS_DIR}/EasternKingdoms/Uldaman/uldaman.h
${AC_SCRIPTS_DIR}/EasternKingdoms/Uldaman/instance_uldaman.cpp
${AC_SCRIPTS_DIR}/EasternKingdoms/zone_swamp_of_sorrows.cpp
${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/sunwell_plateau.h

View File

@@ -1,139 +0,0 @@
/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version.
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*/
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "ScriptMgr.h"
/*######
## npc_galen_goodward
######*/
enum Galen
{
QUEST_GALENS_ESCAPE = 1393,
GO_GALENS_CAGE = 37118,
SAY_PERIODIC = 0,
SAY_QUEST_ACCEPTED = 1,
SAY_ATTACKED = 2,
SAY_QUEST_COMPLETE = 3,
EMOTE_WHISPER = 4,
EMOTE_DISAPPEAR = 5
};
class npc_galen_goodward : public CreatureScript
{
public:
npc_galen_goodward() : CreatureScript("npc_galen_goodward") { }
struct npc_galen_goodwardAI : public npc_escortAI
{
npc_galen_goodwardAI(Creature* creature) : npc_escortAI(creature)
{
galensCageGUID.Clear();
Reset();
}
void Reset() override
{
periodicSay = 6000;
}
void EnterCombat(Unit* who) override
{
if (HasEscortState(STATE_ESCORT_ESCORTING))
Talk(SAY_ATTACKED, who);
}
void sQuestAccept(Player* player, Quest const* quest) override
{
if (quest->GetQuestId() == QUEST_GALENS_ESCAPE)
{
Talk(SAY_QUEST_ACCEPTED, player);
npc_escortAI::Start(false, false, player->GetGUID(), quest);
}
}
void WaypointStart(uint32 uiPointId) override
{
switch (uiPointId)
{
case 0:
{
GameObject* cage = nullptr;
if (galensCageGUID)
cage = me->GetMap()->GetGameObject(galensCageGUID);
else
cage = GetClosestGameObjectWithEntry(me, GO_GALENS_CAGE, INTERACTION_DISTANCE);
if (cage)
{
cage->UseDoorOrButton();
galensCageGUID = cage->GetGUID();
}
break;
}
case 21:
Talk(EMOTE_DISAPPEAR);
break;
}
}
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
{
case 0:
if (GameObject* cage = me->GetMap()->GetGameObject(galensCageGUID))
cage->ResetDoorOrButton();
break;
case 20:
if (Player* player = GetPlayerForEscort())
{
me->SetFacingToObject(player);
Talk(SAY_QUEST_COMPLETE, player);
Talk(EMOTE_WHISPER, player);
player->GroupEventHappens(QUEST_GALENS_ESCAPE, me);
}
SetRun(true);
break;
}
}
void UpdateAI(uint32 diff) override
{
npc_escortAI::UpdateAI(diff);
if (HasEscortState(STATE_ESCORT_NONE))
return;
if (periodicSay < diff)
{
if (!HasEscortState(STATE_ESCORT_ESCORTING))
Talk(SAY_PERIODIC);
periodicSay = 15000;
}
else
periodicSay -= diff;
DoMeleeAttackIfReady();
}
private:
ObjectGuid galensCageGUID;
uint32 periodicSay;
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_galen_goodwardAI(creature);
}
};
void AddSC_swamp_of_sorrows()
{
new npc_galen_goodward();
}

View File

@@ -217,7 +217,7 @@ void AddSC_redridge_mountains();
void AddSC_silverpine_forest();
void AddSC_stormwind_city();
void AddSC_stranglethorn_vale();
void AddSC_swamp_of_sorrows();
//void AddSC_swamp_of_sorrows();
void AddSC_tirisfal_glades();
void AddSC_undercity();
void AddSC_western_plaguelands();
@@ -807,7 +807,7 @@ void AddEasternKingdomsScripts()
AddSC_silverpine_forest();
AddSC_stormwind_city();
AddSC_stranglethorn_vale();
AddSC_swamp_of_sorrows();
//AddSC_swamp_of_sorrows();
AddSC_tirisfal_glades();
AddSC_undercity();
AddSC_western_plaguelands();