aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-08-12 13:14:54 -0500
committerSubv <s.v.h21@hotmail.com>2012-08-12 13:14:54 -0500
commit75af5ac3535e8726a03f9575357f44f3981989a0 (patch)
tree223975bf4052be33d6332e0885eb802cb9f59230 /src
parent7d75c2818df5545e1633d20403be1c640fcde410 (diff)
Scripts/Quests: Removed more deprecated quest scripts in Eastern Kingdoms
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/ghostlands.cpp40
-rw-r--r--src/server/scripts/EasternKingdoms/hinterlands.cpp201
-rw-r--r--src/server/scripts/EasternKingdoms/ironforge.cpp67
-rw-r--r--src/server/scripts/EasternKingdoms/loch_modan.cpp74
-rw-r--r--src/server/scripts/EasternKingdoms/redridge_mountains.cpp146
-rw-r--r--src/server/scripts/EasternKingdoms/silverpine_forest.cpp189
-rw-r--r--src/server/scripts/EasternKingdoms/stormwind_city.cpp613
-rw-r--r--src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp130
-rw-r--r--src/server/scripts/EasternKingdoms/tirisfal_glades.cpp185
9 files changed, 13 insertions, 1632 deletions
diff --git a/src/server/scripts/EasternKingdoms/ghostlands.cpp b/src/server/scripts/EasternKingdoms/ghostlands.cpp
index 9793c6fd31c..dcc938f35fe 100644
--- a/src/server/scripts/EasternKingdoms/ghostlands.cpp
+++ b/src/server/scripts/EasternKingdoms/ghostlands.cpp
@@ -19,13 +19,11 @@
/* ScriptData
SDName: Ghostlands
SD%Complete: 100
-SDComment: Quest support: 9692, 9212. Obtain Budd's Guise of Zul'aman. Vendor Rathis Tomber
+SDComment:
SDCategory: Ghostlands
EndScriptData */
/* ContentData
-npc_blood_knight_dawnstar
-npc_budd_nedreck
npc_rathis_tomber
npc_ranger_lilatha
EndContentData */
@@ -36,41 +34,6 @@ EndContentData */
#include "ScriptedEscortAI.h"
/*######
-## npc_budd_nedreck
-######*/
-
-#define GOSSIP_HBN "You gave the crew disguises?"
-
-class npc_budd_nedreck : public CreatureScript
-{
-public:
- npc_budd_nedreck() : CreatureScript("npc_budd_nedreck") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- if (action == GOSSIP_ACTION_INFO_DEF)
- {
- player->CLOSE_GOSSIP_MENU();
- creature->CastSpell(player, 42540, false);
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(11166) == QUEST_STATUS_INCOMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- return true;
- }
-};
-
-/*######
## npc_rathis_tomber
######*/
@@ -218,7 +181,6 @@ public:
void AddSC_ghostlands()
{
- new npc_budd_nedreck();
new npc_rathis_tomber();
new npc_ranger_lilatha();
}
diff --git a/src/server/scripts/EasternKingdoms/hinterlands.cpp b/src/server/scripts/EasternKingdoms/hinterlands.cpp
index a6d01f0ca93..096c0f2e2a6 100644
--- a/src/server/scripts/EasternKingdoms/hinterlands.cpp
+++ b/src/server/scripts/EasternKingdoms/hinterlands.cpp
@@ -19,13 +19,12 @@
/* ScriptData
SDName: Hinterlands
SD%Complete: 100
-SDComment: Quest support: 863, 2742
+SDComment: Quest support: 836
SDCategory: The Hinterlands
EndScriptData */
/* ContentData
npc_00x09hl
-npc_rinji
EndContentData */
#include "ScriptMgr.h"
@@ -149,205 +148,7 @@ public:
};
};
-/*######
-## npc_rinji
-######*/
-
-enum eRinji
-{
- SAY_RIN_FREE = -1000403, //from here
- SAY_RIN_BY_OUTRUNNER = -1000404,
- SAY_RIN_HELP_1 = -1000405,
- SAY_RIN_HELP_2 = -1000406, //to here, are used also by 6182 but this is wrong...
- SAY_RIN_COMPLETE = -1000407,
- SAY_RIN_PROGRESS_1 = -1000408,
- SAY_RIN_PROGRESS_2 = -1000409,
-
- QUEST_RINJI_TRAPPED = 2742,
- NPC_RANGER = 2694,
- NPC_OUTRUNNER = 2691,
- GO_RINJI_CAGE = 142036
-};
-
-struct Location
-{
- float m_fX, m_fY, m_fZ;
-};
-
-Location m_afAmbushSpawn[] =
-{
- {191.296204f, -2839.329346f, 107.388f},
- {70.972466f, -2848.674805f, 109.459f}
-};
-
-Location m_afAmbushMoveTo[] =
-{
- {166.630386f, -2824.780273f, 108.153f},
- {70.886589f, -2874.335449f, 116.675f}
-};
-
-class npc_rinji : public CreatureScript
-{
-public:
- npc_rinji() : CreatureScript("npc_rinji") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, const Quest* quest)
- {
- if (quest->GetQuestId() == QUEST_RINJI_TRAPPED)
- {
- if (GameObject* go = creature->FindNearestGameObject(GO_RINJI_CAGE, INTERACTION_DISTANCE))
- go->UseDoorOrButton();
-
- if (npc_rinjiAI* pEscortAI = CAST_AI(npc_rinji::npc_rinjiAI, creature->AI()))
- pEscortAI->Start(false, false, player->GetGUID(), quest);
- }
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_rinjiAI(creature);
- }
-
- struct npc_rinjiAI : public npc_escortAI
- {
- npc_rinjiAI(Creature* creature) : npc_escortAI(creature)
- {
- m_bIsByOutrunner = false;
- m_iSpawnId = 0;
- }
-
- bool m_bIsByOutrunner;
- uint32 m_uiPostEventCount;
- uint32 m_uiPostEventTimer;
- int m_iSpawnId;
-
- void Reset()
- {
- m_uiPostEventCount = 0;
- m_uiPostEventTimer = 3000;
- }
-
- void JustRespawned()
- {
- m_bIsByOutrunner = false;
- m_iSpawnId = 0;
-
- npc_escortAI::JustRespawned();
- }
-
- void EnterCombat(Unit* who)
- {
- if (HasEscortState(STATE_ESCORT_ESCORTING))
- {
- if (who->GetEntry() == NPC_OUTRUNNER && !m_bIsByOutrunner)
- {
- DoScriptText(SAY_RIN_BY_OUTRUNNER, who);
- m_bIsByOutrunner = true;
- }
-
- if (rand()%4)
- return;
-
- //only if attacked and escorter is not in combat?
- DoScriptText(RAND(SAY_RIN_HELP_1, SAY_RIN_HELP_2), me);
- }
- }
-
- void DoSpawnAmbush(bool bFirst)
- {
- if (!bFirst)
- m_iSpawnId = 1;
-
- me->SummonCreature(NPC_RANGER,
- m_afAmbushSpawn[m_iSpawnId].m_fX, m_afAmbushSpawn[m_iSpawnId].m_fY, m_afAmbushSpawn[m_iSpawnId].m_fZ, 0.0f,
- TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
-
- for (int i = 0; i < 2; ++i)
- {
- me->SummonCreature(NPC_OUTRUNNER,
- m_afAmbushSpawn[m_iSpawnId].m_fX, m_afAmbushSpawn[m_iSpawnId].m_fY, m_afAmbushSpawn[m_iSpawnId].m_fZ, 0.0f,
- TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
- }
- }
-
- void JustSummoned(Creature* summoned)
- {
- summoned->SetWalk(false);
- summoned->GetMotionMaster()->MovePoint(0, m_afAmbushMoveTo[m_iSpawnId].m_fX, m_afAmbushMoveTo[m_iSpawnId].m_fY, m_afAmbushMoveTo[m_iSpawnId].m_fZ);
- }
-
- void WaypointReached(uint32 waypointId)
- {
- Player* player = GetPlayerForEscort();
- if (!player)
- return;
-
- switch (waypointId)
- {
- case 1:
- DoScriptText(SAY_RIN_FREE, me, player);
- break;
- case 7:
- DoSpawnAmbush(true);
- break;
- case 13:
- DoSpawnAmbush(false);
- break;
- case 17:
- DoScriptText(SAY_RIN_COMPLETE, me, player);
- player->GroupEventHappens(QUEST_RINJI_TRAPPED, me);
- SetRun();
- m_uiPostEventCount = 1;
- break;
- }
- }
-
- void UpdateEscortAI(const uint32 uiDiff)
- {
- //Check if we have a current target
- if (!UpdateVictim())
- {
- if (HasEscortState(STATE_ESCORT_ESCORTING) && m_uiPostEventCount)
- {
- if (m_uiPostEventTimer <= uiDiff)
- {
- m_uiPostEventTimer = 3000;
-
- if (Player* player = GetPlayerForEscort())
- {
- switch (m_uiPostEventCount)
- {
- case 1:
- DoScriptText(SAY_RIN_PROGRESS_1, me, player);
- ++m_uiPostEventCount;
- break;
- case 2:
- DoScriptText(SAY_RIN_PROGRESS_2, me, player);
- m_uiPostEventCount = 0;
- break;
- }
- }
- else
- {
- me->DespawnOrUnsummon();
- return;
- }
- }
- else
- m_uiPostEventTimer -= uiDiff;
- }
-
- return;
- }
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
void AddSC_hinterlands()
{
new npc_00x09hl();
- new npc_rinji();
}
diff --git a/src/server/scripts/EasternKingdoms/ironforge.cpp b/src/server/scripts/EasternKingdoms/ironforge.cpp
index 2915ee1f3cb..98a4d780058 100644
--- a/src/server/scripts/EasternKingdoms/ironforge.cpp
+++ b/src/server/scripts/EasternKingdoms/ironforge.cpp
@@ -18,81 +18,18 @@
/* ScriptData
SDName: Ironforge
-SD%Complete: 100
-SDComment: Quest support: 3702
+SD%Complete: 0
+SDComment:
SDCategory: Ironforge
EndScriptData */
/* ContentData
-npc_royal_historian_archesonus
EndContentData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-/*######
-## npc_royal_historian_archesonus
-######*/
-
-#define GOSSIP_ITEM_ROYAL "I am ready to listen"
-#define GOSSIP_ITEM_ROYAL_1 "That is tragic. How did this happen?"
-#define GOSSIP_ITEM_ROYAL_2 "Interesting, continue please."
-#define GOSSIP_ITEM_ROYAL_3 "Unbelievable! How dare they??"
-#define GOSSIP_ITEM_ROYAL_4 "Of course I will help!"
-
-class npc_royal_historian_archesonus : public CreatureScript
-{
-public:
- npc_royal_historian_archesonus() : CreatureScript("npc_royal_historian_archesonus") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- player->SEND_GOSSIP_MENU(2236, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- player->SEND_GOSSIP_MENU(2237, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
- player->SEND_GOSSIP_MENU(2238, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
- player->SEND_GOSSIP_MENU(2239, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+4:
- player->CLOSE_GOSSIP_MENU();
- player->AreaExploredOrEventHappens(3702);
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(3702) == QUEST_STATUS_INCOMPLETE)
- {
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
- player->SEND_GOSSIP_MENU(2235, creature->GetGUID());
- }
- else
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
-
- return true;
- }
-};
-
void AddSC_ironforge()
{
- new npc_royal_historian_archesonus();
}
diff --git a/src/server/scripts/EasternKingdoms/loch_modan.cpp b/src/server/scripts/EasternKingdoms/loch_modan.cpp
index 4e3aaae71a1..32862a2d7b0 100644
--- a/src/server/scripts/EasternKingdoms/loch_modan.cpp
+++ b/src/server/scripts/EasternKingdoms/loch_modan.cpp
@@ -18,88 +18,18 @@
/* ScriptData
SDName: Loch_Modan
-SD%Complete: 100
-SDComment: Quest support: 3181
+SD%Complete: 0
+SDComment:
SDCategory: Loch Modan
EndScriptData */
/* ContentData
-npc_mountaineer_pebblebitty
EndContentData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-/*######
-## npc_mountaineer_pebblebitty
-######*/
-
-#define GOSSIP_MP "Open the gate please, i need to get to Searing Gorge"
-
-#define GOSSIP_MP1 "But i need to get there, now open the gate!"
-#define GOSSIP_MP2 "Ok, so what is this other way?"
-#define GOSSIP_MP3 "Doesn't matter, i'm invulnerable."
-#define GOSSIP_MP4 "Yes..."
-#define GOSSIP_MP5 "Ok, i'll try to remember that."
-#define GOSSIP_MP6 "A key? Ok!"
-
-class npc_mountaineer_pebblebitty : public CreatureScript
-{
-public:
- npc_mountaineer_pebblebitty() : CreatureScript("npc_mountaineer_pebblebitty") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF+1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- player->SEND_GOSSIP_MENU(1833, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
- player->SEND_GOSSIP_MENU(1834, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
- player->SEND_GOSSIP_MENU(1835, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+4:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
- player->SEND_GOSSIP_MENU(1836, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+5:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
- player->SEND_GOSSIP_MENU(1837, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+6:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
- player->SEND_GOSSIP_MENU(1838, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+7:
- player->CLOSE_GOSSIP_MENU();
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (!player->GetQuestRewardStatus(3181) == 1)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
-
- return true;
- }
-};
-
void AddSC_loch_modan()
{
- new npc_mountaineer_pebblebitty();
}
diff --git a/src/server/scripts/EasternKingdoms/redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/redridge_mountains.cpp
index 2473fec899a..81223dad1d3 100644
--- a/src/server/scripts/EasternKingdoms/redridge_mountains.cpp
+++ b/src/server/scripts/EasternKingdoms/redridge_mountains.cpp
@@ -17,156 +17,14 @@
/* Script Data Start
SDName: Redridge Mountains
-SD%Complete: 100%
-SDComment: Support for quest 219.
+SD%Complete: 0
+SDComment:
Script Data End */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
-enum eCorporalKeeshan
-{
- QUEST_MISSING_IN_ACTION = 219,
-
- SAY_CORPORAL_1 = -1000464,
- SAY_CORPORAL_2 = -1000465,
- SAY_CORPORAL_3 = -1000466,
- SAY_CORPORAL_4 = -1000467,
- SAY_CORPORAL_5 = -1000468,
-
- SPELL_MOCKING_BLOW = 21008,
- SPELL_SHIELD_BASH = 11972,
-};
-
-class npc_corporal_keeshan : public CreatureScript
-{
-public:
- npc_corporal_keeshan() : CreatureScript("npc_corporal_keeshan") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_MISSING_IN_ACTION)
- {
- CAST_AI(npc_corporal_keeshan::npc_corporal_keeshanAI, creature->AI())->Start(true, false, player->GetGUID(), quest);
- DoScriptText(SAY_CORPORAL_1, creature);
- }
-
- return false;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_corporal_keeshanAI(creature);
- }
-
- struct npc_corporal_keeshanAI : public npc_escortAI
- {
- npc_corporal_keeshanAI(Creature* creature) : npc_escortAI(creature) {}
-
- uint32 uiPhase;
- uint32 uiTimer;
- uint32 uiMockingBlowTimer;
- uint32 uiShieldBashTimer;
-
- void Reset()
- {
- uiTimer = 0;
- uiPhase = 0;
- uiMockingBlowTimer = 5000;
- uiShieldBashTimer = 8000;
- }
-
- void WaypointReached(uint32 waypointId)
- {
- Player* player = GetPlayerForEscort();
- if (!player)
- return;
-
- if (waypointId >= 65 && me->GetUnitMovementFlags() == MOVEMENTFLAG_WALKING)
- me->SetWalk(false);
-
- switch (waypointId)
- {
- case 39:
- SetEscortPaused(true);
- uiTimer = 2000;
- uiPhase = 1;
- break;
- case 65:
- me->SetWalk(false);
- break;
- case 115:
- player->AreaExploredOrEventHappens(QUEST_MISSING_IN_ACTION);
- uiTimer = 2000;
- uiPhase = 4;
- break;
- }
- }
-
- void UpdateAI(const uint32 uiDiff)
- {
- if (HasEscortState(STATE_ESCORT_NONE))
- return;
-
- npc_escortAI::UpdateAI(uiDiff);
-
- if (uiPhase)
- {
- if (uiTimer <= uiDiff)
- {
- switch (uiPhase)
- {
- case 1:
- me->SetStandState(UNIT_STAND_STATE_SIT);
- uiTimer = 1000;
- uiPhase = 2;
- break;
- case 2:
- DoScriptText(SAY_CORPORAL_2, me);
- uiTimer = 15000;
- uiPhase = 3;
- break;
- case 3:
- DoScriptText(SAY_CORPORAL_3, me);
- me->SetStandState(UNIT_STAND_STATE_STAND);
- SetEscortPaused(false);
- uiTimer = 0;
- uiPhase = 0;
- break;
- case 4:
- DoScriptText(SAY_CORPORAL_4, me);
- uiTimer = 2500;
- uiPhase = 5;
- case 5:
- DoScriptText(SAY_CORPORAL_5, me);
- uiTimer = 0;
- uiPhase = 0;
- }
- } else uiTimer -= uiDiff;
- }
-
- if (!UpdateVictim())
- return;
-
- if (uiMockingBlowTimer <= uiDiff)
- {
- DoCast(me->getVictim(), SPELL_MOCKING_BLOW);
- uiMockingBlowTimer = 5000;
- } else uiMockingBlowTimer -= uiDiff;
-
- if (uiShieldBashTimer <= uiDiff)
- {
- DoCast(me->getVictim(), SPELL_MOCKING_BLOW);
- uiShieldBashTimer = 8000;
- } else uiShieldBashTimer -= uiDiff;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
void AddSC_redridge_mountains()
{
- new npc_corporal_keeshan();
}
diff --git a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
index 870cb29c28d..8f5925405ec 100644
--- a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
@@ -19,13 +19,12 @@
/* ScriptData
SDName: Silverpine_Forest
SD%Complete: 100
-SDComment: Quest support: 435, 452
+SDComment: Quest support: 435
SDCategory: Silverpine Forest
EndScriptData */
/* ContentData
npc_deathstalker_erland
-pyrewood_ambush
EndContentData */
#include "ScriptMgr.h"
@@ -136,196 +135,10 @@ public:
};
/*######
-## pyrewood_ambush
-#######*/
-
-#define QUEST_PYREWOOD_AMBUSH 452
-
-#define NPCSAY_INIT "Get ready, they'll be arriving any minute..." //not blizzlike
-#define NPCSAY_END "Thanks for your help!" //not blizzlike
-
-static float PyrewoodSpawnPoints[3][4] =
-{
- //pos_x pos_y pos_z orien
- //outside
- /*
- {-400.85f, 1513.64f, 18.67f, 0},
- {-397.32f, 1514.12f, 18.67f, 0},
- {-397.44f, 1511.09f, 18.67f, 0},
- */
- //door
- {-396.17f, 1505.86f, 19.77f, 0},
- {-396.91f, 1505.77f, 19.77f, 0},
- {-397.94f, 1504.74f, 19.77f, 0},
-};
-
-#define WAIT_SECS 6000
-
-class pyrewood_ambush : public CreatureScript
-{
-public:
- pyrewood_ambush() : CreatureScript("pyrewood_ambush") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, const Quest *quest)
- {
- if (quest->GetQuestId() == QUEST_PYREWOOD_AMBUSH && !CAST_AI(pyrewood_ambush::pyrewood_ambushAI, creature->AI())->QuestInProgress)
- {
- CAST_AI(pyrewood_ambush::pyrewood_ambushAI, creature->AI())->QuestInProgress = true;
- CAST_AI(pyrewood_ambush::pyrewood_ambushAI, creature->AI())->Phase = 0;
- CAST_AI(pyrewood_ambush::pyrewood_ambushAI, creature->AI())->KillCount = 0;
- CAST_AI(pyrewood_ambush::pyrewood_ambushAI, creature->AI())->PlayerGUID = player->GetGUID();
- }
-
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new pyrewood_ambushAI (creature);
- }
-
- struct pyrewood_ambushAI : public ScriptedAI
- {
- pyrewood_ambushAI(Creature* creature) : ScriptedAI(creature), Summons(me)
- {
- QuestInProgress = false;
- }
-
- uint32 Phase;
- int8 KillCount;
- uint32 WaitTimer;
- uint64 PlayerGUID;
- SummonList Summons;
-
- bool QuestInProgress;
-
- void Reset()
- {
- WaitTimer = WAIT_SECS;
-
- if (!QuestInProgress) //fix reset values (see UpdateVictim)
- {
- Phase = 0;
- KillCount = 0;
- PlayerGUID = 0;
- Summons.DespawnAll();
- }
- }
-
- void EnterCombat(Unit* /*who*/){}
-
- void JustSummoned(Creature* summoned)
- {
- Summons.Summon(summoned);
- ++KillCount;
- }
-
- void SummonedCreatureDespawn(Creature* summoned)
- {
- Summons.Despawn(summoned);
- --KillCount;
- }
-
- void SummonCreatureWithRandomTarget(uint32 creatureId, int position)
- {
- if (Creature* summoned = me->SummonCreature(creatureId, PyrewoodSpawnPoints[position][0], PyrewoodSpawnPoints[position][1], PyrewoodSpawnPoints[position][2], PyrewoodSpawnPoints[position][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 15000))
- {
- Player* player = NULL;
- Unit* target = NULL;
- if (PlayerGUID)
- {
- player = Unit::GetPlayer(*me, PlayerGUID);
- if (player)
- target = RAND((Unit*)me, (Unit*)player);
- } else
- target = me;
-
- if (target)
- {
- summoned->setFaction(168);
- summoned->AddThreat(target, 32.0f);
- summoned->AI()->AttackStart(target);
- }
- }
- }
-
- void JustDied(Unit* /*killer*/)
- {
- if (PlayerGUID)
- if (Player* player = Unit::GetPlayer(*me, PlayerGUID))
- if (player->GetQuestStatus(QUEST_PYREWOOD_AMBUSH) == QUEST_STATUS_INCOMPLETE)
- player->FailQuest(QUEST_PYREWOOD_AMBUSH);
- }
-
- void UpdateAI(const uint32 diff)
- {
- //sLog->outInfo(LOG_FILTER_TSCR, "DEBUG: p(%i) k(%i) d(%u) W(%i)", Phase, KillCount, diff, WaitTimer);
-
- if (!QuestInProgress)
- return;
-
- if (KillCount && Phase < 6)
- {
- if (!UpdateVictim()) //reset() on target Despawn...
- return;
-
- DoMeleeAttackIfReady();
- return;
- }
-
- switch (Phase)
- {
- case 0:
- if (WaitTimer == WAIT_SECS)
- me->MonsterSay(NPCSAY_INIT, LANG_UNIVERSAL, 0); //no blizzlike
-
- if (WaitTimer <= diff)
- {
- WaitTimer -= diff;
- return;
- }
- break;
- case 1:
- SummonCreatureWithRandomTarget(2060, 1);
- break;
- case 2:
- SummonCreatureWithRandomTarget(2061, 2);
- SummonCreatureWithRandomTarget(2062, 0);
- break;
- case 3:
- SummonCreatureWithRandomTarget(2063, 1);
- SummonCreatureWithRandomTarget(2064, 2);
- SummonCreatureWithRandomTarget(2065, 0);
- break;
- case 4:
- SummonCreatureWithRandomTarget(2066, 1);
- SummonCreatureWithRandomTarget(2067, 0);
- SummonCreatureWithRandomTarget(2068, 2);
- break;
- case 5: //end
- if (PlayerGUID)
- {
- if (Player* player = Unit::GetPlayer(*me, PlayerGUID))
- {
- me->MonsterSay(NPCSAY_END, LANG_UNIVERSAL, 0); //not blizzlike
- player->GroupEventHappens(QUEST_PYREWOOD_AMBUSH, me);
- }
- }
- QuestInProgress = false;
- Reset();
- break;
- }
- ++Phase; //prepare next phase
- }
- };
-};
-
-/*######
## AddSC
######*/
void AddSC_silverpine_forest()
{
new npc_deathstalker_erland();
- new pyrewood_ambush();
}
diff --git a/src/server/scripts/EasternKingdoms/stormwind_city.cpp b/src/server/scripts/EasternKingdoms/stormwind_city.cpp
index 560214d4085..f5ade53202a 100644
--- a/src/server/scripts/EasternKingdoms/stormwind_city.cpp
+++ b/src/server/scripts/EasternKingdoms/stormwind_city.cpp
@@ -18,19 +18,12 @@
/* ScriptData
SDName: Stormwind_City
-SD%Complete: 100
-SDComment: Quest support: 1640, 1447, 4185, 11223, 434.
+SD%Complete: 0
+SDComment:
SDCategory: Stormwind City
EndScriptData */
/* ContentData
-npc_archmage_malin
-npc_bartleby
-npc_lady_katrana_prestor
-npc_tyrion
-npc_tyrion_spybot
-npc_marzon_silent_blade
-npc_lord_gregor_lescovar
EndContentData */
#include "ScriptMgr.h"
@@ -38,609 +31,7 @@ EndContentData */
#include "ScriptedGossip.h"
#include "ScriptedEscortAI.h"
-/*######
-## npc_archmage_malin
-######*/
-
-#define GOSSIP_ITEM_MALIN "Can you send me to Theramore? I have an urgent message for Lady Jaina from Highlord Bolvar."
-
-class npc_archmage_malin : public CreatureScript
-{
-public:
- npc_archmage_malin() : CreatureScript("npc_archmage_malin") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- if (action == GOSSIP_ACTION_INFO_DEF)
- {
- player->CLOSE_GOSSIP_MENU();
- creature->CastSpell(player, 42711, true);
- }
-
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(11223) == QUEST_STATUS_COMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MALIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
-
- return true;
- }
-};
-
-/*######
-## npc_bartleby
-######*/
-
-enum eBartleby
-{
- FACTION_ENEMY = 168,
- QUEST_BEAT = 1640
-};
-
-class npc_bartleby : public CreatureScript
-{
-public:
- npc_bartleby() : CreatureScript("npc_bartleby") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_BEAT)
- {
- creature->setFaction(FACTION_ENEMY);
- creature->AI()->AttackStart(player);
- }
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_bartlebyAI(creature);
- }
-
- struct npc_bartlebyAI : public ScriptedAI
- {
- npc_bartlebyAI(Creature* creature) : ScriptedAI(creature)
- {
- m_uiNormalFaction = creature->getFaction();
- }
-
- uint32 m_uiNormalFaction;
-
- void Reset()
- {
- if (me->getFaction() != m_uiNormalFaction)
- me->setFaction(m_uiNormalFaction);
- }
-
- void AttackedBy(Unit* pAttacker)
- {
- if (me->getVictim())
- return;
-
- if (me->IsFriendlyTo(pAttacker))
- return;
-
- AttackStart(pAttacker);
- }
-
- void DamageTaken(Unit* pDoneBy, uint32 &uiDamage)
- {
- if (uiDamage > me->GetHealth() || me->HealthBelowPctDamaged(15, uiDamage))
- {
- //Take 0 damage
- uiDamage = 0;
-
- if (pDoneBy->GetTypeId() == TYPEID_PLAYER)
- CAST_PLR(pDoneBy)->AreaExploredOrEventHappens(QUEST_BEAT);
- EnterEvadeMode();
- }
- }
- };
-};
-
-/*######
-## npc_lady_katrana_prestor
-######*/
-
-#define GOSSIP_ITEM_KAT_1 "Pardon the intrusion, Lady Prestor, but Highlord Bolvar suggested that I seek your advice."
-#define GOSSIP_ITEM_KAT_2 "My apologies, Lady Prestor."
-#define GOSSIP_ITEM_KAT_3 "Begging your pardon, Lady Prestor. That was not my intent."
-#define GOSSIP_ITEM_KAT_4 "Thank you for your time, Lady Prestor."
-
-class npc_lady_katrana_prestor : public CreatureScript
-{
-public:
- npc_lady_katrana_prestor() : CreatureScript("npc_lady_katrana_prestor") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- player->SEND_GOSSIP_MENU(2694, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- player->SEND_GOSSIP_MENU(2695, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
- player->SEND_GOSSIP_MENU(2696, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- player->CLOSE_GOSSIP_MENU();
- player->AreaExploredOrEventHappens(4185);
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (creature->isQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(4185) == QUEST_STATUS_INCOMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
-
- player->SEND_GOSSIP_MENU(2693, creature->GetGUID());
-
- return true;
- }
-};
-
-/*######
-## npc_lord_gregor_lescovar
-######*/
-
-enum eLordGregorLescovar
-{
- SAY_LESCOVAR_2 = -1000457,
- SAY_GUARD_2 = -1000458,
- SAY_LESCOVAR_3 = -1000459,
- SAY_MARZON_1 = -1000460,
- SAY_LESCOVAR_4 = -1000461,
- SAY_TYRION_2 = -1000462,
- SAY_MARZON_2 = -1000463,
-
- NPC_STORMWIND_ROYAL = 1756,
- NPC_MARZON_BLADE = 1755,
- NPC_TYRION = 7766,
-
- QUEST_THE_ATTACK = 434
-};
-
-class npc_lord_gregor_lescovar : public CreatureScript
-{
-public:
- npc_lord_gregor_lescovar() : CreatureScript("npc_lord_gregor_lescovar") { }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_lord_gregor_lescovarAI(creature);
- }
-
- struct npc_lord_gregor_lescovarAI : public npc_escortAI
- {
- npc_lord_gregor_lescovarAI(Creature* creature) : npc_escortAI(creature)
- {
- creature->RestoreFaction();
- }
-
- uint32 uiTimer;
- uint32 uiPhase;
-
- uint64 MarzonGUID;
-
- void Reset()
- {
- uiTimer = 0;
- uiPhase = 0;
-
- MarzonGUID = 0;
- }
-
- void EnterEvadeMode()
- {
- me->DisappearAndDie();
-
- if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID))
- {
- if (pMarzon->isAlive())
- pMarzon->DisappearAndDie();
- }
- }
-
- void EnterCombat(Unit* who)
- {
- if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID))
- {
- if (pMarzon->isAlive() && !pMarzon->isInCombat())
- pMarzon->AI()->AttackStart(who);
- }
- }
-
- void WaypointReached(uint32 waypointId)
- {
- switch (waypointId)
- {
- case 14:
- SetEscortPaused(true);
- DoScriptText(SAY_LESCOVAR_2, me);
- uiTimer = 3000;
- uiPhase = 1;
- break;
- case 16:
- SetEscortPaused(true);
- if (Creature* pMarzon = me->SummonCreature(NPC_MARZON_BLADE, -8411.360352f, 480.069733f, 123.760895f, 4.941504f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1000))
- {
- pMarzon->GetMotionMaster()->MovePoint(0, -8408.000977f, 468.611450f, 123.759903f);
- MarzonGUID = pMarzon->GetGUID();
- }
- uiTimer = 2000;
- uiPhase = 4;
- break;
- }
- }
- //TO-DO: We don't have movemaps, also we can't make 2 npcs walks to one point propperly (and we can not use escort ai, because they are 2 different spawns and with same entry), because of it we make them, disappear.
- void DoGuardsDisappearAndDie()
- {
- std::list<Creature*> GuardList;
- me->GetCreatureListWithEntryInGrid(GuardList, NPC_STORMWIND_ROYAL, 8.0f);
- if (!GuardList.empty())
- {
- for (std::list<Creature*>::const_iterator itr = GuardList.begin(); itr != GuardList.end(); ++itr)
- {
- if (Creature* pGuard = *itr)
- pGuard->DisappearAndDie();
- }
- }
- }
-
- void UpdateAI(const uint32 uiDiff)
- {
- if (uiPhase)
- {
- if (uiTimer <= uiDiff)
- {
- switch (uiPhase)
- {
- case 1:
- if (Creature* pGuard = me->FindNearestCreature(NPC_STORMWIND_ROYAL, 8.0f, true))
- DoScriptText(SAY_GUARD_2, pGuard);
- uiTimer = 3000;
- uiPhase = 2;
- break;
- case 2:
- DoGuardsDisappearAndDie();
- uiTimer = 2000;
- uiPhase = 3;
- break;
- case 3:
- SetEscortPaused(false);
- uiTimer = 0;
- uiPhase = 0;
- break;
- case 4:
- DoScriptText(SAY_LESCOVAR_3, me);
- uiTimer = 0;
- uiPhase = 0;
- break;
- case 5:
- if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID))
- DoScriptText(SAY_MARZON_1, pMarzon);
- uiTimer = 3000;
- uiPhase = 6;
- break;
- case 6:
- DoScriptText(SAY_LESCOVAR_4, me);
- if (Player* player = GetPlayerForEscort())
- player->AreaExploredOrEventHappens(QUEST_THE_ATTACK);
- uiTimer = 2000;
- uiPhase = 7;
- break;
- case 7:
- if (Creature* pTyrion = me->FindNearestCreature(NPC_TYRION, 20.0f, true))
- DoScriptText(SAY_TYRION_2, pTyrion);
- if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID))
- pMarzon->setFaction(14);
- me->setFaction(14);
- uiTimer = 0;
- uiPhase = 0;
- break;
- }
- } else uiTimer -= uiDiff;
- }
- npc_escortAI::UpdateAI(uiDiff);
-
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
-## npc_marzon_silent_blade
-######*/
-
-class npc_marzon_silent_blade : public CreatureScript
-{
-public:
- npc_marzon_silent_blade() : CreatureScript("npc_marzon_silent_blade") { }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_marzon_silent_bladeAI(creature);
- }
-
- struct npc_marzon_silent_bladeAI : public ScriptedAI
- {
- npc_marzon_silent_bladeAI(Creature* creature) : ScriptedAI(creature)
- {
- me->SetWalk(true);
- }
-
- void Reset()
- {
- me->RestoreFaction();
- }
-
- void EnterCombat(Unit* who)
- {
- DoScriptText(SAY_MARZON_2, me);
-
- if (me->isSummon())
- {
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- {
- if (summoner->GetTypeId() == TYPEID_UNIT && summoner->isAlive() && !summoner->isInCombat())
- summoner->ToCreature()->AI()->AttackStart(who);
- }
- }
- }
-
- void EnterEvadeMode()
- {
- me->DisappearAndDie();
-
- if (me->isSummon())
- {
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- {
- if (summoner->GetTypeId() == TYPEID_UNIT && summoner->isAlive())
- summoner->ToCreature()->DisappearAndDie();
- }
- }
- }
-
- void MovementInform(uint32 uiType, uint32 /*uiId*/)
- {
- if (uiType != POINT_MOTION_TYPE)
- return;
-
- if (me->isSummon())
- {
- Unit* summoner = me->ToTempSummon()->GetSummoner();
- if (summoner && summoner->GetTypeId() == TYPEID_UNIT && summoner->IsAIEnabled)
- {
- npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI* ai =
- CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, summoner->GetAI());
- if (ai)
- {
- ai->uiTimer = 2000;
- ai->uiPhase = 5;
- }
- //me->ChangeOrient(0.0f, summoner);
- }
- }
- }
-
- void UpdateAI(const uint32 /*diff*/)
- {
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
-## npc_tyrion_spybot
-######*/
-
-enum eTyrionSpybot
-{
- SAY_QUEST_ACCEPT_ATTACK = -1000499,
- SAY_TYRION_1 = -1000450,
- SAY_SPYBOT_1 = -1000451,
- SAY_GUARD_1 = -1000452,
- SAY_SPYBOT_2 = -1000453,
- SAY_SPYBOT_3 = -1000454,
- SAY_LESCOVAR_1 = -1000455,
- SAY_SPYBOT_4 = -1000456,
-
- NPC_PRIESTESS_TYRIONA = 7779,
- NPC_LORD_GREGOR_LESCOVAR = 1754,
-};
-
-class npc_tyrion_spybot : public CreatureScript
-{
-public:
- npc_tyrion_spybot() : CreatureScript("npc_tyrion_spybot") { }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_tyrion_spybotAI(creature);
- }
-
- struct npc_tyrion_spybotAI : public npc_escortAI
- {
- npc_tyrion_spybotAI(Creature* creature) : npc_escortAI(creature) {}
-
- uint32 uiTimer;
- uint32 uiPhase;
-
- void Reset()
- {
- uiTimer = 0;
- uiPhase = 0;
- }
-
- void WaypointReached(uint32 waypointId)
- {
- switch (waypointId)
- {
- case 1:
- SetEscortPaused(true);
- uiTimer = 2000;
- uiPhase = 1;
- break;
- case 5:
- SetEscortPaused(true);
- DoScriptText(SAY_SPYBOT_1, me);
- uiTimer = 2000;
- uiPhase = 5;
- break;
- case 17:
- SetEscortPaused(true);
- DoScriptText(SAY_SPYBOT_3, me);
- uiTimer = 3000;
- uiPhase = 8;
- break;
- }
- }
-
- void UpdateAI(const uint32 uiDiff)
- {
- if (uiPhase)
- {
- if (uiTimer <= uiDiff)
- {
- switch (uiPhase)
- {
- case 1:
- DoScriptText(SAY_QUEST_ACCEPT_ATTACK, me);
- uiTimer = 3000;
- uiPhase = 2;
- break;
- case 2:
- if (Creature* pTyrion = me->FindNearestCreature(NPC_TYRION, 10.0f))
- DoScriptText(SAY_TYRION_1, pTyrion);
- uiTimer = 3000;
- uiPhase = 3;
- break;
- case 3:
- me->UpdateEntry(NPC_PRIESTESS_TYRIONA, ALLIANCE);
- uiTimer = 2000;
- uiPhase = 4;
- break;
- case 4:
- SetEscortPaused(false);
- uiPhase = 0;
- uiTimer = 0;
- break;
- case 5:
- if (Creature* pGuard = me->FindNearestCreature(NPC_STORMWIND_ROYAL, 10.0f, true))
- DoScriptText(SAY_GUARD_1, pGuard);
- uiTimer = 3000;
- uiPhase = 6;
- break;
- case 6:
- DoScriptText(SAY_SPYBOT_2, me);
- uiTimer = 3000;
- uiPhase = 7;
- break;
- case 7:
- SetEscortPaused(false);
- uiTimer = 0;
- uiPhase = 0;
- break;
- case 8:
- if (Creature* pLescovar = me->FindNearestCreature(NPC_LORD_GREGOR_LESCOVAR, 10.0f))
- DoScriptText(SAY_LESCOVAR_1, pLescovar);
- uiTimer = 3000;
- uiPhase = 9;
- break;
- case 9:
- DoScriptText(SAY_SPYBOT_4, me);
- uiTimer = 3000;
- uiPhase = 10;
- break;
- case 10:
- if (Creature* pLescovar = me->FindNearestCreature(NPC_LORD_GREGOR_LESCOVAR, 10.0f))
- {
- if (Player* player = GetPlayerForEscort())
- {
- CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->Start(false, false, player->GetGUID());
- CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->SetMaxPlayerDistance(200.0f);
- }
- }
- me->DisappearAndDie();
- uiTimer = 0;
- uiPhase = 0;
- break;
- }
- } else uiTimer -= uiDiff;
- }
- npc_escortAI::UpdateAI(uiDiff);
-
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
-## npc_tyrion
-######*/
-
-enum eTyrion
-{
- NPC_TYRION_SPYBOT = 8856
-};
-
-class npc_tyrion : public CreatureScript
-{
-public:
- npc_tyrion() : CreatureScript("npc_tyrion") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_THE_ATTACK)
- {
- if (Creature* pSpybot = creature->FindNearestCreature(NPC_TYRION_SPYBOT, 5.0f, true))
- {
- CAST_AI(npc_tyrion_spybot::npc_tyrion_spybotAI, pSpybot->AI())->Start(false, false, player->GetGUID());
- CAST_AI(npc_tyrion_spybot::npc_tyrion_spybotAI, pSpybot->AI())->SetMaxPlayerDistance(200.0f);
- }
- return true;
- }
- return false;
- }
-};
void AddSC_stormwind_city()
{
- new npc_archmage_malin();
- new npc_bartleby();
- new npc_lady_katrana_prestor();
- new npc_tyrion();
- new npc_tyrion_spybot();
- new npc_lord_gregor_lescovar();
- new npc_marzon_silent_blade();
}
diff --git a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp
index 4c81380fb60..9724588039f 100644
--- a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp
+++ b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp
@@ -20,136 +20,6 @@
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
-/*######
-## npc_galen_goodward
-######*/
-
-enum Galen
-{
- QUEST_GALENS_ESCAPE = 1393,
-
- GO_GALENS_CAGE = 37118,
-
- SAY_PERIODIC = -1000500,
- SAY_QUEST_ACCEPTED = -1000501,
- SAY_ATTACKED_1 = -1000502,
- SAY_ATTACKED_2 = -1000503,
- SAY_QUEST_COMPLETE = -1000504,
- EMOTE_WHISPER = -1000505,
- EMOTE_DISAPPEAR = -1000506
-};
-
-class npc_galen_goodward : public CreatureScript
-{
-public:
-
- npc_galen_goodward() : CreatureScript("npc_galen_goodward") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_GALENS_ESCAPE)
- {
- CAST_AI(npc_galen_goodward::npc_galen_goodwardAI, creature->AI())->Start(false, false, player->GetGUID());
- creature->setFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
- DoScriptText(SAY_QUEST_ACCEPTED, creature);
- }
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_galen_goodwardAI(creature);
- }
-
- struct npc_galen_goodwardAI : public npc_escortAI
- {
- npc_galen_goodwardAI(Creature* creature) : npc_escortAI(creature)
- {
- m_uiGalensCageGUID = 0;
- Reset();
- }
-
- uint64 m_uiGalensCageGUID;
- uint32 m_uiPeriodicSay;
-
- void Reset()
- {
- m_uiPeriodicSay = 6000;
- }
-
- void EnterCombat(Unit* who)
- {
- if (HasEscortState(STATE_ESCORT_ESCORTING))
- DoScriptText(RAND(SAY_ATTACKED_1, SAY_ATTACKED_2), me, who);
- }
-
- void WaypointStart(uint32 uiPointId)
- {
- switch (uiPointId)
- {
- case 0:
- {
- GameObject* pCage = NULL;
- if (m_uiGalensCageGUID)
- pCage = me->GetMap()->GetGameObject(m_uiGalensCageGUID);
- else
- pCage = GetClosestGameObjectWithEntry(me, GO_GALENS_CAGE, INTERACTION_DISTANCE);
- if (pCage)
- {
- pCage->UseDoorOrButton();
- m_uiGalensCageGUID = pCage->GetGUID();
- }
- break;
- }
- case 21:
- DoScriptText(EMOTE_DISAPPEAR, me);
- break;
- }
- }
-
- void WaypointReached(uint32 waypointId)
- {
- switch (waypointId)
- {
- case 0:
- if (GameObject* pCage = me->GetMap()->GetGameObject(m_uiGalensCageGUID))
- pCage->ResetDoorOrButton();
- break;
- case 20:
- if (Player* player = GetPlayerForEscort())
- {
- me->SetFacingToObject(player);
- DoScriptText(SAY_QUEST_COMPLETE, me, player);
- DoScriptText(EMOTE_WHISPER, me, player);
- player->GroupEventHappens(QUEST_GALENS_ESCAPE, me);
- }
- SetRun(true);
- break;
- }
- }
-
- void UpdateAI(const uint32 uiDiff)
- {
- npc_escortAI::UpdateAI(uiDiff);
-
- if (HasEscortState(STATE_ESCORT_NONE))
- return;
-
- if (m_uiPeriodicSay < uiDiff)
- {
- if (!HasEscortState(STATE_ESCORT_ESCORTING))
- DoScriptText(SAY_PERIODIC, me);
- m_uiPeriodicSay = 15000;
- }
- else
- m_uiPeriodicSay -= uiDiff;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
void AddSC_swamp_of_sorrows()
{
- new npc_galen_goodward();
}
diff --git a/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp
index 70f9f93c7a7..cbefd115739 100644
--- a/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp
+++ b/src/server/scripts/EasternKingdoms/tirisfal_glades.cpp
@@ -18,199 +18,18 @@
/* ScriptData
SDName: Tirisfal_Glades
-SD%Complete: 100
-SDComment: Quest support: 590, 1819
+SD%Complete: 0
+SDComment:
SDCategory: Tirisfal Glades
EndScriptData */
/* ContentData
-npc_calvin_montague
-go_mausoleum_door
-go_mausoleum_trigger
EndContentData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-/*######
-## npc_calvin_montague
-######*/
-
-enum eCalvin
-{
- SAY_COMPLETE = -1000431,
- SPELL_DRINK = 2639, // possibly not correct spell (but iconId is correct)
- QUEST_590 = 590,
- FACTION_HOSTILE = 168
-};
-
-class npc_calvin_montague : public CreatureScript
-{
-public:
- npc_calvin_montague() : CreatureScript("npc_calvin_montague") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_590)
- {
- creature->setFaction(FACTION_HOSTILE);
- creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
- CAST_AI(npc_calvin_montague::npc_calvin_montagueAI, creature->AI())->AttackStart(player);
- }
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_calvin_montagueAI (creature);
- }
-
- struct npc_calvin_montagueAI : public ScriptedAI
- {
- npc_calvin_montagueAI(Creature* creature) : ScriptedAI(creature) { }
-
- uint32 m_uiPhase;
- uint32 m_uiPhaseTimer;
- uint64 m_uiPlayerGUID;
-
- void Reset()
- {
- m_uiPhase = 0;
- m_uiPhaseTimer = 5000;
- m_uiPlayerGUID = 0;
-
- me->RestoreFaction();
-
- if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC))
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
- }
-
- void EnterCombat(Unit* /*who*/) {}
-
- void AttackedBy(Unit* pAttacker)
- {
- if (me->getVictim() || me->IsFriendlyTo(pAttacker))
- return;
-
- AttackStart(pAttacker);
- }
-
- void DamageTaken(Unit* pDoneBy, uint32 &uiDamage)
- {
- if (uiDamage > me->GetHealth() || me->HealthBelowPctDamaged(15, uiDamage))
- {
- uiDamage = 0;
-
- me->RestoreFaction();
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
- me->CombatStop(true);
-
- m_uiPhase = 1;
-
- if (pDoneBy->GetTypeId() == TYPEID_PLAYER)
- m_uiPlayerGUID = pDoneBy->GetGUID();
- }
- }
-
- void UpdateAI(const uint32 uiDiff)
- {
- if (m_uiPhase)
- {
- if (m_uiPhaseTimer <= uiDiff)
- m_uiPhaseTimer = 7500;
- else
- {
- m_uiPhaseTimer -= uiDiff;
- return;
- }
-
- switch (m_uiPhase)
- {
- case 1:
- DoScriptText(SAY_COMPLETE, me);
- ++m_uiPhase;
- break;
- case 2:
- if (Player* player = Unit::GetPlayer(*me, m_uiPlayerGUID))
- player->AreaExploredOrEventHappens(QUEST_590);
-
- DoCast(me, SPELL_DRINK, true);
- ++m_uiPhase;
- break;
- case 3:
- EnterEvadeMode();
- break;
- }
-
- return;
- }
-
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
-## go_mausoleum_door
-## go_mausoleum_trigger
-######*/
-
-enum eMausoleum
-{
- QUEST_ULAG = 1819,
- NPC_ULAG = 6390,
- GO_TRIGGER = 104593,
- GO_DOOR = 176594
-};
-
-class go_mausoleum_door : public GameObjectScript
-{
-public:
- go_mausoleum_door() : GameObjectScript("go_mausoleum_door") { }
-
- bool OnGossipHello(Player* player, GameObject* /*go*/)
- {
- if (player->GetQuestStatus(QUEST_ULAG) != QUEST_STATUS_INCOMPLETE)
- return false;
-
- if (GameObject* pTrigger = player->FindNearestGameObject(GO_TRIGGER, 30.0f))
- {
- pTrigger->SetGoState(GO_STATE_READY);
- player->SummonCreature(NPC_ULAG, 2390.26f, 336.47f, 40.01f, 2.26f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000);
- return false;
- }
-
- return false;
- }
-};
-
-class go_mausoleum_trigger : public GameObjectScript
-{
-public:
- go_mausoleum_trigger() : GameObjectScript("go_mausoleum_trigger") { }
-
- bool OnGossipHello(Player* player, GameObject* go)
- {
- if (player->GetQuestStatus(QUEST_ULAG) != QUEST_STATUS_INCOMPLETE)
- return false;
-
- if (GameObject* pDoor = player->FindNearestGameObject(GO_DOOR, 30.0f))
- {
- go->SetGoState(GO_STATE_ACTIVE);
- pDoor->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
- return true;
- }
-
- return false;
- }
-};
void AddSC_tirisfal_glades()
{
- new npc_calvin_montague();
- new go_mausoleum_door();
- new go_mausoleum_trigger();
}