From 880151c854b7a09962fd932bcd907eec6d36d0aa Mon Sep 17 00:00:00 2001 From: Blipi Date: Fri, 16 Nov 2012 05:27:28 +0100 Subject: Core/Battlefield: Fix crashes due to invalid pointers use --- src/server/game/Battlefield/Battlefield.cpp | 142 +++++++---- src/server/game/Battlefield/Battlefield.h | 25 +- .../game/Battlefield/Zones/BattlefieldWG.cpp | 163 ++++++------- src/server/game/Battlefield/Zones/BattlefieldWG.h | 266 ++++++++++----------- 4 files changed, 311 insertions(+), 285 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index b3f5c7bf704..df7453e8772 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -460,10 +460,9 @@ WorldPacket Battlefield::BuildWarningAnnPacket(std::string const& msg) void Battlefield::SendWarningToAllInZone(uint32 entry) { - if (Unit* unit = sObjectAccessor->FindUnit(StalkerGuid)) - if (Creature* stalker = unit->ToCreature()) - // FIXME: replaced CHAT_TYPE_END with CHAT_MSG_BG_SYSTEM_NEUTRAL to fix compile, it's a guessed change :/ - sCreatureTextMgr->SendChat(stalker, (uint8) entry, 0, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_ADDON, TEXT_RANGE_ZONE); + if (Creature* stalker = GetCreature(StalkerGuid)) + // FIXME: replaced CHAT_TYPE_END with CHAT_MSG_BG_SYSTEM_NEUTRAL to fix compile, it's a guessed change :/ + sCreatureTextMgr->SendChat(stalker, (uint8) entry, 0, CHAT_MSG_BG_SYSTEM_NEUTRAL, LANG_ADDON, TEXT_RANGE_ZONE); } /*void Battlefield::SendWarningToAllInWar(int32 entry,...) @@ -483,9 +482,8 @@ void Battlefield::SendWarningToAllInZone(uint32 entry) void Battlefield::SendWarningToPlayer(Player* player, uint32 entry) { if (player) - if (Unit* unit = sObjectAccessor->FindUnit(StalkerGuid)) - if (Creature* stalker = unit->ToCreature()) - sCreatureTextMgr->SendChat(stalker, (uint8)entry, player->GetGUID()); + if (Creature* stalker = GetCreature(StalkerGuid)) + sCreatureTextMgr->SendChat(stalker, (uint8)entry, player->GetGUID()); } void Battlefield::SendUpdateWorldState(uint32 field, uint32 value) @@ -738,7 +736,7 @@ void BfGraveyard::Resurrect() // Check if the player is in world and on the good graveyard if (player->IsInWorld()) - if (Unit* spirit = sObjectAccessor->FindUnit(m_SpiritGuide[m_ControlTeam])) + if (Creature* spirit = m_Bf->GetCreature(m_SpiritGuide[m_ControlTeam])) spirit->CastSpell(spirit, SPELL_SPIRIT_HEAL, true); // Resurect player @@ -788,6 +786,18 @@ void BfGraveyard::RelocateDeadPlayers() } } +bool BfGraveyard::HasNpc(uint64 guid) +{ + if (!m_SpiritGuide[0] || !m_SpiritGuide[1]) + return false; + + if (!m_Bf->GetCreature(m_SpiritGuide[0]) || + !m_Bf->GetCreature(m_SpiritGuide[1])) + return false; + + return (m_SpiritGuide[0] == guid || m_SpiritGuide[1] == guid); +} + // ******************************************************* // *************** End Spirit Guide system *************** // ******************************************************* @@ -861,11 +871,25 @@ GameObject* Battlefield::SpawnGameObject(uint32 entry, float x, float y, float z return go; } +Creature* Battlefield::GetCreature(uint64 GUID) +{ + if (!m_Map) + return NULL; + return m_Map->GetCreature(GUID); +} + +GameObject* Battlefield::GetGameObject(uint64 GUID) +{ + if (!m_Map) + return NULL; + return m_Map->GetGameObject(GUID); +} + // ******************************************************* // ******************* CapturePoint ********************** // ******************************************************* -BfCapturePoint::BfCapturePoint(Battlefield* battlefield) : m_Bf(battlefield), m_capturePoint(NULL) +BfCapturePoint::BfCapturePoint(Battlefield* battlefield) : m_Bf(battlefield), m_capturePointGUID(0) { m_team = TEAM_NEUTRAL; m_value = 0; @@ -880,19 +904,24 @@ BfCapturePoint::BfCapturePoint(Battlefield* battlefield) : m_Bf(battlefield), m_ bool BfCapturePoint::HandlePlayerEnter(Player* player) { - if (m_capturePoint) + if (m_capturePointGUID) { - player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 1); - player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate2, uint32(ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f))); - player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct); + if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID)) + { + player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 1); + player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate2, uint32(ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f))); + player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct); + } } + return m_activePlayers[player->GetTeamId()].insert(player->GetGUID()).second; } GuidSet::iterator BfCapturePoint::HandlePlayerLeave(Player* player) { - if (m_capturePoint) - player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 0); + if (m_capturePointGUID) + if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID)) + player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 0); GuidSet::iterator current = m_activePlayers[player->GetTeamId()].find(player->GetGUID()); @@ -905,15 +934,18 @@ GuidSet::iterator BfCapturePoint::HandlePlayerLeave(Player* player) void BfCapturePoint::SendChangePhase() { - if (!m_capturePoint) + if (!m_capturePointGUID) return; - - // send this too, sometimes the slider disappears, dunno why :( - SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 1); - // send these updates to only the ones in this objective - SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate2, (uint32) ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f)); - // send this too, sometimes it resets :S - SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct); + + if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID)) + { + // send this too, sometimes the slider disappears, dunno why :( + SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 1); + // send these updates to only the ones in this objective + SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate2, (uint32) ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f)); + // send this too, sometimes it resets :S + SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct); + } } bool BfCapturePoint::SetCapturePointData(GameObject* capturePoint) @@ -922,7 +954,7 @@ bool BfCapturePoint::SetCapturePointData(GameObject* capturePoint) sLog->outDebug(LOG_FILTER_BATTLEFIELD, "Creating capture point %u", capturePoint->GetEntry()); - m_capturePoint = capturePoint; + m_capturePointGUID = MAKE_NEW_GUID(capturePoint->GetGUIDLow(), capturePoint->GetEntry(), HIGHGUID_GAMEOBJECT); // check info existence GameObjectTemplate const* goinfo = capturePoint->GetGOInfo(); @@ -952,13 +984,22 @@ bool BfCapturePoint::SetCapturePointData(GameObject* capturePoint) return true; } +GameObject* BfCapturePoint::GetCapturePointGo() +{ + return m_Bf->GetGameObject(m_capturePointGUID); +} + bool BfCapturePoint::DelCapturePoint() { - if (m_capturePoint) + if (m_capturePointGUID) { - m_capturePoint->SetRespawnTime(0); // not save respawn time - m_capturePoint->Delete(); - m_capturePoint = NULL; + if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID)) + { + capturePoint->SetRespawnTime(0); // not save respawn time + capturePoint->Delete(); + capturePoint = NULL; + } + m_capturePointGUID = 0; } return true; @@ -966,37 +1007,40 @@ bool BfCapturePoint::DelCapturePoint() bool BfCapturePoint::Update(uint32 diff) { - if (!m_capturePoint) + if (!m_capturePointGUID) return false; - float radius = m_capturePoint->GetGOInfo()->capturePoint.radius; - - for (uint8 team = 0; team < 2; ++team) + if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID)) { - for (GuidSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end();) + float radius = capturePoint->GetGOInfo()->capturePoint.radius; + + for (uint8 team = 0; team < 2; ++team) { - if (Player* player = sObjectAccessor->FindPlayer(*itr)) + for (GuidSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end();) { - if (!m_capturePoint->IsWithinDistInMap(player, radius) || !player->IsOutdoorPvPActive()) - itr = HandlePlayerLeave(player); + if (Player* player = sObjectAccessor->FindPlayer(*itr)) + { + if (!capturePoint->IsWithinDistInMap(player, radius) || !player->IsOutdoorPvPActive()) + itr = HandlePlayerLeave(player); + else + ++itr; + } else ++itr; } - else - ++itr; } - } - - std::list players; - Trinity::AnyPlayerInObjectRangeCheck checker(m_capturePoint, radius); - Trinity::PlayerListSearcher searcher(m_capturePoint, players, checker); - m_capturePoint->VisitNearbyWorldObject(radius, searcher); - - for (std::list::iterator itr = players.begin(); itr != players.end(); ++itr) - if ((*itr)->IsOutdoorPvPActive()) - if (m_activePlayers[(*itr)->GetTeamId()].insert((*itr)->GetGUID()).second) - HandlePlayerEnter(*itr); + std::list players; + Trinity::AnyPlayerInObjectRangeCheck checker(capturePoint, radius); + Trinity::PlayerListSearcher searcher(capturePoint, players, checker); + capturePoint->VisitNearbyWorldObject(radius, searcher); + + for (std::list::iterator itr = players.begin(); itr != players.end(); ++itr) + if ((*itr)->IsOutdoorPvPActive()) + if (m_activePlayers[(*itr)->GetTeamId()].insert((*itr)->GetGUID()).second) + HandlePlayerEnter(*itr); + } + // get the difference of numbers float fact_diff = ((float) m_activePlayers[0].size() - (float) m_activePlayers[1].size()) * diff / BATTLEFIELD_OBJECTIVE_UPDATE_INTERVAL; if (G3D::fuzzyEq(fact_diff, 0.0f)) diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index 77525b7d06e..dadab8ba7d0 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -103,8 +103,9 @@ class BfCapturePoint virtual void SendChangePhase(); bool SetCapturePointData(GameObject* capturePoint); - GameObject* GetCapturePointGo() { return m_capturePoint; } - + GameObject* GetCapturePointGo(); + uint32 GetCapturePointEntry(){ return m_capturePointEntry; } + TeamId GetTeamId() { return m_team; } protected: bool DelCapturePoint(); @@ -137,7 +138,7 @@ class BfCapturePoint uint32 m_capturePointEntry; // Gameobject related to that capture point - GameObject* m_capturePoint; + uint64 m_capturePointGUID; }; class BfGraveyard @@ -171,17 +172,7 @@ class BfGraveyard void RelocateDeadPlayers(); // Check if this graveyard has a spirit guide - bool HasNpc(uint64 guid) - { - if (!m_SpiritGuide[0] || !m_SpiritGuide[1]) - return false; - - if (!sObjectAccessor->FindUnit(m_SpiritGuide[0]) || - !sObjectAccessor->FindUnit(m_SpiritGuide[1])) - return false; - - return (m_SpiritGuide[0] == guid || m_SpiritGuide[1] == guid); - } + bool HasNpc(uint64 guid); // Check if a player is in this graveyard's ressurect queue bool HasPlayer(uint64 guid) { return m_ResurrectQueue.find(guid) != m_ResurrectQueue.end(); } @@ -299,6 +290,9 @@ class Battlefield : public ZoneScript Creature* SpawnCreature(uint32 entry, Position pos, TeamId team); GameObject* SpawnGameObject(uint32 entry, float x, float y, float z, float o); + Creature* GetCreature(uint64 GUID); + GameObject* GetGameObject(uint64 GUID); + // Script-methods /// Called on start @@ -377,6 +371,7 @@ class Battlefield : public ZoneScript uint32 m_BattleId; // BattleID (for packet) uint32 m_ZoneId; // ZoneID of Wintergrasp = 4197 uint32 m_MapId; // MapId where is Battlefield + Map* m_Map; uint32 m_MaxPlayer; // Maximum number of player that participated to Battlefield uint32 m_MinPlayer; // Minimum number of player for Battlefield start uint32 m_MinLevel; // Required level to participate at Battlefield @@ -412,7 +407,7 @@ class Battlefield : public ZoneScript void BroadcastPacketToWar(WorldPacket& data) const; // CapturePoint system - void AddCapturePoint(BfCapturePoint* cp) { m_capturePoints[cp->GetCapturePointGo()->GetEntry()] = cp; } + void AddCapturePoint(BfCapturePoint* cp) { m_capturePoints[cp->GetCapturePointEntry()] = cp; } BfCapturePoint* GetCapturePoint(uint32 lowguid) const { diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 59dc6761583..73b2cdce39b 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -50,7 +50,8 @@ bool BattlefieldWG::SetupBattlefield() m_BattleId = BATTLEFIELD_BATTLEID_WG; m_ZoneId = BATTLEFIELD_WG_ZONEID; m_MapId = BATTLEFIELD_WG_MAPID; - + m_Map = sMapMgr->FindMap(m_MapId, 0); + m_MaxPlayer = sWorld->getIntConfig(CONFIG_WINTERGRASP_PLR_MAX); m_IsEnabled = sWorld->getBoolConfig(CONFIG_WINTERGRASP_ENABLE); m_MinPlayer = sWorld->getIntConfig(CONFIG_WINTERGRASP_PLR_MIN); @@ -137,9 +138,8 @@ bool BattlefieldWG::SetupBattlefield() // Hide NPCs from the Attacker's team in the keep for (GuidSet::const_iterator itr = KeepCreature[GetAttackerTeam()].begin(); itr != KeepCreature[GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - HideNpc(creature); + if (Creature* creature = GetCreature(*itr)) + HideNpc(creature); // Spawn Horde NPCs outside the keep for (uint8 i = 0; i < WG_OUTSIDE_ALLIANCE_NPC; i++) @@ -153,9 +153,8 @@ bool BattlefieldWG::SetupBattlefield() // Hide units outside the keep that are defenders for (GuidSet::const_iterator itr = OutsideCreature[GetDefenderTeam()].begin(); itr != OutsideCreature[GetDefenderTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - HideNpc(creature); + if (Creature* creature = GetCreature(*itr)) + HideNpc(creature); // Spawn turrets and hide them per default for (uint8 i = 0; i < WG_MAX_TURRET; i++) @@ -172,20 +171,24 @@ bool BattlefieldWG::SetupBattlefield() // Spawn all gameobjects for (uint8 i = 0; i < WG_MAX_OBJ; i++) { - GameObject* go = SpawnGameObject(WGGameObjectBuilding[i].entry, WGGameObjectBuilding[i].x, WGGameObjectBuilding[i].y, WGGameObjectBuilding[i].z, WGGameObjectBuilding[i].o); - BfWGGameObjectBuilding* b = new BfWGGameObjectBuilding(this); - b->Init(go, WGGameObjectBuilding[i].type, WGGameObjectBuilding[i].WorldState, WGGameObjectBuilding[i].nameId); - if (!IsEnabled() && go->GetEntry() == GO_WINTERGRASP_VAULT_GATE) - go->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED); - BuildingsInZone.insert(b); + if (GameObject* go = SpawnGameObject(WGGameObjectBuilding[i].entry, WGGameObjectBuilding[i].x, WGGameObjectBuilding[i].y, WGGameObjectBuilding[i].z, WGGameObjectBuilding[i].o)) + { + BfWGGameObjectBuilding* b = new BfWGGameObjectBuilding(this); + b->Init(go, WGGameObjectBuilding[i].type, WGGameObjectBuilding[i].WorldState, WGGameObjectBuilding[i].nameId); + if (!IsEnabled() && go->GetEntry() == GO_WINTERGRASP_VAULT_GATE) + go->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED); + BuildingsInZone.insert(b); + } } // Spawning portal defender for (uint8 i = 0; i < WG_MAX_TELEPORTER; i++) { - GameObject* go = SpawnGameObject(WGPortalDefenderData[i].entry, WGPortalDefenderData[i].x, WGPortalDefenderData[i].y, WGPortalDefenderData[i].z, WGPortalDefenderData[i].o); - DefenderPortalList.insert(go); - go->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetDefenderTeam()]); + if (GameObject* go = SpawnGameObject(WGPortalDefenderData[i].entry, WGPortalDefenderData[i].x, WGPortalDefenderData[i].y, WGPortalDefenderData[i].z, WGPortalDefenderData[i].o)) + { + DefenderPortalList.insert(go->GetGUID()); + go->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetDefenderTeam()]); + } } UpdateCounterVehicle(true); @@ -211,13 +214,13 @@ bool BattlefieldWG::Update(uint32 diff) void BattlefieldWG::OnBattleStart() { // Spawn titan relic - m_titansRelic = SpawnGameObject(GO_WINTERGRASP_TITAN_S_RELIC, 5440.0f, 2840.8f, 430.43f, 0); - if (m_titansRelic) + if (GameObject* relic = SpawnGameObject(GO_WINTERGRASP_TITAN_S_RELIC, 5440.0f, 2840.8f, 430.43f, 0)) { // Update faction of relic, only attacker can click on - m_titansRelic->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetAttackerTeam()]); + relic->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetAttackerTeam()]); // Set in use (not allow to click on before last door is broken) - m_titansRelic->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + relic->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + m_titansRelicGUID = relic->GetGUID(); } else sLog->outError(LOG_FILTER_BATTLEFIELD, "WG: Failed to spawn titan relic."); @@ -226,13 +229,10 @@ void BattlefieldWG::OnBattleStart() // Update tower visibility and update faction for (GuidSet::const_iterator itr = CanonList.begin(); itr != CanonList.end(); ++itr) { - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) + if (Creature* creature = GetCreature(*itr)) { - if (Creature* creature = unit->ToCreature()) - { - ShowNpc(creature, true); - creature->setFaction(WintergraspFaction[GetDefenderTeam()]); - } + ShowNpc(creature, true); + creature->setFaction(WintergraspFaction[GetDefenderTeam()]); } } @@ -302,21 +302,19 @@ void BattlefieldWG::UpdateCounterVehicle(bool init) void BattlefieldWG::OnBattleEnd(bool endByTimer) { // Remove relic - if (m_titansRelic) - m_titansRelic->RemoveFromWorld(); - m_titansRelic = NULL; + if (m_titansRelicGUID) + if (GameObject* relic = GetGameObject(m_titansRelicGUID)) + relic->RemoveFromWorld(); + m_titansRelicGUID = 0; // Remove turret for (GuidSet::const_iterator itr = CanonList.begin(); itr != CanonList.end(); ++itr) { - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) + if (Creature* creature = GetCreature(*itr)) { - if (Creature* creature = unit->ToCreature()) - { - if (!endByTimer) - creature->setFaction(WintergraspFaction[GetDefenderTeam()]); - HideNpc(creature); - } + if (!endByTimer) + creature->setFaction(WintergraspFaction[GetDefenderTeam()]); + HideNpc(creature); } } @@ -324,25 +322,21 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) { // Change all npc in keep for (GuidSet::const_iterator itr = KeepCreature[GetAttackerTeam()].begin(); itr != KeepCreature[GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - HideNpc(creature); + if (Creature* creature = GetCreature(*itr)) + HideNpc(creature); for (GuidSet::const_iterator itr = KeepCreature[GetDefenderTeam()].begin(); itr != KeepCreature[GetDefenderTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - ShowNpc(creature, true); + if (Creature* creature = GetCreature(*itr)) + ShowNpc(creature, true); // Change all npc out of keep for (GuidSet::const_iterator itr = OutsideCreature[GetDefenderTeam()].begin(); itr != OutsideCreature[GetDefenderTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - HideNpc(creature); + if (Creature* creature = GetCreature(*itr)) + HideNpc(creature); for (GuidSet::const_iterator itr = OutsideCreature[GetAttackerTeam()].begin(); itr != OutsideCreature[GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - ShowNpc(creature, true); + if (Creature* creature = GetCreature(*itr)) + ShowNpc(creature, true); } // Update all graveyard, control is to defender when no wartime @@ -350,15 +344,18 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) if (BfGraveyard* graveyard = GetGraveyardById(i)) graveyard->GiveControlTo(GetDefenderTeam()); - for (GameObjectSet::const_iterator itr = m_KeepGameObject[GetDefenderTeam()].begin(); itr != m_KeepGameObject[GetDefenderTeam()].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_IMMEDIATELY); + for (GuidSet::const_iterator itr = m_KeepGameObject[GetDefenderTeam()].begin(); itr != m_KeepGameObject[GetDefenderTeam()].end(); ++itr) + if (GameObject* object = GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_IMMEDIATELY); - for (GameObjectSet::const_iterator itr = m_KeepGameObject[GetAttackerTeam()].begin(); itr != m_KeepGameObject[GetAttackerTeam()].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_ONE_DAY); + for (GuidSet::const_iterator itr = m_KeepGameObject[GetAttackerTeam()].begin(); itr != m_KeepGameObject[GetAttackerTeam()].end(); ++itr) + if (GameObject* object = GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_ONE_DAY); // Update portal defender faction - for (GameObjectSet::const_iterator itr = DefenderPortalList.begin(); itr != DefenderPortalList.end(); ++itr) - (*itr)->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetDefenderTeam()]); + for (GuidSet::const_iterator itr = DefenderPortalList.begin(); itr != DefenderPortalList.end(); ++itr) + if (GameObject* portal = GetGameObject(*itr)) + portal->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetDefenderTeam()]); // Saving data for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) @@ -393,10 +390,9 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) m_PlayersInWar[team].clear(); for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - if (creature->IsVehicle()) - creature->GetVehicleKit()->Dismiss(); + if (Creature* creature = GetCreature(*itr)) + if (creature->IsVehicle()) + creature->GetVehicleKit()->Dismiss(); m_vehicles[team].clear(); } @@ -645,18 +641,15 @@ void BattlefieldWG::HandleKill(Player* killer, Unit* victim) for (GuidSet::const_iterator itr = KeepCreature[GetOtherTeam(killerTeam)].begin(); itr != KeepCreature[GetOtherTeam(killerTeam)].end(); ++itr) { - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) + if (Creature* creature = GetCreature(*itr)) { - if (Creature* creature = unit->ToCreature()) + if (victim->GetEntry() == creature->GetEntry() && !again) { - if (victim->GetEntry() == creature->GetEntry() && !again) - { - again = true; - for (GuidSet::const_iterator iter = m_PlayersInWar[killerTeam].begin(); iter != m_PlayersInWar[killerTeam].end(); ++iter) - if (Player* player = sObjectAccessor->FindPlayer(*iter)) - if (player->GetDistance2d(killer) < 40.0f) - PromotePlayer(player); - } + again = true; + for (GuidSet::const_iterator iter = m_PlayersInWar[killerTeam].begin(); iter != m_PlayersInWar[killerTeam].end(); ++iter) + if (Player* player = sObjectAccessor->FindPlayer(*iter)) + if (player->GetDistance2d(killer) < 40.0f) + PromotePlayer(player); } } } @@ -933,22 +926,25 @@ void BattlefieldWG::ProcessEvent(WorldObject *obj, uint32 eventId) { if (CanInteractWithRelic()) EndBattle(false); - else - GetRelic()->SetRespawnTime(RESPAWN_IMMEDIATELY); + else if (GameObject* relic = GetRelic()) + relic->SetRespawnTime(RESPAWN_IMMEDIATELY); } // if destroy or damage event, search the wall/tower and update worldstate/send warning message for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) { - if (go->GetEntry() == (*itr)->m_Build->GetEntry()) + if (GameObject* build = GetGameObject((*itr)->m_BuildGUID)) { - if ((*itr)->m_Build->GetGOInfo()->building.damagedEvent == eventId) - (*itr)->Damaged(); + if (go->GetEntry() == build->GetEntry()) + { + if (build->GetGOInfo()->building.damagedEvent == eventId) + (*itr)->Damaged(); - if ((*itr)->m_Build->GetGOInfo()->building.destroyedEvent == eventId) - (*itr)->Destroyed(); + if (build->GetGOInfo()->building.destroyedEvent == eventId) + (*itr)->Destroyed(); - break; + break; + } } } } @@ -1004,9 +1000,8 @@ void BattlefieldWG::UpdateTenacity() player->RemoveAurasDueToSpell(SPELL_TENACITY); for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - creature->RemoveAurasDueToSpell(SPELL_TENACITY_VEHICLE); + if (Creature* creature = GetCreature(*itr)) + creature->RemoveAurasDueToSpell(SPELL_TENACITY_VEHICLE); } // Apply new buff @@ -1032,9 +1027,8 @@ void BattlefieldWG::UpdateTenacity() player->SetAuraStack(SPELL_TENACITY, player, newStack); for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - creature->SetAuraStack(SPELL_TENACITY_VEHICLE, creature, newStack); + if (Creature* creature = GetCreature(*itr)) + creature->SetAuraStack(SPELL_TENACITY_VEHICLE, creature, newStack); if (buff_honor != 0) { @@ -1042,9 +1036,8 @@ void BattlefieldWG::UpdateTenacity() if (Player* player = sObjectAccessor->FindPlayer(*itr)) player->CastSpell(player, buff_honor, true); for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - creature->CastSpell(creature, buff_honor, true); + if (Creature* creature = GetCreature(*itr)) + creature->CastSpell(creature, buff_honor, true); } } } diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 68072a68249..bf255689329 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -384,10 +384,10 @@ class BattlefieldWG : public Battlefield bool SetupBattlefield(); /// Return pointer to relic object - GameObject* GetRelic() { return m_titansRelic; } + GameObject* GetRelic() { return GetGameObject(m_titansRelicGUID); } /// Define relic object - void SetRelic(GameObject* relic) { m_titansRelic = relic; } + void SetRelic(uint64 relicGUID) { m_titansRelicGUID = relicGUID; } /// Check if players can interact with the relic (Only if the last door has been broken) bool CanInteractWithRelic() { return m_isRelicInteractible; } @@ -421,8 +421,8 @@ class BattlefieldWG : public Battlefield Workshop WorkshopsList; - GameObjectSet DefenderPortalList; - GameObjectSet m_KeepGameObject[2]; + GuidSet DefenderPortalList; + GuidSet m_KeepGameObject[2]; GameObjectBuilding BuildingsInZone; GuidSet m_vehicles[2]; @@ -433,7 +433,7 @@ class BattlefieldWG : public Battlefield uint32 m_tenacityStack; uint32 m_saveTimer; - GameObject* m_titansRelic; + uint64 m_titansRelicGUID; }; uint32 const VehNumWorldState[] = { 3680, 3490 }; @@ -1066,7 +1066,7 @@ struct BfWGGameObjectBuilding { m_WG = WG; m_Team = 0; - m_Build = NULL; + m_BuildGUID = 0; m_Type = 0; m_WorldState = 0; m_State = 0; @@ -1080,7 +1080,7 @@ struct BfWGGameObjectBuilding BattlefieldWG* m_WG; // Linked gameobject - GameObject* m_Build; + uint64 m_BuildGUID; // eWGGameObjectBuildingType uint32 m_Type; @@ -1095,7 +1095,7 @@ struct BfWGGameObjectBuilding uint32 m_NameId; // GameObject associations - GameObjectSet m_GameObjectList[2]; + GuidSet m_GameObjectList[2]; // Creature associations GuidSet m_CreatureBottomList[2]; @@ -1121,20 +1121,23 @@ struct BfWGGameObjectBuilding break; } - // Rebuild gameobject - if (m_Build->IsDestructibleBuilding()) + if (GameObject* build = m_WG->GetGameObject(m_BuildGUID)) { - m_Build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); - if (m_Build->GetEntry() == GO_WINTERGRASP_VAULT_GATE) - if (GameObject* go = m_Build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 10.0f)) - go->EnableCollision(true); - - // Update worldstate - m_State = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (m_Team * 3); - m_WG->SendUpdateWorldState(m_WorldState, m_State); + // Rebuild gameobject + if (build->IsDestructibleBuilding()) + { + build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); + if (build->GetEntry() == GO_WINTERGRASP_VAULT_GATE) + if (GameObject* go = build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 50.0f)) + go->EnableCollision(true); + + // Update worldstate + m_State = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (m_Team * 3); + m_WG->SendUpdateWorldState(m_WorldState, m_State); + } + UpdateCreatureAndGo(); + build->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[m_Team]); } - UpdateCreatureAndGo(); - m_Build->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[m_Team]); } // Called when associated gameobject is damaged @@ -1149,14 +1152,12 @@ struct BfWGGameObjectBuilding m_WG->SendWarningToAllInZone(m_NameId); for (GuidSet::const_iterator itr = m_CreatureTopList[m_WG->GetAttackerTeam()].begin(); itr != m_CreatureTopList[m_WG->GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); for (GuidSet::const_iterator itr = m_TurretTopList.begin(); itr != m_TurretTopList.end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); if (m_Type == BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER) m_WG->UpdateDamagedTowerCount(m_WG->GetDefenderTeam()); @@ -1183,8 +1184,9 @@ struct BfWGGameObjectBuilding m_WG->UpdatedDestroyedTowerCount(TeamId(m_Team)); break; case BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST: - if (GameObject* go = m_Build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 10.0f)) - go->EnableCollision(false); + if (GameObject* build = m_WG->GetGameObject(m_BuildGUID)) + if (GameObject* go = build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 10.0f)) + go->EnableCollision(false); m_WG->SetRelicInteractible(true); if (m_WG->GetRelic()) m_WG->GetRelic()->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); @@ -1198,8 +1200,11 @@ struct BfWGGameObjectBuilding void Init(GameObject* go, uint32 type, uint32 worldstate, uint32 nameid) { + if (!go) + return; + // GameObject associated to object - m_Build = go; + m_BuildGUID = go->GetGUID(); // Type of building (WALL/TOWER/DOOR) m_Type = type; @@ -1227,23 +1232,20 @@ struct BfWGGameObjectBuilding } m_State = sWorld->getWorldState(m_WorldState); - if (m_Build) + switch (m_State) { - switch (m_State) - { - case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT: - case BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT: - m_Build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); - break; - case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY: - case BATTLEFIELD_WG_OBJECTSTATE_HORDE_DESTROY: - m_Build->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED); - break; - case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE: - case BATTLEFIELD_WG_OBJECTSTATE_HORDE_DAMAGE: - m_Build->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED); - break; - } + case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT: + case BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT: + go->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); + break; + case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY: + case BATTLEFIELD_WG_OBJECTSTATE_HORDE_DESTROY: + go->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED); + break; + case BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE: + case BATTLEFIELD_WG_OBJECTSTATE_HORDE_DAMAGE: + go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED); + break; } int32 towerid = -1; @@ -1279,9 +1281,9 @@ struct BfWGGameObjectBuilding { WintergraspObjectPositionData gobData = AttackTowers[towerid - 4].GameObject[i]; if (GameObject* go = m_WG->SpawnGameObject(gobData.entryHorde, gobData.x, gobData.y, gobData.z, gobData.o)) - m_GameObjectList[TEAM_HORDE].insert(go); + m_GameObjectList[TEAM_HORDE].insert(go->GetGUID()); if (GameObject* go = m_WG->SpawnGameObject(gobData.entryAlliance, gobData.x, gobData.y, gobData.z, gobData.o)) - m_GameObjectList[TEAM_ALLIANCE].insert(go); + m_GameObjectList[TEAM_ALLIANCE].insert(go->GetGUID()); } // Spawn associate npc bottom @@ -1365,64 +1367,59 @@ struct BfWGGameObjectBuilding void UpdateCreatureAndGo() { for (GuidSet::const_iterator itr = m_CreatureTopList[m_WG->GetDefenderTeam()].begin(); itr != m_CreatureTopList[m_WG->GetDefenderTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); for (GuidSet::const_iterator itr = m_CreatureTopList[m_WG->GetAttackerTeam()].begin(); itr != m_CreatureTopList[m_WG->GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->ShowNpc(creature, true); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->ShowNpc(creature, true); for (GuidSet::const_iterator itr = m_CreatureBottomList[m_WG->GetDefenderTeam()].begin(); itr != m_CreatureBottomList[m_WG->GetDefenderTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); for (GuidSet::const_iterator itr = m_CreatureBottomList[m_WG->GetAttackerTeam()].begin(); itr != m_CreatureBottomList[m_WG->GetAttackerTeam()].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->ShowNpc(creature, true); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->ShowNpc(creature, true); - for (GameObjectSet::const_iterator itr = m_GameObjectList[m_WG->GetDefenderTeam()].begin(); itr != m_GameObjectList[m_WG->GetDefenderTeam()].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_ONE_DAY); + for (GuidSet::const_iterator itr = m_GameObjectList[m_WG->GetDefenderTeam()].begin(); itr != m_GameObjectList[m_WG->GetDefenderTeam()].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_ONE_DAY); - for (GameObjectSet::const_iterator itr = m_GameObjectList[m_WG->GetAttackerTeam()].begin(); itr != m_GameObjectList[m_WG->GetAttackerTeam()].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_IMMEDIATELY); + for (GuidSet::const_iterator itr = m_GameObjectList[m_WG->GetAttackerTeam()].begin(); itr != m_GameObjectList[m_WG->GetAttackerTeam()].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_IMMEDIATELY); } void UpdateTurretAttack(bool disable) { for (GuidSet::const_iterator itr = m_TowerCannonBottomList.begin(); itr != m_TowerCannonBottomList.end(); ++itr) { - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) + if (Creature* creature = m_WG->GetCreature(*itr)) { - if (Creature* creature = unit->ToCreature()) + if (GameObject* build = m_WG->GetGameObject(m_BuildGUID)) { - if (m_Build) - { - if (disable) - m_WG->HideNpc(creature); - else - m_WG->ShowNpc(creature, true); + if (disable) + m_WG->HideNpc(creature); + else + m_WG->ShowNpc(creature, true); - switch (m_Build->GetEntry()) + switch (build->GetEntry()) + { + case GO_WINTERGRASP_FORTRESS_TOWER_1: + case GO_WINTERGRASP_FORTRESS_TOWER_2: + case GO_WINTERGRASP_FORTRESS_TOWER_3: + case GO_WINTERGRASP_FORTRESS_TOWER_4: + { + creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + break; + } + case GO_WINTERGRASP_SHADOWSIGHT_TOWER: + case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: + case GO_WINTERGRASP_FLAMEWATCH_TOWER: { - case GO_WINTERGRASP_FORTRESS_TOWER_1: - case GO_WINTERGRASP_FORTRESS_TOWER_2: - case GO_WINTERGRASP_FORTRESS_TOWER_3: - case GO_WINTERGRASP_FORTRESS_TOWER_4: - { - creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); - break; - } - case GO_WINTERGRASP_SHADOWSIGHT_TOWER: - case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: - case GO_WINTERGRASP_FLAMEWATCH_TOWER: - { - creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); - break; - } + creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + break; } } } @@ -1431,34 +1428,31 @@ struct BfWGGameObjectBuilding for (GuidSet::const_iterator itr = m_TurretTopList.begin(); itr != m_TurretTopList.end(); ++itr) { - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) + if (Creature* creature = m_WG->GetCreature(*itr)) { - if (Creature* creature = unit->ToCreature()) + if (GameObject* build = m_WG->GetGameObject(m_BuildGUID)) { - if (m_Build) - { - if (disable) - m_WG->HideNpc(creature); - else - m_WG->ShowNpc(creature, true); + if (disable) + m_WG->HideNpc(creature); + else + m_WG->ShowNpc(creature, true); - switch (m_Build->GetEntry()) + switch (build->GetEntry()) + { + case GO_WINTERGRASP_FORTRESS_TOWER_1: + case GO_WINTERGRASP_FORTRESS_TOWER_2: + case GO_WINTERGRASP_FORTRESS_TOWER_3: + case GO_WINTERGRASP_FORTRESS_TOWER_4: { - case GO_WINTERGRASP_FORTRESS_TOWER_1: - case GO_WINTERGRASP_FORTRESS_TOWER_2: - case GO_WINTERGRASP_FORTRESS_TOWER_3: - case GO_WINTERGRASP_FORTRESS_TOWER_4: - { - creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); - break; - } - case GO_WINTERGRASP_SHADOWSIGHT_TOWER: - case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: - case GO_WINTERGRASP_FLAMEWATCH_TOWER: - { - creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); - break; - } + creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + break; + } + case GO_WINTERGRASP_SHADOWSIGHT_TOWER: + case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: + case GO_WINTERGRASP_FLAMEWATCH_TOWER: + { + creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + break; } } } @@ -1545,19 +1539,19 @@ struct WGWorkshop struct WintergraspWorkshopData { BattlefieldWG* m_WG; // Pointer to wintergrasp - GameObject* m_Build; + uint64 m_BuildGUID; uint32 m_Type; uint32 m_State; // For worldstate uint32 m_WorldState; uint32 m_TeamControl; // Team witch control the workshop GuidSet m_CreatureOnPoint[2]; // Contain all Creature associate to this point - GameObjectSet m_GameObjectOnPoint[2]; // Contain all Gameobject associate to this point + GuidSet m_GameObjectOnPoint[2]; // Contain all Gameobject associate to this point uint32 m_NameId; // Id of trinity_string witch contain name of this node, using for alert message WintergraspWorkshopData(BattlefieldWG* WG) { m_WG = WG; - m_Build = NULL; + m_BuildGUID = 0; m_Type = 0; m_State = 0; m_WorldState = 0; @@ -1579,9 +1573,9 @@ struct WintergraspWorkshopData void AddGameObject(WintergraspObjectPositionData obj) { if (GameObject* gameobject = m_WG->SpawnGameObject(obj.entryHorde, obj.x, obj.y, obj.z, obj.o)) - m_GameObjectOnPoint[TEAM_HORDE].insert(gameobject); + m_GameObjectOnPoint[TEAM_HORDE].insert(gameobject->GetGUID()); if (GameObject* gameobject = m_WG->SpawnGameObject(obj.entryAlliance, obj.x, obj.y, obj.z, obj.o)) - m_GameObjectOnPoint[TEAM_ALLIANCE].insert(gameobject); + m_GameObjectOnPoint[TEAM_ALLIANCE].insert(gameobject->GetGUID()); } // Init method, setup variable @@ -1608,23 +1602,23 @@ struct WintergraspWorkshopData { // Show Alliance creature for (GuidSet::const_iterator itr = m_CreatureOnPoint[TEAM_ALLIANCE].begin(); itr != m_CreatureOnPoint[TEAM_ALLIANCE].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->ShowNpc(creature, creature->GetEntry() != 30499); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->ShowNpc(creature, creature->GetEntry() != 30499); // Hide Horde creature for (GuidSet::const_iterator itr = m_CreatureOnPoint[TEAM_HORDE].begin(); itr != m_CreatureOnPoint[TEAM_HORDE].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); // Show Alliance gameobject - for (GameObjectSet::const_iterator itr = m_GameObjectOnPoint[TEAM_ALLIANCE].begin(); itr != m_GameObjectOnPoint[TEAM_ALLIANCE].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_IMMEDIATELY); + for (GuidSet::const_iterator itr = m_GameObjectOnPoint[TEAM_ALLIANCE].begin(); itr != m_GameObjectOnPoint[TEAM_ALLIANCE].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_IMMEDIATELY); // Hide Horde gameobject - for (GameObjectSet::const_iterator itr = m_GameObjectOnPoint[TEAM_HORDE].begin(); itr != m_GameObjectOnPoint[TEAM_HORDE].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_ONE_DAY); + for (GuidSet::const_iterator itr = m_GameObjectOnPoint[TEAM_HORDE].begin(); itr != m_GameObjectOnPoint[TEAM_HORDE].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_ONE_DAY); // Updating worldstate @@ -1647,23 +1641,23 @@ struct WintergraspWorkshopData { // Show Horde creature for (GuidSet::const_iterator itr = m_CreatureOnPoint[TEAM_HORDE].begin(); itr != m_CreatureOnPoint[TEAM_HORDE].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->ShowNpc(creature, creature->GetEntry() != 30400); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->ShowNpc(creature, creature->GetEntry() != 30400); // Hide Alliance creature for (GuidSet::const_iterator itr = m_CreatureOnPoint[TEAM_ALLIANCE].begin(); itr != m_CreatureOnPoint[TEAM_ALLIANCE].end(); ++itr) - if (Unit* unit = sObjectAccessor->FindUnit(*itr)) - if (Creature* creature = unit->ToCreature()) - m_WG->HideNpc(creature); + if (Creature* creature = m_WG->GetCreature(*itr)) + m_WG->HideNpc(creature); // Hide Alliance gameobject - for (GameObjectSet::const_iterator itr = m_GameObjectOnPoint[TEAM_ALLIANCE].begin(); itr != m_GameObjectOnPoint[TEAM_ALLIANCE].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_ONE_DAY); + for (GuidSet::const_iterator itr = m_GameObjectOnPoint[TEAM_ALLIANCE].begin(); itr != m_GameObjectOnPoint[TEAM_ALLIANCE].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_ONE_DAY); // Show Horde gameobject - for (GameObjectSet::const_iterator itr = m_GameObjectOnPoint[TEAM_HORDE].begin(); itr != m_GameObjectOnPoint[TEAM_HORDE].end(); ++itr) - (*itr)->SetRespawnTime(RESPAWN_IMMEDIATELY); + for (GuidSet::const_iterator itr = m_GameObjectOnPoint[TEAM_HORDE].begin(); itr != m_GameObjectOnPoint[TEAM_HORDE].end(); ++itr) + if (GameObject* object = m_WG->GetGameObject(*itr)) + object->SetRespawnTime(RESPAWN_IMMEDIATELY); // Update worlstate m_State = BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT; -- cgit v1.2.3 From b1ec4b61acd0cd8f19ec96f3452c99fd45ad9362 Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 01:03:46 +0100 Subject: Fix error in 32c259b1ce (broken chat) --- src/server/game/Chat/Channels/Channel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 7bada252da6..d252c571acb 100755 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -621,11 +621,11 @@ void Channel::Say(uint64 guid, std::string const& what, uint32 lang) WorldPacket data(SMSG_MESSAGECHAT, 1 + 4 + 8 + 4 + _name.size() + 8 + 4 + what.size() + 1); data << uint8(CHAT_MSG_CHANNEL); data << uint32(lang); - data << guid; + data << uint64(guid); data << uint32(0); data << _name; - data << guid; - data << what.size() + 1; + data << uint64(guid); + data << uint32(what.size() + 1); data << what; data << uint8(player ? player->GetChatTag() : 0); -- cgit v1.2.3 From 26006551e292d151bc28f6e136953b128b40a155 Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 12:30:11 +0100 Subject: Fix wrong replacement in 32c259b1ce (Fixes a minor error msg) --- src/server/game/Chat/Channels/Channel.cpp | 13 ++++++++++--- src/server/game/Chat/Channels/ChannelMgr.cpp | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index d252c571acb..cba38a3ebf1 100755 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -479,7 +479,7 @@ void Channel::SetOwner(Player const* player, std::string const& newname) uint64 guid = player->GetGUID(); uint32 sec = player->GetSession()->GetSecurity(); - if (!IsOn(guid) || (!AccountMgr::IsGMAccount(sec) && guid != _ownerGUID)) + if (!IsOn(guid)) { WorldPacket data; MakeNotMember(&data); @@ -487,6 +487,14 @@ void Channel::SetOwner(Player const* player, std::string const& newname) return; } + if (!AccountMgr::IsGMAccount(sec) && guid != _ownerGUID) + { + WorldPacket data; + MakeNotOwner(&data); + SendToOne(&data, guid); + return; + } + Player* newp = sObjectAccessor->FindPlayerByName(newname); uint64 victim = newp ? newp->GetGUID() : 0; @@ -600,8 +608,6 @@ void Channel::Say(uint64 guid, std::string const& what, uint32 lang) if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) lang = LANG_UNIVERSAL; - Player* player = ObjectAccessor::FindPlayer(guid); - if (!IsOn(guid)) { WorldPacket data; @@ -627,6 +633,7 @@ void Channel::Say(uint64 guid, std::string const& what, uint32 lang) data << uint64(guid); data << uint32(what.size() + 1); data << what; + Player* player = ObjectAccessor::FindPlayer(guid); data << uint8(player ? player->GetChatTag() : 0); SendToAll(&data, !playersStore[guid].IsModerator() ? guid : false); diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index bcb9ee61b78..acd85f11ed8 100755 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -42,7 +42,7 @@ ChannelMgr* ChannelMgr::forTeam(uint32 team) return NULL; } -Channel* ChannelMgr::GetJoinChannel(std::string const& name, uint32 channel_id) +Channel* ChannelMgr::GetJoinChannel(std::string const& name, uint32 channelId) { std::wstring wname; Utf8toWStr(name, wname); @@ -52,7 +52,7 @@ Channel* ChannelMgr::GetJoinChannel(std::string const& name, uint32 channel_id) if (i == channels.end()) { - Channel* nchan = new Channel(name, channel_id, team); + Channel* nchan = new Channel(name, channelId, team); channels[wname] = nchan; return nchan; } -- cgit v1.2.3 From 0c4e8c8dc299b6f61c6ddd24a0442515ff4a60cd Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 12:36:18 +0100 Subject: Core/Network: Enable trace loggers for packet send and receive (just account + opcodeName, opcodeId) --- src/server/game/Server/WorldSession.cpp | 17 ++++++++--------- src/server/game/Server/WorldSocket.cpp | 6 ++++++ 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 18ff3b32d67..0185d4adc9f 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -225,7 +225,10 @@ void WorldSession::LogUnexpectedOpcode(WorldPacket* packet, const char* status, /// Logging helper for unexpected opcodes void WorldSession::LogUnprocessedTail(WorldPacket* packet) { - sLog->outError(LOG_FILTER_OPCODES, "Unprocessed tail data (read stop at %u from %u) Opcode %s from %s", + if (!sLog->ShouldLog(LOG_FILTER_OPCODES, LOG_LEVEL_TRACE) || packet->rpos() >= packet->wpos()) + return; + + sLog->outTrace(LOG_FILTER_OPCODES, "Unprocessed tail data (read stop at %u from %u) Opcode %s from %s", uint32(packet->rpos()), uint32(packet->wpos()), GetOpcodeNameForLogging(packet->GetOpcode()).c_str(), GetPlayerInfo().c_str()); packet->print_storage(); } @@ -293,8 +296,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) { sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); (this->*opHandle.handler)(*packet); - if (sLog->ShouldLog(LOG_FILTER_NETWORKIO, LOG_LEVEL_TRACE) && packet->rpos() < packet->wpos()) - LogUnprocessedTail(packet); + LogUnprocessedTail(packet); } // lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer break; @@ -307,8 +309,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) // not expected _player or must checked in packet handler sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); (this->*opHandle.handler)(*packet); - if (sLog->ShouldLog(LOG_FILTER_NETWORKIO, LOG_LEVEL_TRACE) && packet->rpos() < packet->wpos()) - LogUnprocessedTail(packet); + LogUnprocessedTail(packet); } break; case STATUS_TRANSFER: @@ -320,8 +321,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) { sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); (this->*opHandle.handler)(*packet); - if (sLog->ShouldLog(LOG_FILTER_NETWORKIO, LOG_LEVEL_TRACE) && packet->rpos() < packet->wpos()) - LogUnprocessedTail(packet); + LogUnprocessedTail(packet); } break; case STATUS_AUTHED: @@ -339,8 +339,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); (this->*opHandle.handler)(*packet); - if (sLog->ShouldLog(LOG_FILTER_NETWORKIO, LOG_LEVEL_TRACE) && packet->rpos() < packet->wpos()) - LogUnprocessedTail(packet); + LogUnprocessedTail(packet); break; case STATUS_NEVER: sLog->outError(LOG_FILTER_OPCODES, "Received not allowed opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 3b143c443f3..501b46007cb 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -163,6 +163,9 @@ int WorldSocket::SendPacket(WorldPacket const& pct) if (sPacketLog->CanLogPacket()) sPacketLog->LogPacket(pct, SERVER_TO_CLIENT); + if (m_Session) + sLog->outTrace(LOG_FILTER_OPCODES, "S->C %s %s", m_Session->GetPlayerInfo().c_str(), GetOpcodeNameForLogging(pct.GetOpcode()).c_str()); + // Create a copy of the original packet; this is to avoid issues if a hook modifies it. sScriptMgr->OnPacketSend(this, WorldPacket(pct)); @@ -674,6 +677,9 @@ int WorldSocket::ProcessIncoming(WorldPacket* new_pct) if (sPacketLog->CanLogPacket()) sPacketLog->LogPacket(*new_pct, CLIENT_TO_SERVER); + if (m_Session) + sLog->outTrace(LOG_FILTER_OPCODES, "C->S %s %s", m_Session->GetPlayerInfo().c_str(), GetOpcodeNameForLogging(new_pct.GetOpcode()).c_str()); + try { switch (opcode) -- cgit v1.2.3 From 3dea2af3999f96614c711506809172b61bdc3dd6 Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 12:44:35 +0100 Subject: Core/Achievements: Minor correction in Log msg Closes #8396 --- src/server/game/Achievements/AchievementMgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 2c20db8e5d4..91437ae3bb5 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2406,7 +2406,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() if (!result) { - sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 completed achievements. DB table `character_achievement` is empty."); + sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 realm first completed achievements. DB table `character_achievement` is empty."); return; } @@ -2433,7 +2433,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() m_allCompletedAchievements.insert(achievementId); } while (result->NextRow()); - sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %lu completed achievements in %u ms", (unsigned long)m_allCompletedAchievements.size(), GetMSTimeDiffToNow(oldMSTime)); + sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %lu realm first completed achievements in %u ms", (unsigned long)m_allCompletedAchievements.size(), GetMSTimeDiffToNow(oldMSTime)); } void AchievementGlobalMgr::LoadRewards() -- cgit v1.2.3 From a79065b12e3743d7ec06926324496c0fae9ea9f7 Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 12:54:44 +0100 Subject: Typo Fix :D --- src/server/game/Server/WorldSocket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 501b46007cb..8b034299ad6 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -678,7 +678,7 @@ int WorldSocket::ProcessIncoming(WorldPacket* new_pct) sPacketLog->LogPacket(*new_pct, CLIENT_TO_SERVER); if (m_Session) - sLog->outTrace(LOG_FILTER_OPCODES, "C->S %s %s", m_Session->GetPlayerInfo().c_str(), GetOpcodeNameForLogging(new_pct.GetOpcode()).c_str()); + sLog->outTrace(LOG_FILTER_OPCODES, "C->S %s %s", m_Session->GetPlayerInfo().c_str(), GetOpcodeNameForLogging(new_pct->GetOpcode()).c_str()); try { -- cgit v1.2.3 From 86594d4b7ace576c8022cea7f42538380025a1b0 Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 15:13:00 +0100 Subject: Fix logic error in 81606e5 (Fixes orange ooze in Professor putricide) Closes #8418 --- .../scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index a950a74e59c..007adb4cc56 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -1007,7 +1007,7 @@ class spell_putricide_unstable_experiment : public SpellScriptLoader Creature* creature = GetCaster()->ToCreature(); uint32 stage = creature->AI()->GetData(DATA_EXPERIMENT_STAGE); - creature->AI()->SetData(DATA_EXPERIMENT_STAGE, !stage); + creature->AI()->SetData(DATA_EXPERIMENT_STAGE, stage ^ true); Creature* target = NULL; std::list creList; -- cgit v1.2.3 From f09d8b3c71efe0dff4e7dfde13b48d29cbec18dc Mon Sep 17 00:00:00 2001 From: Spp Date: Fri, 23 Nov 2012 15:24:17 +0100 Subject: Addition to last commit... "Fix logic error in 81606e5 (Fixes orange ooze in Professor putricide)" --- .../scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 007adb4cc56..4727504a4bd 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -553,6 +553,12 @@ class boss_professor_putricide : public CreatureScript return 0; } + void SetData(uint32 id, uint32 data) + { + if (id == DATA_EXPERIMENT_STAGE) + _experimentState = bool(data); + } + void UpdateAI(uint32 const diff) { if ((!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF) && !UpdateVictim()) || !CheckInRoom()) -- cgit v1.2.3 From 14b728255c47b4a3ab60ee1b7ef4ccf22f66720e Mon Sep 17 00:00:00 2001 From: Gacko Date: Wed, 21 Nov 2012 21:43:17 +0100 Subject: Core/DB: Converted 11 scripts to creature text --- .../world/2012_11_21_00_world_creature_text.sql | 165 ++++++++++++++++ .../BlackwingLair/boss_broodlord_lashlayer.cpp | 8 +- .../BlackwingLair/boss_chromaggus.cpp | 8 +- .../BlackwingLair/boss_flamegor.cpp | 4 +- .../BlackwingLair/boss_nefarian.cpp | 56 +++--- .../BlackwingLair/boss_razorgore.cpp | 8 +- .../BlackwingLair/boss_vaelastrasz.cpp | 20 +- .../EasternKingdoms/Deadmines/boss_mr_smite.cpp | 4 +- .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 213 +++++++++++---------- .../Scholomance/boss_doctor_theolen_krastinov.cpp | 3 +- .../EasternKingdoms/Scholomance/boss_vectus.cpp | 3 +- .../scripts/EasternKingdoms/swamp_of_sorrows.cpp | 25 ++- 12 files changed, 350 insertions(+), 167 deletions(-) create mode 100644 sql/updates/world/2012_11_21_00_world_creature_text.sql (limited to 'src') diff --git a/sql/updates/world/2012_11_21_00_world_creature_text.sql b/sql/updates/world/2012_11_21_00_world_creature_text.sql new file mode 100644 index 00000000000..1b199b1db3e --- /dev/null +++ b/sql/updates/world/2012_11_21_00_world_creature_text.sql @@ -0,0 +1,165 @@ +-- ---------------------------------- +-- Creature text conversion part 2 -- +-- ---------------------------------- +-- razorgore +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1469025 AND -1469022; +DELETE FROM `creature_text` WHERE `entry`=12435; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(12435,0,0,14,8275,100,"razorgore SAY_EGGS_BROKEN1","You'll pay for forcing me to do this."), +(12435,1,0,14,8276,100,"razorgore SAY_EGGS_BROKEN2","Fools! These eggs are more precious than you know."), +(12435,2,0,14,8277,100,"razorgore SAY_EGGS_BROKEN3","No! Not another one! I'll have your heads for this atrocity."), +(12435,3,0,14,8278,100,"razorgore SAY_DEATH","If I fall into the abyss I'll take all of you mortals with me..."); + +-- nefarian +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1469021 AND -1469007; +DELETE FROM `creature_text` WHERE `entry`=11583; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(11583,0,0,14,8288,100,"nefarian SAY_AGGRO","Well done, my minions. The mortals' courage begins to wane! Now, let's see how they contend with the true Lord of Blackrock Spire!"), +(11583,0,1,14,8289,100,"nefarian SAY_XHEALTH","Enough! Now you vermin shall feel the force of my birthright, the fury of the earth itself."), +(11583,0,2,14,8290,100,"nefarian SAY_SHADOWFLAME","Burn, you wretches! Burn!"), +(11583,1,0,14,8291,100,"nefarian SAY_RAISE_SKELETONS","Impossible! Rise my minions! Serve your master once more!"), +(11583,2,0,14,8293,100,"nefarian SAY_SLAY","Worthless $N! Your friends will join you soon enough!"), +(11583,3,0,14,8292,100,"nefarian SAY_DEATH","This cannot be! I am the Master here! You mortals are nothing to my kind! DO YOU HEAR? NOTHING!"), +(11583,4,0,14,0,100,"nefarian SAY_MAGE","Mages too? You should be more careful when you play with magic..."), +(11583,5,0,14,0,100,"nefarian SAY_WARRIOR","Warriors, I know you can hit harder than that! Let's see it!"), +(11583,6,0,14,0,100,"nefarian SAY_DRUID","Druids and your silly shapeshifting. Let's see it in action!"), +(11583,7,0,14,0,100,"nefarian SAY_PRIEST","Priests! If you're going to keep healing like that, we might as well make it a little more interesting!"), +(11583,8,0,14,0,100,"nefarian SAY_PALADIN","Paladins, I've heard you have many lives. Show me."), +(11583,9,0,14,0,100,"nefarian SAY_SHAMAN","Shamans, show me what your totems can do!"), +(11583,10,0,14,0,100,"nefarian SAY_WARLOCK","Warlocks, you shouldn't be playing with magic you don't understand. See what happens?"), +(11583,11,0,14,0,100,"nefarian SAY_HUNTER","Hunters and your annoying pea-shooters!"), +(11583,12,0,14,0,100,"nefarian SAY_ROGUE","Rogues? Stop hiding and face me!"); + +-- broodlord +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1469001 AND -1469000; +DELETE FROM `creature_text` WHERE `entry`=12017; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(12017,0,0,14,8286,100,"broodlord SAY_AGGRO","None of your kind should be here! You've doomed only yourselves!"), +(12017,1,0,14,8287,100,"broodlord SAY_LEASH","Clever Mortals but I am not so easily lured away from my sanctum!"); + +-- flamegor +DELETE FROM `script_texts` WHERE `entry`=-1469031; +DELETE FROM `creature_text` WHERE `entry`=11981; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(11981,0,0,16,0,100,"flamegor EMOTE_FRENZY","%s goes into a frenzy!"); + +-- chromaggus +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1469003 AND -1469002; +DELETE FROM `creature_text` WHERE `entry`=14020; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(14020,0,0,16,0,100,"chromaggus EMOTE_FRENZY","goes into a killing frenzy!"), +(14020,1,0,16,0,100,"chromaggus EMOTE_SHIMMER","flinches as its skin shimmers."); + +-- vaelastrasz +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1469030 AND -1469026; +DELETE FROM `creature_text` WHERE `entry`=13020; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(13020,0,0,14,8281,100,"vaelastrasz SAY_LINE1","Too late...friends. Nefarius' corruption has taken hold. I cannot...control myself."), +(13020,1,0,14,8282,100,"vaelastrasz SAY_LINE2","I beg you Mortals, flee! Flee before I lose all control. The Black Fire rages within my heart. I must release it!"), +(13020,2,0,14,8283,100,"vaelastrasz SAY_LINE3","FLAME! DEATH! DESTRUCTION! COWER MORTALS BEFORE THE WRATH OF LORD....NO! I MUST FIGHT THIS!"), +(13020,3,0,14,8285,100,"vaelastrasz SAY_HALFLIFE","Nefarius' hate has made me stronger than ever before. You should have fled, while you could, mortals! The fury of Blackrock courses through my veins!"), +(13020,4,0,14,8284,100,"vaelastrasz SAY_KILLTARGET","Forgive me $N, your death only adds to my failure."); + +-- doctor theolen krastinov +-- No delete query here, it's a generic script text for frenzy emotes. +DELETE FROM `creature_text` WHERE `entry`=11261; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(11261,0,0,16,0,100,"doctor theolen krastinov EMOTE_FRENZY_KILL","%s goes into a killing frenzy!"); + +-- vectus +-- No delete query here, it's a generic script text for frenzy emotes. +DELETE FROM `creature_text` WHERE `entry`=10432; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(10432,0,0,16,0,100,"vectus EMOTE_FRENZY_KILL","%s goes into a killing frenzy!"); + +-- galen +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000506 AND -1000500; +DELETE FROM `creature_text` WHERE `entry`=5391; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(5391,0,0,12,0,100,"galen SAY_PERIODIC","Help! Please, You must help me!"), +(5391,1,0,12,0,100,"galen SAY_QUEST_ACCEPTED","Let us leave this place."), +(5391,2,0,12,0,100,"galen SAY_ATTACKED_1","Look out! The $c attacks!"), +(5391,2,1,12,0,100,"galen SAY_ATTACKED_2","Help! I'm under attack!"), +(5391,3,0,12,0,100,"galen SAY_QUEST_COMPLETE","Thank you $N. I will remember you always. You can find my strongbox in my camp, north of Stonard."), +(5391,4,0,16,0,100,"galen EMOTE_WHISPER","%s whispers to $N the secret to opening his strongbox."), +(5391,5,0,16,0,100,"galen EMOTE_DISAPPEAR","%s disappears into the swamp."); + +-- smite +DELETE FROM `script_texts` WHERE `entry`=-1036001; +DELETE FROM `creature_text` WHERE `entry`=646; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(646,0,0,14,5777,100,"smite SAY_AGGRO","We're under attack! A vast, ye swabs! Repel the invaders!"); + +-- crusader +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609519 AND -1609501; +DELETE FROM `creature_text` WHERE `entry` IN (28939,28610,28940); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +-- Scarlet Preacher +(28939,1,0,12,0,100,"crusader SAY_CRUSADER1","You'll be hanging in the gallows shortly, Scourge fiend!"), +(28939,1,1,12,0,100,"crusader SAY_CRUSADER2","You'll have to kill me, monster! I will tell you NOTHING!"), +(28939,1,2,12,0,100,"crusader SAY_CRUSADER3","You hit like a girl. Honestly. Is that the best you can do?"), +(28939,1,3,12,0,100,"crusader SAY_CRUSADER4","ARGH! You burned my last good tabard!"), +(28939,1,4,12,0,100,"crusader SAY_CRUSADER5","Argh... The pain... The pain is almost as unbearable as the lashings I received in grammar school when I was but a child."), +(28939,1,5,12,0,100,"crusader SAY_CRUSADER6","I used to work for Grand Inquisitor Isillien! Your idea of pain is a normal mid-afternoon for me!"), +(28939,2,0,12,0,100,"break crusader SAY_PERSUADED1","I'll tell you everything! STOP! PLEASE!"), +(28939,3,0,12,0,100,"break crusader SAY_PERSUADED2","We... We have only been told that the \"Crimson Dawn\" is an awakening. You see, the Light speaks to the High General. It is the Light..."), +(28939,4,0,12,0,100,"break crusader SAY_PERSUADED3","The Light that guides us. The movement was set in motion before you came... We... We do as we are told. It is what must be done."), +(28939,5,0,12,0,100,"break crusader SAY_PERSUADED4","I know very little else... The High General chooses who may go and who must stay behind. There's nothing else... You must believe me!"), +(28939,6,0,12,0,100,"break crusader SAY_PERSUADED6","NO! PLEASE! There is one more thing that I forgot to mention... A courier comes soon... From Hearthglen. It..."), +-- Scarlet Crusader +(28940,1,0,12,0,100,"crusader SAY_CRUSADER1","You'll be hanging in the gallows shortly, Scourge fiend!"), +(28940,1,1,12,0,100,"crusader SAY_CRUSADER2","You'll have to kill me, monster! I will tell you NOTHING!"), +(28940,1,2,12,0,100,"crusader SAY_CRUSADER3","You hit like a girl. Honestly. Is that the best you can do?"), +(28940,1,3,12,0,100,"crusader SAY_CRUSADER4","ARGH! You burned my last good tabard!"), +(28940,1,4,12,0,100,"crusader SAY_CRUSADER5","Argh... The pain... The pain is almost as unbearable as the lashings I received in grammar school when I was but a child."), +(28940,1,5,12,0,100,"crusader SAY_CRUSADER6","I used to work for Grand Inquisitor Isillien! Your idea of pain is a normal mid-afternoon for me!"), +(28940,2,0,12,0,100,"break crusader SAY_PERSUADED1","I'll tell you everything! STOP! PLEASE!"), +(28940,3,0,12,0,100,"break crusader SAY_PERSUADED2","We... We have only been told that the \"Crimson Dawn\" is an awakening. You see, the Light speaks to the High General. It is the Light..."), +(28940,4,0,12,0,100,"break crusader SAY_PERSUADED3","The Light that guides us. The movement was set in motion before you came... We... We do as we are told. It is what must be done."), +(28940,5,0,12,0,100,"break crusader SAY_PERSUADED4","I know very little else... The High General chooses who may go and who must stay behind. There's nothing else... You must believe me!"), +(28940,6,0,12,0,100,"break crusader SAY_PERSUADED6","NO! PLEASE! There is one more thing that I forgot to mention... A courier comes soon... From Hearthglen. It..."), +-- Scarlet Marksman +(28610,1,0,12,0,100,"crusader SAY_CRUSADER1","You'll be hanging in the gallows shortly, Scourge fiend!"), +(28610,1,1,12,0,100,"crusader SAY_CRUSADER2","You'll have to kill me, monster! I will tell you NOTHING!"), +(28610,1,2,12,0,100,"crusader SAY_CRUSADER3","You hit like a girl. Honestly. Is that the best you can do?"), +(28610,1,3,12,0,100,"crusader SAY_CRUSADER4","ARGH! You burned my last good tabard!"), +(28610,1,4,12,0,100,"crusader SAY_CRUSADER5","Argh... The pain... The pain is almost as unbearable as the lashings I received in grammar school when I was but a child."), +(28610,1,5,12,0,100,"crusader SAY_CRUSADER6","I used to work for Grand Inquisitor Isillien! Your idea of pain is a normal mid-afternoon for me!"), +(28610,2,0,12,0,100,"break crusader SAY_PERSUADED1","I'll tell you everything! STOP! PLEASE!"), +(28610,3,0,12,0,100,"break crusader SAY_PERSUADED2","We... We have only been told that the \"Crimson Dawn\" is an awakening. You see, the Light speaks to the High General. It is the Light..."), +(28610,4,0,12,0,100,"break crusader SAY_PERSUADED3","The Light that guides us. The movement was set in motion before you came... We... We do as we are told. It is what must be done."), +(28610,5,0,12,0,100,"break crusader SAY_PERSUADED4","I know very little else... The High General chooses who may go and who must stay behind. There's nothing else... You must believe me!"), +(28610,6,0,12,0,100,"break crusader SAY_PERSUADED6","NO! PLEASE! There is one more thing that I forgot to mention... A courier comes soon... From Hearthglen. It..."); + +-- koltira deathweaver +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609570 AND -1609561; +DELETE FROM `creature_text` WHERE `entry`=28912; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(28912,0,0,12,0,100,"koltira deathweaver SAY_BREAKOUT1","I'll need to get my runeblade and armor... Just need a little more time."), +(28912,1,0,12,0,100,"koltira deathweaver SAY_BREAKOUT2","I'm still weak, but I think I can get an anti-magic barrier up. Stay inside it or you'll be destroyed by their spells."), +(28912,2,0,12,0,100,"koltira deathweaver SAY_BREAKOUT3","Maintaining this barrier will require all of my concentration. Kill them all!"), +(28912,3,0,12,0,100,"koltira deathweaver SAY_BREAKOUT4","There are more coming. Defend yourself! Don't fall out of the anti-magic field! They'll tear you apart without its protection!"), +(28912,4,0,12,0,100,"koltira deathweaver SAY_BREAKOUT5","I can't keep barrier up much longer... Where is that coward?"), +(28912,5,0,12,0,100,"koltira deathweaver SAY_BREAKOUT6","The High Inquisitor comes! Be ready, death knight! Do not let him draw you out of the protective bounds of my anti-magic field! Kill him and take his head!"), +(28912,6,0,12,0,100,"koltira deathweaver SAY_BREAKOUT7","Stay in the anti-magic field! Make them come to you!"), +(28912,7,0,12,0,100,"koltira deathweaver SAY_BREAKOUT8","The death of the High Inquisitor of New Avalon will not go unnoticed. You need to get out of here at once! Go, before more of them show up. I'll be fine on my own."), +(28912,8,0,12,0,100,"koltira deathweaver SAY_BREAKOUT9","I'll draw their fire, you make your escape behind me."), +(28912,9,0,14,0,100,"koltira deathweaver SAY_BREAKOUT10","Your High Inquisitor is nothing more than a pile of meat, Crusaders! There are none beyond the grasp of the Scourge!"); + +-- scarlet courier +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609532 AND -1609531; +DELETE FROM `creature_text` WHERE `entry`=29076; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(29076,0,0,12,0,100,"scarlet courier SAY_TREE1","Hrm, what a strange tree. I must investigate."), +(29076,1,0,12,0,100,"scarlet courier SAY_TREE2","What's this!? This isn't a tree at all! Guards! Guards!"); + +-- high inquisitor valroth +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609586 AND -1609581; +DELETE FROM `creature_text` WHERE `entry`=29001; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(29001,0,0,14,0,100,"high inquisitor valroth start","The Crusade will purge your kind from this world!"), +(29001,1,0,14,0,100,"high inquisitor valroth SAY_VALROTH_AGGRO","It seems that I'll need to deal with you myself. The High Inquisitor comes for you, Scourge!"), +(29001,2,0,12,0,100,"high inquisitor valroth SAY_VALROTH_RAND","You have come seeking deliverance? I have come to deliver!"), +(29001,2,1,12,0,100,"high inquisitor valroth SAY_VALROTH_RAND","LIGHT PURGE YOU!"), +(29001,2,2,12,0,100,"high inquisitor valroth SAY_VALROTH_RAND","Coward!"), +(29001,3,0,16,0,100,"high inquisitor valroth SAY_VALROTH_DEATH","High Inquisitor Valroth's remains fall to the ground."); diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp index ceca6330152..d05b6220441 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -28,8 +28,8 @@ EndScriptData */ enum Say { - SAY_AGGRO = -1469000, - SAY_LEASH = -1469001 + SAY_AGGRO = 0, + SAY_LEASH = 1, }; enum Spells @@ -69,7 +69,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); DoZoneInCombat(); } @@ -110,7 +110,7 @@ public: } else KnockBack_Timer -= diff; if (EnterEvadeIfOutOfCombatArea(diff)) - DoScriptText(SAY_LEASH, me); + Talk(SAY_LEASH); DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp index 9beb3bb10fe..8f12ab3f2e8 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp @@ -28,8 +28,8 @@ EndScriptData */ enum Emotes { - EMOTE_FRENZY = -1469002, - EMOTE_SHIMMER = -1469003 + EMOTE_FRENZY = 0, + EMOTE_SHIMMER = 1, }; enum Spells @@ -219,7 +219,7 @@ public: DoCast(me, spell); CurrentVurln_Spell = spell; - DoScriptText(EMOTE_SHIMMER, me); + Talk(EMOTE_SHIMMER); Shimmer_Timer = 45000; } else Shimmer_Timer -= diff; @@ -280,7 +280,7 @@ public: if (Frenzy_Timer <= diff) { DoCast(me, SPELL_FRENZY); - DoScriptText(EMOTE_FRENZY, me); + Talk(EMOTE_FRENZY); Frenzy_Timer = urand(10000, 15000); } else Frenzy_Timer -= diff; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp index e84ccd0e160..b191d2fbb02 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp @@ -28,7 +28,7 @@ EndScriptData */ enum Emotes { - EMOTE_FRENZY = -1469031 + EMOTE_FRENZY = 0, }; enum Spells @@ -93,7 +93,7 @@ public: //Frenzy_Timer if (Frenzy_Timer <= diff) { - DoScriptText(EMOTE_FRENZY, me); + Talk(EMOTE_FRENZY); DoCast(me, SPELL_FRENZY); Frenzy_Timer = urand(8000, 10000); } else Frenzy_Timer -= diff; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp index 787fbe5312b..5a3c72054b4 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp @@ -28,22 +28,20 @@ EndScriptData */ enum Say { - SAY_AGGRO = -1469007, - SAY_XHEALTH = -1469008, - SAY_SHADOWFLAME = -1469009, - SAY_RAISE_SKELETONS = -1469010, - SAY_SLAY = -1469011, - SAY_DEATH = -1469012, - - SAY_MAGE = -1469013, - SAY_WARRIOR = -1469014, - SAY_DRUID = -1469015, - SAY_PRIEST = -1469016, - SAY_PALADIN = -1469017, - SAY_SHAMAN = -1469018, - SAY_WARLOCK = -1469019, - SAY_HUNTER = -1469020, - SAY_ROGUE = -1469021 + SAY_RANDOM = 0, + SAY_RAISE_SKELETONS = 1, + SAY_SLAY = 2, + SAY_DEATH = 3, + + SAY_MAGE = 4, + SAY_WARRIOR = 5, + SAY_DRUID = 6, + SAY_PRIEST = 7, + SAY_PALADIN = 8, + SAY_SHAMAN = 9, + SAY_WARLOCK = 10, + SAY_HUNTER = 11, + SAY_ROGUE = 12, }; enum Spells @@ -109,17 +107,17 @@ public: if (rand()%5) return; - DoScriptText(SAY_SLAY, me, Victim); + Talk(SAY_SLAY, Victim->GetGUID()); } void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); } void EnterCombat(Unit* who) { - DoScriptText(RAND(SAY_XHEALTH, SAY_AGGRO, SAY_SHADOWFLAME), me); + Talk(SAY_RANDOM); DoCast(who, SPELL_SHADOWFLAME_INITIAL); DoZoneInCombat(); @@ -184,39 +182,39 @@ public: switch (urand(0, 8)) { case 0: - DoScriptText(SAY_MAGE, me); + Talk(SAY_MAGE); DoCast(me, SPELL_MAGE); break; case 1: - DoScriptText(SAY_WARRIOR, me); + Talk(SAY_WARRIOR); DoCast(me, SPELL_WARRIOR); break; case 2: - DoScriptText(SAY_DRUID, me); + Talk(SAY_DRUID); DoCast(me, SPELL_DRUID); break; case 3: - DoScriptText(SAY_PRIEST, me); + Talk(SAY_PRIEST); DoCast(me, SPELL_PRIEST); break; case 4: - DoScriptText(SAY_PALADIN, me); + Talk(SAY_PALADIN); DoCast(me, SPELL_PALADIN); break; case 5: - DoScriptText(SAY_SHAMAN, me); + Talk(SAY_SHAMAN); DoCast(me, SPELL_SHAMAN); break; case 6: - DoScriptText(SAY_WARLOCK, me); + Talk(SAY_WARLOCK); DoCast(me, SPELL_WARLOCK); break; case 7: - DoScriptText(SAY_HUNTER, me); + Talk(SAY_HUNTER); DoCast(me, SPELL_HUNTER); break; case 8: - DoScriptText(SAY_ROGUE, me); + Talk(SAY_ROGUE); DoCast(me, SPELL_ROGUE); break; } @@ -228,7 +226,7 @@ public: if (!Phase3 && HealthBelowPct(20)) { Phase3 = true; - DoScriptText(SAY_RAISE_SKELETONS, me); + Talk(SAY_RAISE_SKELETONS); } DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp index 04eca3586cc..577516383b2 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp @@ -30,10 +30,10 @@ EndScriptData */ enum Say { - SAY_EGGS_BROKEN1 = -1469022, - SAY_EGGS_BROKEN2 = -1469023, - SAY_EGGS_BROKEN3 = -1469024, - SAY_DEATH = -1469025 + SAY_EGGS_BROKEN1 = 0, + SAY_EGGS_BROKEN2 = 1, + SAY_EGGS_BROKEN3 = 2, + SAY_DEATH = 3, }; enum Spells diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp index 359f218cd5c..6ffe30d2c50 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp @@ -30,11 +30,11 @@ EndScriptData */ enum Says { - SAY_LINE1 = -1469026, - SAY_LINE2 = -1469027, - SAY_LINE3 = -1469028, - SAY_HALFLIFE = -1469029, - SAY_KILLTARGET = -1469030 + SAY_LINE1 = 0, + SAY_LINE2 = 1, + SAY_LINE3 = 2, + SAY_HALFLIFE = 3, + SAY_KILLTARGET = 4 }; #define GOSSIP_ITEM "Start Event " @@ -130,7 +130,7 @@ public: PlayerGUID = target->GetGUID(); //10 seconds - DoScriptText(SAY_LINE1, me); + Talk(SAY_LINE1); SpeechTimer = 10000; SpeechNum = 0; @@ -144,7 +144,7 @@ public: if (rand()%5) return; - DoScriptText(SAY_KILLTARGET, me, victim); + Talk(SAY_KILLTARGET, victim->GetGUID()); } void EnterCombat(Unit* /*who*/) @@ -167,13 +167,13 @@ public: { case 0: //16 seconds till next line - DoScriptText(SAY_LINE2, me); + Talk(SAY_LINE2); SpeechTimer = 16000; ++SpeechNum; break; case 1: //This one is actually 16 seconds but we only go to 10 seconds because he starts attacking after he says "I must fight this!" - DoScriptText(SAY_LINE3, me); + Talk(SAY_LINE3); SpeechTimer = 10000; ++SpeechNum; break; @@ -198,7 +198,7 @@ public: // Yell if hp lower than 15% if (HealthBelowPct(15) && !HasYelled) { - DoScriptText(SAY_HALFLIFE, me); + Talk(SAY_HALFLIFE); HasYelled = true; } diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp index f107fd7c5ec..712f7fbe8c5 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp @@ -35,7 +35,7 @@ enum eSpels EQUIP_SWORD = 5191, EQUIP_MACE = 7230, - SAY_AGGRO = -1036001 + SAY_AGGRO = 0, }; class boss_mr_smite : public CreatureScript @@ -82,7 +82,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); } bool bCheckChances() diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 7a6e9aab31d..cedcafc9f98 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -25,28 +25,27 @@ // texts signed for creature 28939 but used for 28939, 28940, 28610 enum win_friends { - SAY_PERSUADE1 = -1609501, - SAY_PERSUADE2 = -1609502, - SAY_PERSUADE3 = -1609503, - SAY_PERSUADE4 = -1609504, - SAY_PERSUADE5 = -1609505, - SAY_PERSUADE6 = -1609506, - SAY_PERSUADE7 = -1609507, - SAY_CRUSADER1 = -1609508, - SAY_CRUSADER2 = -1609509, - SAY_CRUSADER3 = -1609510, - SAY_CRUSADER4 = -1609511, - SAY_CRUSADER5 = -1609512, - SAY_CRUSADER6 = -1609513, - SAY_PERSUADED1 = -1609514, - SAY_PERSUADED2 = -1609515, - SAY_PERSUADED3 = -1609516, - SAY_PERSUADED4 = -1609517, - SAY_PERSUADED5 = -1609518, - SAY_PERSUADED6 = -1609519, - SPELL_PERSUASIVE_STRIKE = 52781 + SAY_CRUSADER = 1, + SAY_PERSUADED1 = 2, + SAY_PERSUADED2 = 3, + SAY_PERSUADED3 = 4, + SAY_PERSUADED4 = 5, + SAY_PERSUADED6 = 6, + SPELL_PERSUASIVE_STRIKE = 52781, + SPELL_THREAT_PULSE = 58111, + QUEST_HOW_TO_WIN_FRIENDS = 12720, }; +#define SAY_PERSUADED5 "LIES! The pain you are about to endure will be talked about for years to come!" + +#define SAY_PERSUADE1 "I'll tear the secrets from your soul! Tell me about the \"Crimson Dawn\" and your life may be spared!" +#define SAY_PERSUADE2 "Tell me what you know about \"Crimson Dawn\" or the beatings will continue!" +#define SAY_PERSUADE3 "I'm through being courteous with your kind, human! What is the \"Crimson Dawn\"?" +#define SAY_PERSUADE4 "Is your life worth so little? Just tell me what I need to know about \"Crimson Dawn\" and I'll end your suffering quickly." +#define SAY_PERSUADE5 "I can keep this up for a very long time, Scarlet dog! Tell me about the \"Crimson Dawn\"!" +#define SAY_PERSUADE6 "What is the \"Crimson Dawn\"?" +#define SAY_PERSUADE7 "\"Crimson Dawn\"! What is it! Speak!" + class npc_crusade_persuaded : public CreatureScript { public: @@ -61,97 +60,119 @@ public: { npc_crusade_persuadedAI(Creature* creature) : ScriptedAI(creature) {} - uint32 uiSpeech_timer; - uint32 uiSpeech_counter; - uint64 uiPlayerGUID; + uint32 speechTimer; + uint32 speechCounter; + uint64 playerGUID; void Reset() { - uiSpeech_timer = 0; - uiSpeech_counter = 0; - uiPlayerGUID = 0; + speechTimer = 0; + speechCounter = 0; + playerGUID = 0; me->SetReactState(REACT_AGGRESSIVE); me->RestoreFaction(); } void SpellHit(Unit* caster, const SpellInfo* spell) { - if (spell->Id == SPELL_PERSUASIVE_STRIKE && caster->GetTypeId() == TYPEID_PLAYER && me->isAlive() && !uiSpeech_counter) + if (spell->Id == SPELL_PERSUASIVE_STRIKE && caster->GetTypeId() == TYPEID_PLAYER && me->isAlive() && !speechCounter) { - if (CAST_PLR(caster)->GetQuestStatus(12720) == QUEST_STATUS_INCOMPLETE) + if (Player* player = caster->ToPlayer()) { - uiPlayerGUID = caster->GetGUID(); - uiSpeech_timer = 1000; - uiSpeech_counter = 1; - me->setFaction(caster->getFaction()); - me->CombatStop(true); - me->GetMotionMaster()->MoveIdle(); - me->SetReactState(REACT_PASSIVE); - DoCastAOE(58111, true); - - DoScriptText(RAND(SAY_PERSUADE1, SAY_PERSUADE2, SAY_PERSUADE3, - SAY_PERSUADE4, SAY_PERSUADE5, SAY_PERSUADE6, - SAY_PERSUADE7), caster); - - DoScriptText(RAND(SAY_CRUSADER1, SAY_CRUSADER2, SAY_CRUSADER3, - SAY_CRUSADER4, SAY_CRUSADER5, SAY_CRUSADER6), me); + if (player->GetQuestStatus(QUEST_HOW_TO_WIN_FRIENDS) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + speechTimer = 1000; + speechCounter = 1; + me->setFaction(player->getFaction()); + me->CombatStop(true); + me->GetMotionMaster()->MoveIdle(); + me->SetReactState(REACT_PASSIVE); + DoCastAOE(SPELL_THREAT_PULSE, true); + + switch (urand(1, 7)) + { + case 1: + player->Say(SAY_PERSUADE1, LANG_UNIVERSAL); + break; + case 2: + player->Say(SAY_PERSUADE2, LANG_UNIVERSAL); + break; + case 3: + player->Say(SAY_PERSUADE3, LANG_UNIVERSAL); + break; + case 4: + player->Say(SAY_PERSUADE4, LANG_UNIVERSAL); + break; + case 5: + player->Say(SAY_PERSUADE5, LANG_UNIVERSAL); + break; + case 6: + player->Say(SAY_PERSUADE6, LANG_UNIVERSAL); + break; + case 7: + player->Say(SAY_PERSUADE7, LANG_UNIVERSAL); + break; + } + Talk(SAY_CRUSADER); + } } } } void UpdateAI(const uint32 diff) { - if (uiSpeech_counter) + if (speechCounter) { - if (uiSpeech_timer <= diff) + if (speechTimer <= diff) { - Player* player = Unit::GetPlayer(*me, uiPlayerGUID); + Player* player = Unit::GetPlayer(*me, playerGUID); if (!player) { EnterEvadeMode(); return; } - switch (uiSpeech_counter) + switch (speechCounter) { case 1: - DoScriptText(SAY_PERSUADED1, me); - uiSpeech_timer = 8000; + Talk(SAY_PERSUADED1); + speechTimer = 8000; break; case 2: - DoScriptText(SAY_PERSUADED2, me); - uiSpeech_timer = 8000; + Talk(SAY_PERSUADED2); + speechTimer = 8000; break; case 3: - DoScriptText(SAY_PERSUADED3, me); - uiSpeech_timer = 8000; + Talk(SAY_PERSUADED3); + speechTimer = 8000; break; case 4: - DoScriptText(SAY_PERSUADED4, me); - uiSpeech_timer = 8000; + Talk(SAY_PERSUADED4); + speechTimer = 8000; break; case 5: - DoScriptText(SAY_PERSUADED5, player); - uiSpeech_timer = 8000; + player->Say(SAY_PERSUADED5, LANG_UNIVERSAL); + speechTimer = 8000; break; case 6: - DoScriptText(SAY_PERSUADED6, me); + Talk(SAY_PERSUADED6); player->Kill(me); - //me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - //me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - uiSpeech_counter = 0; - player->GroupEventHappens(12720, me); + speechCounter = 0; + player->GroupEventHappens(QUEST_HOW_TO_WIN_FRIENDS, me); return; } - ++uiSpeech_counter; - DoCastAOE(58111, true); - } else uiSpeech_timer -= diff; + ++speechCounter; + DoCastAOE(SPELL_THREAT_PULSE, true); + + } else + speechTimer -= diff; return; } @@ -171,16 +192,16 @@ public: enum eKoltira { - SAY_BREAKOUT1 = -1609561, - SAY_BREAKOUT2 = -1609562, - SAY_BREAKOUT3 = -1609563, - SAY_BREAKOUT4 = -1609564, - SAY_BREAKOUT5 = -1609565, - SAY_BREAKOUT6 = -1609566, - SAY_BREAKOUT7 = -1609567, - SAY_BREAKOUT8 = -1609568, - SAY_BREAKOUT9 = -1609569, - SAY_BREAKOUT10 = -1609570, + SAY_BREAKOUT1 = 0, + SAY_BREAKOUT2 = 1, + SAY_BREAKOUT3 = 2, + SAY_BREAKOUT4 = 3, + SAY_BREAKOUT5 = 4, + SAY_BREAKOUT6 = 5, + SAY_BREAKOUT7 = 6, + SAY_BREAKOUT8 = 7, + SAY_BREAKOUT9 = 8, + SAY_BREAKOUT10 = 9, SPELL_KOLTIRA_TRANSFORM = 52899, SPELL_ANTI_MAGIC_ZONE = 52894, @@ -247,7 +268,7 @@ public: switch (waypointId) { case 0: - DoScriptText(SAY_BREAKOUT1, me); + Talk(SAY_BREAKOUT1); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); break; case 1: @@ -262,7 +283,7 @@ public: case 3: SetEscortPaused(true); me->SetStandState(UNIT_STAND_STATE_KNEEL); - DoScriptText(SAY_BREAKOUT2, me); + Talk(SAY_BREAKOUT2); DoCast(me, SPELL_ANTI_MAGIC_ZONE); // cast again that makes bubble up break; case 4: @@ -306,22 +327,22 @@ public: switch (m_uiWave) { case 0: - DoScriptText(SAY_BREAKOUT3, me); + Talk(SAY_BREAKOUT3); SummonAcolyte(3); m_uiWave_Timer = 20000; break; case 1: - DoScriptText(SAY_BREAKOUT4, me); + Talk(SAY_BREAKOUT4); SummonAcolyte(3); m_uiWave_Timer = 20000; break; case 2: - DoScriptText(SAY_BREAKOUT5, me); + Talk(SAY_BREAKOUT5); SummonAcolyte(4); m_uiWave_Timer = 20000; break; case 3: - DoScriptText(SAY_BREAKOUT6, me); + Talk(SAY_BREAKOUT6); me->SummonCreature(NPC_HIGH_INQUISITOR_VALROTH, 1642.329f, -6045.818f, 127.583f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000); m_uiWave_Timer = 1000; break; @@ -331,7 +352,7 @@ public: if (!temp || !temp->isAlive()) { - DoScriptText(SAY_BREAKOUT8, me); + Talk(SAY_BREAKOUT8); m_uiWave_Timer = 5000; } else @@ -342,13 +363,13 @@ public: break; } case 5: - DoScriptText(SAY_BREAKOUT9, me); + Talk(SAY_BREAKOUT9); me->RemoveAurasDueToSpell(SPELL_ANTI_MAGIC_ZONE); // i do not know why the armor will also be removed m_uiWave_Timer = 2500; break; case 6: - DoScriptText(SAY_BREAKOUT10, me); + Talk(SAY_BREAKOUT10); SetEscortPaused(false); break; } @@ -366,8 +387,8 @@ public: //Scarlet courier enum ScarletCourierEnum { - SAY_TREE1 = -1609531, - SAY_TREE2 = -1609532, + SAY_TREE1 = 0, + SAY_TREE2 = 1, SPELL_SHOOT = 52818, GO_INCONSPICUOUS_TREE = 191144, NPC_SCARLET_COURIER = 29076 @@ -399,7 +420,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_TREE2, me); + Talk(SAY_TREE2); me->Dismount(); uiStage = 0; } @@ -425,7 +446,7 @@ public: me->SetWalk(true); if (GameObject* tree = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f)) { - DoScriptText(SAY_TREE1, me); + Talk(SAY_TREE1); float x, y, z; tree->GetContactPoint(me, x, y, z); me->GetMotionMaster()->MovePoint(1, x, y, z); @@ -455,12 +476,10 @@ public: enum valroth { - SAY_VALROTH1 = -1609581, - SAY_VALROTH2 = -1609582, - SAY_VALROTH3 = -1609583, - SAY_VALROTH4 = -1609584, - SAY_VALROTH5 = -1609585, - SAY_VALROTH6 = -1609586, + //SAY_VALROTH1 = 0, Unused + SAY_VALROTH_AGGRO = 1, + SAY_VALROTH_RAND = 2, + SAY_VALROTH_DEATH = 3, SPELL_RENEW = 38210, SPELL_INQUISITOR_PENANCE = 52922, SPELL_VALROTH_SMITE = 52926, @@ -494,7 +513,7 @@ public: void EnterCombat(Unit* who) { - DoScriptText(SAY_VALROTH2, me); + Talk(SAY_VALROTH_AGGRO); DoCast(who, SPELL_VALROTH_SMITE); } @@ -527,12 +546,12 @@ public: void Shout() { if (rand()%100 < 15) - DoScriptText(RAND(SAY_VALROTH3, SAY_VALROTH4, SAY_VALROTH5), me); + Talk(SAY_VALROTH_RAND); } void JustDied(Unit* killer) { - DoScriptText(SAY_VALROTH6, me); + Talk(SAY_VALROTH_DEATH); killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp index 5151268b70d..08aa86d6a06 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp @@ -29,6 +29,7 @@ EndScriptData */ enum eEnums { + EMOTE_FRENZY_KILL = 0, SPELL_REND = 16509, SPELL_BACKHAND = 18103, SPELL_FRENZY = 8269 @@ -103,7 +104,7 @@ public: if (m_uiFrenzy_Timer <= uiDiff) { DoCast(me, SPELL_FRENZY); - DoScriptText(EMOTE_GENERIC_FRENZY_KILL, me); + Talk(EMOTE_FRENZY_KILL); m_uiFrenzy_Timer = 120000; } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp index 3c7771612e2..dd3e591bf61 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp @@ -28,6 +28,7 @@ EndScriptData */ enum eEnums { + EMOTE_FRENZY_KILL = 0, SPELL_FLAMESTRIKE = 18399, SPELL_BLAST_WAVE = 16046, SPELL_FIRESHIELD = 19626, @@ -88,7 +89,7 @@ public: if (m_uiFrenzy_Timer <= uiDiff) { DoCast(me, SPELL_FRENZY); - DoScriptText(EMOTE_GENERIC_FRENZY_KILL, me); + Talk(EMOTE_FRENZY_KILL); m_uiFrenzy_Timer = 24000; } diff --git a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp index 4997fc49da9..099bc0770b7 100644 --- a/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp +++ b/src/server/scripts/EasternKingdoms/swamp_of_sorrows.cpp @@ -31,13 +31,12 @@ enum Galen 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 + 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 @@ -52,7 +51,7 @@ public: { 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); + creature->AI()->Talk(SAY_QUEST_ACCEPTED); } return true; } @@ -81,7 +80,7 @@ public: void EnterCombat(Unit* who) { if (HasEscortState(STATE_ESCORT_ESCORTING)) - DoScriptText(RAND(SAY_ATTACKED_1, SAY_ATTACKED_2), me, who); + Talk(SAY_ATTACKED, who->GetGUID()); } void WaypointStart(uint32 uiPointId) @@ -103,7 +102,7 @@ public: break; } case 21: - DoScriptText(EMOTE_DISAPPEAR, me); + Talk(EMOTE_DISAPPEAR); break; } } @@ -120,8 +119,8 @@ public: if (Player* player = GetPlayerForEscort()) { me->SetFacingToObject(player); - DoScriptText(SAY_QUEST_COMPLETE, me, player); - DoScriptText(EMOTE_WHISPER, me, player); + Talk(SAY_QUEST_COMPLETE, player->GetGUID()); + Talk(EMOTE_WHISPER, player->GetGUID()); player->GroupEventHappens(QUEST_GALENS_ESCAPE, me); } SetRun(true); @@ -139,7 +138,7 @@ public: if (m_uiPeriodicSay < uiDiff) { if (!HasEscortState(STATE_ESCORT_ESCORTING)) - DoScriptText(SAY_PERIODIC, me); + Talk(SAY_PERIODIC); m_uiPeriodicSay = 15000; } else -- cgit v1.2.3 From a66adcf6e113cc2f98d0acf799929ccac350262b Mon Sep 17 00:00:00 2001 From: Gacko Date: Thu, 22 Nov 2012 20:06:56 +0100 Subject: Core/DB: Chapter 2 in creature text --- .../world/2012_11_21_00_world_creature_text.sql | 548 +++++++++++++++++++++ .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 326 ++++++------ 2 files changed, 711 insertions(+), 163 deletions(-) (limited to 'src') diff --git a/sql/updates/world/2012_11_21_00_world_creature_text.sql b/sql/updates/world/2012_11_21_00_world_creature_text.sql index 1b199b1db3e..311336b54bd 100644 --- a/sql/updates/world/2012_11_21_00_world_creature_text.sql +++ b/sql/updates/world/2012_11_21_00_world_creature_text.sql @@ -163,3 +163,551 @@ INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`, (29001,2,1,12,0,100,"high inquisitor valroth SAY_VALROTH_RAND","LIGHT PURGE YOU!"), (29001,2,2,12,0,100,"high inquisitor valroth SAY_VALROTH_RAND","Coward!"), (29001,3,0,16,0,100,"high inquisitor valroth SAY_VALROTH_DEATH","High Inquisitor Valroth's remains fall to the ground."); + +-- A special surprise +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609078 AND -1609025; +DELETE FROM `creature_text` WHERE `entry` IN (29032,29061,29065,29067,29068,29070,29074,29072,29073,29071); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +-- Malar Bravehorn +(29032,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29032,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29032,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29032,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29032,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29032,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29032,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29032,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29032,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29032,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29032,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29032,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29032,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29032,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29032,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29032,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29032,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29032,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29032,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29032,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29032,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29032,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29032,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29032,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29032,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29032,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29032,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29032,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29032,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29032,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29032,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29032,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29032,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29032,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29032,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29032,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29032,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29032,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29032,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29032,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29032,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), + +(29032,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29032,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29032,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29032,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29032,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29032,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29032,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29032,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29032,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29032,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29032,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29032,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Ellen Stanbridge +(29061,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29061,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29061,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29061,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29061,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29061,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29061,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29061,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29061,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29061,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29061,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29061,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29061,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29061,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29061,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29061,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29061,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29061,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29061,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29061,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29061,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29061,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29061,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29061,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29061,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29061,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29061,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29061,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29061,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29061,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29061,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29061,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29061,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29061,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29061,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29061,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29061,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29061,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29061,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29061,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29061,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29061,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29061,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29061,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29061,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29061,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29061,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29061,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29061,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29061,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29061,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29061,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29061,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Yazmina Oakenthorn +(29065,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29065,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29065,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29065,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29065,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29065,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29065,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29065,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29065,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29065,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29065,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29065,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29065,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29065,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29065,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29065,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29065,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29065,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29065,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29065,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29065,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29065,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29065,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29065,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29065,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29065,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29065,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29065,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29065,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29065,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29065,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29065,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29065,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29065,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29065,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29065,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29065,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29065,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29065,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29065,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29065,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29065,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29065,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29065,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29065,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29065,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29065,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29065,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29065,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29065,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29065,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29065,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29065,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Donovan Pulfrost +(29067,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29067,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29067,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29067,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29067,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29067,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29067,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29067,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29067,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29067,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29067,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29067,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29067,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29067,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29067,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29067,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29067,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29067,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29067,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29067,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29067,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29067,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29067,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29067,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29067,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29067,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29067,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29067,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29067,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29067,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29067,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29067,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29067,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29067,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29067,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29067,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29067,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29067,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29067,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29067,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29067,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29067,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29067,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29067,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29067,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29067,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29067,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29067,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29067,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29067,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29067,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29067,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29067,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Goby Blastenheimer +(29068,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29068,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29068,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29068,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29068,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29068,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29068,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29068,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29068,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29068,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29068,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29068,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29068,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29068,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29068,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29068,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29068,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29068,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29068,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29068,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29068,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29068,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29068,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29068,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29068,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29068,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29068,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29068,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29068,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29068,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29068,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29068,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29068,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29068,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29068,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29068,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29068,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29068,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29068,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29068,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29068,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29068,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29068,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29068,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29068,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29068,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29068,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29068,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29068,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29068,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29068,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29068,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29068,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Valok the Righteous +(29070,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29070,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29070,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29070,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29070,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29070,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29070,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29070,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29070,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29070,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29070,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29070,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29070,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29070,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29070,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29070,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29070,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29070,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29070,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29070,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29070,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29070,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29070,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29070,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29070,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29070,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29070,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29070,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29070,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29070,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29070,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29070,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29070,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29070,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29070,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29070,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29070,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29070,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29070,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29070,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29070,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29070,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29070,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29070,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29070,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29070,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29070,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29070,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29070,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29070,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29070,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29070,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29070,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Lady Eonys +(29074,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29074,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29074,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29074,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29074,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29074,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29074,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29074,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29074,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29074,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29074,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29074,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29074,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29074,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29074,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29074,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29074,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29074,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29074,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29074,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29074,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29074,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29074,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29074,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29074,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29074,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29074,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29074,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29074,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29074,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29074,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29074,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29074,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29074,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29074,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29074,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29074,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29074,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29074,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29074,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29074,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29074,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29074,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29074,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29074,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29074,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29074,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29074,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29074,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29074,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29074,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29074,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29074,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Kug Ironjaw +(29072,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29072,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29072,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29072,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29072,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29072,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29072,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29072,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29072,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29072,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29072,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29072,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29072,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29072,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29072,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29072,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29072,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29072,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29072,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29072,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29072,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29072,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29072,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29072,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29072,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29072,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29072,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29072,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29072,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29072,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29072,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29072,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29072,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29072,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29072,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29072,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29072,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29072,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29072,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29072,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29072,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29072,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29072,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29072,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29072,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29072,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29072,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29072,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29072,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29072,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29072,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29072,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29072,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Iggy Darktusk +(29073,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29073,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29073,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29073,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29073,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29073,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29073,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29073,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29073,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29073,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29073,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29073,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29073,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29073,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29073,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29073,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29073,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29073,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29073,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29073,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29073,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29073,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29073,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29073,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29073,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29073,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29073,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29073,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29073,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29073,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29073,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29073,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29073,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29073,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29073,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29073,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29073,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29073,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29073,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29073,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29073,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29073,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29073,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29073,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29073,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29073,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29073,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29073,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29073,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29073,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29073,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29073,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29073,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Antoine Brack +(29071,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), +(29071,1,0,12,0,100,"special_surprise SAY_EXEC_START_2","Come to finish the job, have ye?"), +(29071,2,0,12,0,100,"special_surprise SAY_EXEC_START_3","Come ta finish da job, mon?"), +(29071,3,0,12,0,100,"special_surprise SAY_EXEC_PROG_1","You'll look me in the eyes when..."), +(29071,4,0,12,0,100,"special_surprise SAY_EXEC_PROG_2","Well this son o' Ironforge would like..."), +(29071,5,0,12,0,100,"special_surprise SAY_EXEC_PROG_3","Ironic, isn't it? To be killed..."), +(29071,6,0,12,0,100,"special_surprise SAY_EXEC_PROG_4","If you'd allow me just one..."), +(29071,7,0,12,0,100,"special_surprise SAY_EXEC_PROG_5","I'd like to stand for..."), +(29071,8,0,12,0,100,"special_surprise SAY_EXEC_PROG_6","I want to die like an orc..."), +(29071,9,0,12,0,100,"special_surprise SAY_EXEC_PROG_7","Dis troll gonna stand for da..."), +(29071,10,0,12,0,100,"special_surprise SAY_EXEC_NAME_1","$N?"), +(29071,11,0,12,0,100,"special_surprise SAY_EXEC_NAME_2","$N? Mon?"), +(29071,12,0,12,0,100,"special_surprise SAY_EXEC_RECOG_1","$N, I'd recognize that face anywhere... What... What have they done to you, $N?"), +(29071,13,0,12,0,100,"special_surprise SAY_EXEC_RECOG_2","$N, I'd recognize those face tentacles anywhere... What... What have they done to you, $N?"), +(29071,14,0,12,0,100,"special_surprise SAY_EXEC_RECOG_3","$N, I'd recognize that face anywhere... What... What have they done to ye, $Glad:lass;?"), +(29071,15,0,12,0,100,"special_surprise SAY_EXEC_RECOG_4","$N, I'd recognize that decay anywhere... What... What have they done to you, $N?"), +(29071,16,0,12,0,100,"special_surprise SAY_EXEC_RECOG_5","$N, I'd recognize those horns anywhere... What have they done to you, $N?"), +(29071,17,0,12,0,100,"special_surprise SAY_EXEC_RECOG_6","$N, I'd recognize dem tusks anywhere... What... What have dey done ta you, mon?"), +(29071,18,0,12,0,100,"special_surprise SAY_EXEC_NOREM_1","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!"), +(29071,19,0,12,0,100,"special_surprise SAY_EXEC_NOREM_2","Ye don't remember me, do ye? Blasted Scourge... They've tried to drain ye o' everything that made ye a righteous force o' reckoning. Every last ounce o' good... Everything that made you a $Gson:daughter; of Ironforge!"), +(29071,20,0,12,0,100,"special_surprise SAY_EXEC_NOREM_3","You don't remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady."), +(29071,21,0,12,0,100,"special_surprise SAY_EXEC_NOREM_4","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!"), +(29071,22,0,12,0,100,"special_surprise SAY_EXEC_NOREM_5","You don't remember me, do you? Blasted Scourge...They've tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!"), +(29071,23,0,12,0,100,"special_surprise SAY_EXEC_NOREM_6","You don't remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep's milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?"), +(29071,24,0,12,0,100,"special_surprise SAY_EXEC_NOREM_7","You don't recognize me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!"), +(29071,25,0,12,0,100,"special_surprise SAY_EXEC_NOREM_8","You don't remember me, do you? Blasted Scourge... They've tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!"), +(29071,26,0,12,0,100,"special_surprise SAY_EXEC_NOREM_9","You don't remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin' dat made ya a troll hero, mon!"), +(29071,27,0,12,0,100,"special_surprise SAY_EXEC_THINK_1","A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!"), +(29071,28,0,12,0,100,"special_surprise SAY_EXEC_THINK_2","You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn't you!"), +(29071,29,0,12,0,100,"special_surprise SAY_EXEC_THINK_3","Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin'dorei once! This isn't you."), +(29071,30,0,12,0,100,"special_surprise SAY_EXEC_THINK_4","Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn't you."), +(29071,31,0,12,0,100,"special_surprise SAY_EXEC_THINK_5","Think, $N. Think back. Try and remember the snow capped mountains o' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o' life, $N! Ye were a champion o' the dwarves once! This isn't ye!"), +(29071,32,0,12,0,100,"special_surprise SAY_EXEC_THINK_6","Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn't you."), +(29071,33,0,12,0,100,"special_surprise SAY_EXEC_THINK_7","Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn't you."), +(29071,34,0,12,0,100,"special_surprise SAY_EXEC_THINK_8","Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn't you. You were a champion of the Horde once!"), +(29071,35,0,12,0,100,"special_surprise SAY_EXEC_THINK_9","Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn't you."), +(29071,36,0,12,0,100,"special_surprise SAY_EXEC_THINK_10","TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!"), +(29071,37,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_1","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29071,38,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_2","Listen to me, $N Ye must fight against the Lich King's control. He's a monster that wants to see this world - our world - in ruin. Don't let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!"), +(29071,39,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_3","Listen to me, $N. You must fight against the Lich King's control. He is a monster that wants to see this world - our world - in ruin. Don't let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!"), +(29071,40,0,12,0,100,"special_surprise SAY_EXEC_LISTEN_4","Listen ta me, $Gbrudda:sista;. You must fight against da Lich King's control. He be a monstar dat want ta see dis world - our world - be ruined. Don't let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!"), +(29071,42,0,12,0,100,"special_surprise SAY_EXEC_TIME_1","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Silvermoon. This world is worth saving!"), +(29071,43,0,12,0,100,"special_surprise SAY_EXEC_TIME_2","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Argus. Don't let that happen to this world."), +(29071,44,0,12,0,100,"special_surprise SAY_EXEC_TIME_3","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!"), +(29071,45,0,12,0,100,"special_surprise SAY_EXEC_TIME_4","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Tirisfal! This world is worth saving!"), +(29071,46,0,12,0,100,"special_surprise SAY_EXEC_TIME_5","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Gnomeregan! This world is worth saving."), +(29071,47,0,12,0,100,"special_surprise SAY_EXEC_TIME_6","There... There's no more time for me. I'm done for. FInish me off, $N. Do it or they'll kill us both. $N...Remember Elwynn. This world is worth saving."), +(29071,48,0,12,0,100,"special_surprise SAY_EXEC_TIME_7","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving."), +(29071,49,0,12,0,100,"special_surprise SAY_EXEC_TIME_8","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... For the Horde! This world is worth saving."), +(29071,50,0,12,0,100,"special_surprise SAY_EXEC_TIME_9","There... There's no more time for me. I'm done for. Finish me off, $N. Do it or they'll kill us both. $N... Remember Mulgore. This world is worth saving."), +(29071,51,0,12,0,100,"special_surprise SAY_EXEC_TIME_10","Der... Der's no more time for me. I be done for. Finish me off $N. Do it or they'll kill us both. $N... Remember Sen'jin Village, mon! Dis world be worth saving!"), +(29071,52,0,12,0,100,"special_surprise SAY_EXEC_WAITING","Do it, $N! Put me out of my misery!"), +(29071,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), +-- Plaguefist +(29053,41,0,14,0,100,"special_surprise SAY_PLAGUEFIST","What's going on in there? What's taking so long, $N?"); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index cedcafc9f98..78fc8d127b2 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -564,60 +564,60 @@ public: //used by 29032, 29061, 29065, 29067, 29068, 29070, 29074, 29072, 29073, 29071 but signed for 29032 enum SpecialSurprise { - SAY_EXEC_START_1 = -1609025, // speech for all - SAY_EXEC_START_2 = -1609026, - SAY_EXEC_START_3 = -1609027, - SAY_EXEC_PROG_1 = -1609028, - SAY_EXEC_PROG_2 = -1609029, - SAY_EXEC_PROG_3 = -1609030, - SAY_EXEC_PROG_4 = -1609031, - SAY_EXEC_PROG_5 = -1609032, - SAY_EXEC_PROG_6 = -1609033, - SAY_EXEC_PROG_7 = -1609034, - SAY_EXEC_NAME_1 = -1609035, - SAY_EXEC_NAME_2 = -1609036, - SAY_EXEC_RECOG_1 = -1609037, - SAY_EXEC_RECOG_2 = -1609038, - SAY_EXEC_RECOG_3 = -1609039, - SAY_EXEC_RECOG_4 = -1609040, - SAY_EXEC_RECOG_5 = -1609041, - SAY_EXEC_RECOG_6 = -1609042, - SAY_EXEC_NOREM_1 = -1609043, - SAY_EXEC_NOREM_2 = -1609044, - SAY_EXEC_NOREM_3 = -1609045, - SAY_EXEC_NOREM_4 = -1609046, - SAY_EXEC_NOREM_5 = -1609047, - SAY_EXEC_NOREM_6 = -1609048, - SAY_EXEC_NOREM_7 = -1609049, - SAY_EXEC_NOREM_8 = -1609050, - SAY_EXEC_NOREM_9 = -1609051, - SAY_EXEC_THINK_1 = -1609052, - SAY_EXEC_THINK_2 = -1609053, - SAY_EXEC_THINK_3 = -1609054, - SAY_EXEC_THINK_4 = -1609055, - SAY_EXEC_THINK_5 = -1609056, - SAY_EXEC_THINK_6 = -1609057, - SAY_EXEC_THINK_7 = -1609058, - SAY_EXEC_THINK_8 = -1609059, - SAY_EXEC_THINK_9 = -1609060, - SAY_EXEC_THINK_10 = -1609061, - SAY_EXEC_LISTEN_1 = -1609062, - SAY_EXEC_LISTEN_2 = -1609063, - SAY_EXEC_LISTEN_3 = -1609064, - SAY_EXEC_LISTEN_4 = -1609065, - SAY_PLAGUEFIST = -1609066, - SAY_EXEC_TIME_1 = -1609067, - SAY_EXEC_TIME_2 = -1609068, - SAY_EXEC_TIME_3 = -1609069, - SAY_EXEC_TIME_4 = -1609070, - SAY_EXEC_TIME_5 = -1609071, - SAY_EXEC_TIME_6 = -1609072, - SAY_EXEC_TIME_7 = -1609073, - SAY_EXEC_TIME_8 = -1609074, - SAY_EXEC_TIME_9 = -1609075, - SAY_EXEC_TIME_10 = -1609076, - SAY_EXEC_WAITING = -1609077, - EMOTE_DIES = -1609078, + SAY_EXEC_START_1 = 0, // speech for all + SAY_EXEC_START_2 = 1, + SAY_EXEC_START_3 = 2, + SAY_EXEC_PROG_1 = 3, + SAY_EXEC_PROG_2 = 4, + SAY_EXEC_PROG_3 = 5, + SAY_EXEC_PROG_4 = 6, + SAY_EXEC_PROG_5 = 7, + SAY_EXEC_PROG_6 = 8, + SAY_EXEC_PROG_7 = 9, + SAY_EXEC_NAME_1 = 10, + SAY_EXEC_NAME_2 = 11, + SAY_EXEC_RECOG_1 = 12, + SAY_EXEC_RECOG_2 = 13, + SAY_EXEC_RECOG_3 = 14, + SAY_EXEC_RECOG_4 = 15, + SAY_EXEC_RECOG_5 = 16, + SAY_EXEC_RECOG_6 = 17, + SAY_EXEC_NOREM_1 = 18, + SAY_EXEC_NOREM_2 = 19, + SAY_EXEC_NOREM_3 = 20, + SAY_EXEC_NOREM_4 = 21, + SAY_EXEC_NOREM_5 = 22, + SAY_EXEC_NOREM_6 = 23, + SAY_EXEC_NOREM_7 = 24, + SAY_EXEC_NOREM_8 = 25, + SAY_EXEC_NOREM_9 = 26, + SAY_EXEC_THINK_1 = 27, + SAY_EXEC_THINK_2 = 28, + SAY_EXEC_THINK_3 = 29, + SAY_EXEC_THINK_4 = 30, + SAY_EXEC_THINK_5 = 31, + SAY_EXEC_THINK_6 = 32, + SAY_EXEC_THINK_7 = 33, + SAY_EXEC_THINK_8 = 34, + SAY_EXEC_THINK_9 = 35, + SAY_EXEC_THINK_10 = 36, + SAY_EXEC_LISTEN_1 = 37, + SAY_EXEC_LISTEN_2 = 38, + SAY_EXEC_LISTEN_3 = 39, + SAY_EXEC_LISTEN_4 = 40, + SAY_PLAGUEFIST = 41, + SAY_EXEC_TIME_1 = 42, + SAY_EXEC_TIME_2 = 43, + SAY_EXEC_TIME_3 = 44, + SAY_EXEC_TIME_4 = 45, + SAY_EXEC_TIME_5 = 46, + SAY_EXEC_TIME_6 = 47, + SAY_EXEC_TIME_7 = 48, + SAY_EXEC_TIME_8 = 49, + SAY_EXEC_TIME_9 = 50, + SAY_EXEC_TIME_10 = 51, + SAY_EXEC_WAITING = 52, + EMOTE_DIES = 53, NPC_PLAGUEFIST = 29053 }; @@ -728,28 +728,28 @@ public: case RACE_HUMAN: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_5, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_1, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_5, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_7, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_5, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_1, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_5, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_7, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_6, me, player); + Talk(SAY_EXEC_TIME_6, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -758,28 +758,28 @@ public: case RACE_ORC: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_6, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_1, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_7, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_8, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_6, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_1, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_7, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_8, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_8, me, player); + Talk(SAY_EXEC_TIME_8, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -788,28 +788,28 @@ public: case RACE_DWARF: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_2, me, player); break; + case 0: Talk(SAY_EXEC_START_2, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_2, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_3, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_2, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_5, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_2, me, player); break; + case 2: Talk(SAY_EXEC_PROG_2, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_3, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_2, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_5, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_2, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_3, me, player); + Talk(SAY_EXEC_TIME_3, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -818,28 +818,28 @@ public: case RACE_NIGHTELF: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_5, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_1, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_6, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_2, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_5, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_1, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_6, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_2, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_7, me, player); + Talk(SAY_EXEC_TIME_7, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -848,28 +848,28 @@ public: case RACE_UNDEAD_PLAYER: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_3, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_4, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_3, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_1, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_3, me, player); break; + case 2: Talk(SAY_EXEC_PROG_3, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_4, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_3, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_1, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_3, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_4, me, player); + Talk(SAY_EXEC_TIME_4, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -878,28 +878,28 @@ public: case RACE_TAUREN: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_1, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_5, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_8, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_9, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_1, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_5, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_8, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_9, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_9, me, player); + Talk(SAY_EXEC_TIME_9, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -908,28 +908,28 @@ public: case RACE_GNOME: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_4, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_1, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_4, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_6, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_4, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_1, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_4, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_6, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_5, me, player); + Talk(SAY_EXEC_TIME_5, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -938,28 +938,28 @@ public: case RACE_TROLL: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_3, me, player); break; + case 0: Talk(SAY_EXEC_START_3, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_7, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_2, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_6, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_9, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_10, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_4, me, player); break; + case 2: Talk(SAY_EXEC_PROG_7, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_2, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_6, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_9, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_10, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_4, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_10, me, player); + Talk(SAY_EXEC_TIME_10, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -968,28 +968,28 @@ public: case RACE_BLOODELF: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_1, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_1, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_1, player->GetGUID()); break; //case 5: //unknown - case 6: DoScriptText(SAY_EXEC_THINK_3, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 6: Talk(SAY_EXEC_THINK_3, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_1, me, player); + Talk(SAY_EXEC_TIME_1, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; @@ -998,28 +998,28 @@ public: case RACE_DRAENEI: switch (ExecuteSpeech_Counter) { - case 0: DoScriptText(SAY_EXEC_START_1, me, player); break; + case 0: Talk(SAY_EXEC_START_1, player->GetGUID()); break; case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break; - case 2: DoScriptText(SAY_EXEC_PROG_1, me, player); break; - case 3: DoScriptText(SAY_EXEC_NAME_1, me, player); break; - case 4: DoScriptText(SAY_EXEC_RECOG_2, me, player); break; - case 5: DoScriptText(SAY_EXEC_NOREM_1, me, player); break; - case 6: DoScriptText(SAY_EXEC_THINK_4, me, player); break; - case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, player); break; + case 2: Talk(SAY_EXEC_PROG_1, player->GetGUID()); break; + case 3: Talk(SAY_EXEC_NAME_1, player->GetGUID()); break; + case 4: Talk(SAY_EXEC_RECOG_2, player->GetGUID()); break; + case 5: Talk(SAY_EXEC_NOREM_1, player->GetGUID()); break; + case 6: Talk(SAY_EXEC_THINK_4, player->GetGUID()); break; + case 7: Talk(SAY_EXEC_LISTEN_1, player->GetGUID()); break; case 8: if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f)) - DoScriptText(SAY_PLAGUEFIST, Plaguefist, player); + Plaguefist->AI()->Talk(SAY_PLAGUEFIST, player->GetGUID()); break; case 9: - DoScriptText(SAY_EXEC_TIME_2, me, player); + Talk(SAY_EXEC_TIME_2, player->GetGUID()); me->SetStandState(UNIT_STAND_STATE_KNEEL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); break; case 10: - DoScriptText(SAY_EXEC_WAITING, me, player); + Talk(SAY_EXEC_WAITING, player->GetGUID()); break; case 11: - DoScriptText(EMOTE_DIES, me); + Talk(EMOTE_DIES); me->setDeathState(JUST_DIED); me->SetHealth(0); return; -- cgit v1.2.3 From 27619b2bd711d03b2b641af9fa6e5d4b8969d0fb Mon Sep 17 00:00:00 2001 From: Gacko Date: Thu, 22 Nov 2012 23:01:28 +0100 Subject: Core/DB: Chapter 5 in creature text --- .../world/2012_11_21_00_world_creature_text.sql | 92 +++++++ .../EasternKingdoms/ScarletEnclave/chapter5.cpp | 302 ++++++++++----------- 2 files changed, 233 insertions(+), 161 deletions(-) (limited to 'src') diff --git a/sql/updates/world/2012_11_21_00_world_creature_text.sql b/sql/updates/world/2012_11_21_00_world_creature_text.sql index 311336b54bd..d66088834ca 100644 --- a/sql/updates/world/2012_11_21_00_world_creature_text.sql +++ b/sql/updates/world/2012_11_21_00_world_creature_text.sql @@ -711,3 +711,95 @@ INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`, (29071,53,0,16,0,100,"special_surprise EMOTE_DIES","%s dies from his wounds."), -- Plaguefist (29053,41,0,14,0,100,"special_surprise SAY_PLAGUEFIST","What's going on in there? What's taking so long, $N?"); + +-- Highlord Darion Mograine +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609286 AND -1609201; +DELETE FROM `creature_text` WHERE `entry` IN (29183,29175,29227,29228,29176,29178,29204,29173); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(29173,0,0,14,14677,100,"Highlord Darion Mograine","Soldiers of the Scourge, stand ready! You will soon be able to unleash your fury upon the Argent Dawn!"), +(29173,1,0,14,14678,100,"Highlord Darion Mograine","The sky weeps at the devastation of sister earth! Soon, tears of blood will rain down upon us!"), +(29173,2,0,14,14681,100,"Highlord Darion Mograine","Death knights of Acherus, the death march begins!"), +(29173,3,0,14,14679,100,"Highlord Darion Mograine","Soldiers of the Scourge, death knights of Acherus, minions of the darkness: hear the call of the Highlord!"), +(29173,4,0,14,14680,100,"Highlord Darion Mograine","RISE!"), +(29173,5,0,14,14682,100,"Highlord Darion Mograine","The skies turn red with the blood of the fallen! The Lich King watches over us, minions! Onward! Leave only ashes and misery in your destructive wake!"), +(29176,6,0,14,0,100,"Korfax, Champion of the Light","Scourge armies approach!"), +(29178,7,0,14,14487,100,"Lord Maxwell Tyrosus","Stand fast, brothers and sisters! The Light will prevail!"), +(29173,8,0,12,14683,100,"Highlord Darion Mograine","Kneel before the Highlord!"), +(29173,8,1,12,14684,100,"Highlord Darion Mograine","You stand no chance!"), +(29173,8,2,12,14685,100,"Highlord Darion Mograine","The Scourge will destroy this place!"), +(29173,8,3,12,14686,100,"Highlord Darion Mograine","Your life is forfeit."), +(29173,8,4,12,14687,100,"Highlord Darion Mograine","Life is meaningless without suffering."), +(29173,8,5,12,14688,100,"Highlord Darion Mograine","How much longer will your forces hold out?"), +(29173,8,6,12,14689,100,"Highlord Darion Mograine","The Argent Dawn is finished!"), +(29173,8,7,12,14690,100,"Highlord Darion Mograine","Spare no one!"), +(29173,8,8,12,14691,100,"Highlord Darion Mograine","What is this?! My... I cannot strike..."), +(29173,8,9,14,14692,100,"Highlord Darion Mograine","Obey me, blade!"), +(29173,8,10,12,14693,100,"Highlord Darion Mograine","You will do as I command! I am in control here!"), +(29173,8,11,12,14694,100,"Highlord Darion Mograine","I can not... the blade fights me."), +(29173,8,12,12,14695,100,"Highlord Darion Mograine","What is happening to me?"), +(29173,8,13,12,14696,100,"Highlord Darion Mograine","Power...wanes..."), +(29173,8,14,12,14697,100,"Highlord Darion Mograine","Ashbringer defies me..."), +(29173,8,15,12,14698,100,"Highlord Darion Mograine","Minions, come to my aid!"), +(29175,24,0,14,14584,100,"Highlord Tirion Fordring","You cannot win, Darion!"), +(29175,25,0,14,14585,100,"Highlord Tirion Fordring","Bring them before the chapel!"), +(29173,26,0,12,14699,100,"Highlord Darion Mograine","Stand down, death knights. We have lost... The Light... This place... No hope..."), +(29175,27,0,12,14586,100,"Highlord Tirion Fordring","Have you learned nothing, boy? You have become all that your father fought against! Like that coward, Arthas, you allowed yourself to be consumed by the darkness...the hate... Feeding upon the misery of those you tortured and killed!"), +(29175,28,0,12,14587,100,"Highlord Tirion Fordring","Your master knows what lies beneath the chapel. It is why he dares not show his face! He's sent you and your death knights to meet their doom, Darion."), +(29175,29,0,12,14588,100,"Highlord Tirion Fordring","What you are feeling right now is the anguish of a thousand lost souls! Souls that you and your master brought here! The Light will tear you apart, Darion!"), +(29173,30,0,12,14700,100,"Highlord Darion Mograine","Save your breath, old man. It might be the last you ever draw."), +(29227,31,0,12,14493,100,"Highlord Alexandros Mograine","My son! My dear, beautiful boy!"), +(29173,32,0,12,14701,100,"Highlord Darion Mograine","Father!"), +(29173,33,0,12,14702,100,"Highlord Darion Mograine","Argh...what...is..."), +(29228,34,0,12,14703,100,"Darion Mograine","Father, you have returned!"), +(29228,35,0,12,14704,100,"Darion Mograine","You have been gone a long time, father. I thought..."), +(29227,36,0,12,14494,100,"Highlord Alexandros Mograine","Nothing could have kept me away from here, Darion. Not from my home and family."), +(29228,37,0,12,14705,100,"Darion Mograine","Father, I wish to join you in the war against the undead. I want to fight! I can sit idle no longer!"), +(29227,38,0,12,14495,100,"Highlord Alexandros Mograine","Darion Mograine, you are barely of age to hold a sword, let alone battle the undead hordes of Lordaeron! I couldn't bear losing you. Even the thought..."), +(29228,39,0,12,14706,100,"Darion Mograine","If I die, father, I would rather it be on my feet, standing in defiance against the undead legions! If I die, father, I die with you!"), +(29227,40,0,12,14496,100,"Highlord Alexandros Mograine","My son, there will come a day when you will command the Ashbringer and, with it, mete justice across this land. I have no doubt that when that day finally comes, you will bring pride to our people and that Lordaeron will be a better place because of you. But, my son, that day is not today."), +(29227,41,0,12,14497,100,"Highlord Alexandros Mograine","Do not forget..."), +(29183,42,0,14,14803,100,"The Lich King","Touching..."), +(29173,43,0,14,14707,100,"Highlord Darion Mograine","You have've betrayed me! You betrayed us all you monster! Face the might of Mograine!"), +(29183,44,0,12,14805,100,"The Lich King","He's mine now..."), +(29183,45,0,12,14804,100,"The Lich King","Pathetic..."), +(29175,46,0,12,14589,100,"Highlord Tirion Fordring","You're a damned monster, Arthas!"), +(29183,47,0,12,14806,100,"The Lich King","You were right, Fordring. I did send them in to die. Their lives are meaningless, but yours..."), +(29183,48,0,12,14807,100,"The Lich King","How simple it was to draw the great Tirion Fordring out of hiding. You've left yourself exposed, paladin. Nothing will save you..."), +(29178,49,0,14,14488,100,"Lord Maxwell Tyrosus","ATTACK!!!"), +(29183,50,0,14,14808,100,"The Lich King","APOCALYPSE!"), +(29173,51,0,12,14708,100,"Highlord Darion Mograine","That day is not today..."), +(29173,52,0,14,14709,100,"Highlord Darion Mograine","Tirion!"), +(29175,53,0,14,14591,100,"Highlord Tirion Fordring","ARTHAS!!!!"), +(29183,54,0,14,14809,100,"The Lich King","What is this?"), +(29175,55,0,14,14592,100,"Highlord Tirion Fordring","Your end."), +(29183,56,0,14,14810,100,"The Lich King","Impossible..."), +(29183,57,0,14,14811,100,"The Lich King","This... isn't... over..."), +(29183,58,0,14,14812,100,"The Lich King","When next we meet it won't be on holy ground, paladin."), +(29175,59,0,12,14593,100,"Highlord Tirion Fordring","Rise, Darion, and listen..."), +(29175,60,0,12,14594,100,"Highlord Tirion Fordring","We have all been witness to a terrible tragedy. The blood of good men has been shed upon this soil! Honorable knights, slain defending their lives - our lives!"), +(29175,61,0,12,14595,100,"Highlord Tirion Fordring","And while such things can never be forgotten, we must remain vigilant in our cause!"), +(29175,62,0,12,14596,100,"Highlord Tirion Fordring","The Lich King must answer for what he has done and must not be allowed to cause further destruction to our world."), +(29175,63,0,12,14597,100,"Highlord Tirion Fordring","I make a promise to you now, brothers and sisters: The Lich King will be defeated! On this day, I call for a union."), +(29175,64,0,12,14598,100,"Highlord Tirion Fordring","The Argent Dawn and the Order of the Silver Hand will come together as one! We will succeed where so many before us have failed!"), +(29175,65,0,12,14599,100,"Highlord Tirion Fordring","We will take the fight to Arthas and tear down the walls of Icecrown!"), +(29175,66,0,14,14600,100,"Highlord Tirion Fordring","The Argent Crusade comes for you, Arthas!"), +(29173,67,0,12,14710,100,"Highlord Darion Mograine","So too do the Knights of the Ebon Blade... While our kind has no place in your world, we will fight to bring an end to the Lich King. This I vow!"), +(29173,68,0,16,0,100,"","Thousands of Scourge rise up at the Highlord's command."), +(29173,69,0,16,0,100,"","The army marches towards Light's Hope Chapel."), +(29173,70,0,16,0,100,"","After over a hundred Defenders of the Light fall, Highlord Tirion Fordring arrives."), +(29204,71,0,16,0,100,"Orbaz","%s flee"), +(29173,72,0,16,0,100,"Highlord Darion Mograine","%s kneels in defeat before Tirion Fordring."), +(29227,73,0,16,0,100,"Highlord Alexandros Mograine","%s arrives."), +(29173,74,0,16,0,100,"Highlord Darion Mograine","%s becomes a shade of his past, and walks up to his father."), +(29228,75,0,16,0,100,"Darion Mograine","%s hugs his father."), +(29173,76,0,16,0,100,"Alexandros","%s disappears, and the Lich King appears."), +(29173,77,0,16,0,100,"Highlord Darion Mograine","%s becomes himself again...and is now angry."), +(29183,78,0,16,0,100,"The Lich King","%s casts a spell on Tirion."), +(29175,79,0,16,0,100,"Highlord Tirion Fordring","%s gasps for air."), +(29183,80,0,16,0,100,"The Lich King","%s casts a powerful spell, killing the Defenders and knocking back the others."), +(29173,81,0,16,0,100,"Highlord Darion Mograine","%s throws the Corrupted Ashbringer to Tirion, who catches it. Tirion becomes awash with Light, and the Ashbringer is cleansed."), +(29173,82,0,16,0,100,"Highlord Darion Mograine","%s collapses."), +(29175,83,0,16,0,100,"Highlord Tirion Fordring","%s charges towards the Lich King, Ashbringer in hand and strikes the Lich King."), +(29183,84,0,16,0,100,"The Lich King","%s disappears. Tirion walks over to where Darion lay"), +(29173,85,0,16,0,100,"","Light washes over the chapel ? the Light of Dawn is uncovered."); + diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 686f5954e77..77c1e3bc066 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -51,93 +51,78 @@ enum mograine WORLD_STATE_COUNTDOWN = 3603, WORLD_STATE_EVENT_BEGIN = 3605, - SAY_LIGHT_OF_DAWN01 = -1609201, // pre text - SAY_LIGHT_OF_DAWN02 = -1609202, - SAY_LIGHT_OF_DAWN03 = -1609203, - SAY_LIGHT_OF_DAWN04 = -1609204, // intro - SAY_LIGHT_OF_DAWN05 = -1609205, - SAY_LIGHT_OF_DAWN06 = -1609206, - SAY_LIGHT_OF_DAWN07 = -1609207, // During the fight - Korfax, Champion of the Light - SAY_LIGHT_OF_DAWN08 = -1609208, // Lord Maxwell Tyrosus - SAY_LIGHT_OF_DAWN09 = -1609209, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN10 = -1609210, - SAY_LIGHT_OF_DAWN11 = -1609211, - SAY_LIGHT_OF_DAWN12 = -1609212, - SAY_LIGHT_OF_DAWN13 = -1609213, - SAY_LIGHT_OF_DAWN14 = -1609214, - SAY_LIGHT_OF_DAWN15 = -1609215, - SAY_LIGHT_OF_DAWN16 = -1609216, - SAY_LIGHT_OF_DAWN17 = -1609217, - SAY_LIGHT_OF_DAWN18 = -1609218, - SAY_LIGHT_OF_DAWN19 = -1609219, - SAY_LIGHT_OF_DAWN20 = -1609220, - SAY_LIGHT_OF_DAWN21 = -1609221, - SAY_LIGHT_OF_DAWN22 = -1609222, - SAY_LIGHT_OF_DAWN23 = -1609223, - SAY_LIGHT_OF_DAWN24 = -1609224, - SAY_LIGHT_OF_DAWN25 = -1609225, // After the fight - SAY_LIGHT_OF_DAWN26 = -1609226, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN27 = -1609227, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN28 = -1609228, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN29 = -1609229, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN30 = -1609230, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN31 = -1609231, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN32 = -1609232, // Highlord Alexandros Mograine - SAY_LIGHT_OF_DAWN33 = -1609233, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN34 = -1609234, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN35 = -1609235, // Darion Mograine - SAY_LIGHT_OF_DAWN36 = -1609236, // Darion Mograine - SAY_LIGHT_OF_DAWN37 = -1609237, // Highlord Alexandros Mograine - SAY_LIGHT_OF_DAWN38 = -1609238, // Darion Mograine - SAY_LIGHT_OF_DAWN39 = -1609239, // Highlord Alexandros Mograine - SAY_LIGHT_OF_DAWN40 = -1609240, // Darion Mograine - SAY_LIGHT_OF_DAWN41 = -1609241, // Highlord Alexandros Mograine - SAY_LIGHT_OF_DAWN42 = -1609242, // Highlord Alexandros Mograine - SAY_LIGHT_OF_DAWN43 = -1609243, // The Lich King - SAY_LIGHT_OF_DAWN44 = -1609244, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN45 = -1609245, // The Lich King - SAY_LIGHT_OF_DAWN46 = -1609246, // The Lich King - SAY_LIGHT_OF_DAWN47 = -1609247, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN48 = -1609248, // The Lich King - SAY_LIGHT_OF_DAWN49 = -1609249, // The Lich King - SAY_LIGHT_OF_DAWN50 = -1609250, // Lord Maxwell Tyrosus - SAY_LIGHT_OF_DAWN51 = -1609251, // The Lich King - SAY_LIGHT_OF_DAWN52 = -1609252, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN53 = -1609253, // Highlord Darion Mograine - SAY_LIGHT_OF_DAWN54 = -1609254, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN55 = -1609255, // The Lich King - SAY_LIGHT_OF_DAWN56 = -1609256, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN57 = -1609257, // The Lich King - SAY_LIGHT_OF_DAWN58 = -1609258, // The Lich King - SAY_LIGHT_OF_DAWN59 = -1609259, // The Lich King - SAY_LIGHT_OF_DAWN60 = -1609260, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN61 = -1609261, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN62 = -1609262, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN63 = -1609263, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN64 = -1609264, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN65 = -1609265, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN66 = -1609266, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN67 = -1609267, // Highlord Tirion Fordring - SAY_LIGHT_OF_DAWN68 = -1609268, // Highlord Darion Mograine - - EMOTE_LIGHT_OF_DAWN01 = -1609269, // Emotes - EMOTE_LIGHT_OF_DAWN02 = -1609270, - EMOTE_LIGHT_OF_DAWN03 = -1609271, - EMOTE_LIGHT_OF_DAWN04 = -1609272, - EMOTE_LIGHT_OF_DAWN05 = -1609273, - EMOTE_LIGHT_OF_DAWN06 = -1609274, - EMOTE_LIGHT_OF_DAWN07 = -1609275, - EMOTE_LIGHT_OF_DAWN08 = -1609276, - EMOTE_LIGHT_OF_DAWN09 = -1609277, - EMOTE_LIGHT_OF_DAWN10 = -1609278, - EMOTE_LIGHT_OF_DAWN11 = -1609279, - EMOTE_LIGHT_OF_DAWN12 = -1609280, - EMOTE_LIGHT_OF_DAWN13 = -1609281, - EMOTE_LIGHT_OF_DAWN14 = -1609282, - EMOTE_LIGHT_OF_DAWN15 = -1609283, - EMOTE_LIGHT_OF_DAWN16 = -1609284, - EMOTE_LIGHT_OF_DAWN17 = -1609285, - EMOTE_LIGHT_OF_DAWN18 = -1609286, + SAY_LIGHT_OF_DAWN01 = 0, // pre text + SAY_LIGHT_OF_DAWN02 = 1, + SAY_LIGHT_OF_DAWN03 = 2, + SAY_LIGHT_OF_DAWN04 = 3, // intro + SAY_LIGHT_OF_DAWN05 = 4, + SAY_LIGHT_OF_DAWN06 = 5, + SAY_LIGHT_OF_DAWN07 = 6, // During the fight - Korfax, Champion of the Light + SAY_LIGHT_OF_DAWN08 = 7, // Lord Maxwell Tyrosus + SAY_LIGHT_OF_DAWN09 = 8, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN25 = 24, // After the fight + SAY_LIGHT_OF_DAWN26 = 25, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN27 = 26, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN28 = 27, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN29 = 28, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN30 = 29, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN31 = 30, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN32 = 31, // Highlord Alexandros Mograine + SAY_LIGHT_OF_DAWN33 = 32, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN34 = 33, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN35 = 34, // Darion Mograine + SAY_LIGHT_OF_DAWN36 = 35, // Darion Mograine + SAY_LIGHT_OF_DAWN37 = 36, // Highlord Alexandros Mograine + SAY_LIGHT_OF_DAWN38 = 37, // Darion Mograine + SAY_LIGHT_OF_DAWN39 = 38, // Highlord Alexandros Mograine + SAY_LIGHT_OF_DAWN40 = 39, // Darion Mograine + SAY_LIGHT_OF_DAWN41 = 40, // Highlord Alexandros Mograine + SAY_LIGHT_OF_DAWN42 = 41, // Highlord Alexandros Mograine + SAY_LIGHT_OF_DAWN43 = 42, // The Lich King + SAY_LIGHT_OF_DAWN44 = 43, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN45 = 44, // The Lich King + SAY_LIGHT_OF_DAWN46 = 45, // The Lich King + SAY_LIGHT_OF_DAWN47 = 46, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN48 = 47, // The Lich King + SAY_LIGHT_OF_DAWN49 = 48, // The Lich King + SAY_LIGHT_OF_DAWN50 = 49, // Lord Maxwell Tyrosus + SAY_LIGHT_OF_DAWN51 = 50, // The Lich King + SAY_LIGHT_OF_DAWN52 = 51, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN53 = 52, // Highlord Darion Mograine + SAY_LIGHT_OF_DAWN54 = 53, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN55 = 54, // The Lich King + SAY_LIGHT_OF_DAWN56 = 55, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN57 = 56, // The Lich King + SAY_LIGHT_OF_DAWN58 = 57, // The Lich King + SAY_LIGHT_OF_DAWN59 = 58, // The Lich King + SAY_LIGHT_OF_DAWN60 = 59, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN61 = 60, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN62 = 61, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN63 = 62, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN64 = 63, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN65 = 64, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN66 = 65, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN67 = 66, // Highlord Tirion Fordring + SAY_LIGHT_OF_DAWN68 = 67, // Highlord Darion Mograine + + EMOTE_LIGHT_OF_DAWN01 = 68, // Emotes + EMOTE_LIGHT_OF_DAWN02 = 69, + EMOTE_LIGHT_OF_DAWN03 = 70, + EMOTE_LIGHT_OF_DAWN04 = 71, + EMOTE_LIGHT_OF_DAWN05 = 72, + EMOTE_LIGHT_OF_DAWN06 = 73, + EMOTE_LIGHT_OF_DAWN07 = 74, + EMOTE_LIGHT_OF_DAWN08 = 75, + EMOTE_LIGHT_OF_DAWN09 = 76, + EMOTE_LIGHT_OF_DAWN10 = 77, + EMOTE_LIGHT_OF_DAWN11 = 78, + EMOTE_LIGHT_OF_DAWN12 = 79, + EMOTE_LIGHT_OF_DAWN13 = 80, + EMOTE_LIGHT_OF_DAWN14 = 81, + EMOTE_LIGHT_OF_DAWN15 = 82, + EMOTE_LIGHT_OF_DAWN16 = 83, + EMOTE_LIGHT_OF_DAWN17 = 84, + EMOTE_LIGHT_OF_DAWN18 = 85, GO_LIGHT_OF_DAWN = 191330, SPELL_THE_LIGHT_OF_DAWN_Q = 53606, // quest credit @@ -512,9 +497,9 @@ public: SetHoldState(true); SpawnNPC(); if (Creature* temp = Unit::GetCreature(*me, uiKorfaxGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN07, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN07); if (Creature* temp = Unit::GetCreature(*me, uiMaxwellGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN08, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN08); for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i) NPCChangeTarget(uiGhoulGUID[i]); @@ -546,7 +531,7 @@ public: { //Unit* pTirion = Unit::GetCreature(*me, uiTirionGUID); - DoScriptText(EMOTE_LIGHT_OF_DAWN05, me); + Talk(EMOTE_LIGHT_OF_DAWN05); if (me->HasAura(SPELL_THE_LIGHT_OF_DAWN, 0)) me->RemoveAurasDueToSpell(SPELL_THE_LIGHT_OF_DAWN); if (Creature* temp = Unit::GetCreature(*me, uiKoltiraGUID)) @@ -583,7 +568,7 @@ public: } break; case 4: - DoScriptText(SAY_LIGHT_OF_DAWN27, me); + Talk(SAY_LIGHT_OF_DAWN27); me->SetStandState(UNIT_STAND_STATE_KNEEL); if (Creature* temp = Unit::GetCreature(*me, uiKoltiraGUID)) @@ -593,7 +578,7 @@ public: SetHoldState(true); break; case 5: - DoScriptText(SAY_LIGHT_OF_DAWN33, me); + Talk(SAY_LIGHT_OF_DAWN33); SetHoldState(true); break; case 6: @@ -609,7 +594,7 @@ public: me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(EQUIP_UNEQUIP)); if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) me->CastSpell(temp, SPELL_ASHBRINGER, true); - DoScriptText(EMOTE_LIGHT_OF_DAWN14, me); + Talk(EMOTE_LIGHT_OF_DAWN14); SetHoldState(true); break; } @@ -645,7 +630,7 @@ public: break; case 2: - DoScriptText(SAY_LIGHT_OF_DAWN04, me); + Talk(SAY_LIGHT_OF_DAWN04); if (Creature* pKoltira = GetClosestCreatureWithEntry(me, NPC_KOLTIRA_DEATHWEAVER, 50.0f)) uiKoltiraGUID = pKoltira->GetGUID(); if (Creature* pOrbaz = GetClosestCreatureWithEntry(me, NPC_ORBAZ_BLOODBANE, 50.0f)) @@ -656,7 +641,7 @@ public: break; case 3: // rise - DoScriptText(SAY_LIGHT_OF_DAWN05, me); + Talk(SAY_LIGHT_OF_DAWN05); JumpToNextStep(3000); break; @@ -734,7 +719,7 @@ public: break; case 8: // summon announce - DoScriptText(SAY_LIGHT_OF_DAWN06, me); + Talk(SAY_LIGHT_OF_DAWN06); JumpToNextStep(5000); break; @@ -773,34 +758,34 @@ public: // ******* After battle ***************************************************************** case 11: // Tirion starts to speak if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN28, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN28); JumpToNextStep(21000); break; case 12: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN29, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN29); JumpToNextStep(13000); break; case 13: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN30, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN30); JumpToNextStep(13000); break; case 14: me->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_LIGHT_OF_DAWN31, me); + Talk(SAY_LIGHT_OF_DAWN31); JumpToNextStep(7000); break; case 15: // summon gate - if (Unit* temp = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightofDawnLoc[22].x, LightofDawnLoc[22].y, LightofDawnLoc[22].z, LightofDawnLoc[22].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) + if (Creature* temp = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightofDawnLoc[22].x, LightofDawnLoc[22].y, LightofDawnLoc[22].z, LightofDawnLoc[22].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) { temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); temp->CastSpell(temp, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true); - DoScriptText(EMOTE_LIGHT_OF_DAWN06, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN06); uiAlexandrosGUID = temp->GetGUID(); } JumpToNextStep(4000); @@ -811,7 +796,7 @@ public: { temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[23].x, LightofDawnLoc[23].y, LightofDawnLoc[23].z); - DoScriptText(SAY_LIGHT_OF_DAWN32, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN32); } SetHoldState(false); // makes darion turns back JumpToNextStep(5000); @@ -819,14 +804,14 @@ public: case 17: me->SetStandState(UNIT_STAND_STATE_KNEEL); - DoScriptText(SAY_LIGHT_OF_DAWN34, me); + Talk(SAY_LIGHT_OF_DAWN34); JumpToNextStep(5000); break; case 18: // Darion's spirit out - if (Unit* temp = me->SummonCreature(NPC_DARION_MOGRAINE, LightofDawnLoc[24].x, LightofDawnLoc[24].y, LightofDawnLoc[24].z, LightofDawnLoc[24].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) + if (Creature* temp = me->SummonCreature(NPC_DARION_MOGRAINE, LightofDawnLoc[24].x, LightofDawnLoc[24].y, LightofDawnLoc[24].z, LightofDawnLoc[24].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) { - DoScriptText(SAY_LIGHT_OF_DAWN35, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN35); temp->SetWalk(false); uiDarionGUID = temp->GetGUID(); } @@ -836,7 +821,7 @@ public: case 19: // runs to father if (Creature* temp = Unit::GetCreature(*me, uiDarionGUID)) { - DoScriptText(EMOTE_LIGHT_OF_DAWN07, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN07); temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[25].x, LightofDawnLoc[25].y, LightofDawnLoc[25].z); } JumpToNextStep(4000); @@ -844,31 +829,31 @@ public: case 20: if (Creature* temp = Unit::GetCreature(*me, uiDarionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN36, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN36); JumpToNextStep(4000); break; case 21: if (Creature* temp = Unit::GetCreature(*me, uiDarionGUID)) - DoScriptText(EMOTE_LIGHT_OF_DAWN08, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN08); JumpToNextStep(4000); break; case 22: if (Creature* temp = Unit::GetCreature(*me, uiAlexandrosGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN37, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN37); JumpToNextStep(8000); break; case 23: if (Creature* temp = Unit::GetCreature(*me, uiDarionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN38, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN38); JumpToNextStep(8000); break; case 24: if (Creature* temp = Unit::GetCreature(*me, uiAlexandrosGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN39, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN39); if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) // Tirion moves forward here temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[1].x, LightofDawnLoc[1].y, LightofDawnLoc[1].z); @@ -878,13 +863,13 @@ public: case 25: if (Creature* temp = Unit::GetCreature(*me, uiDarionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN40, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN40); JumpToNextStep(11000); break; case 26: if (Creature* temp = Unit::GetCreature(*me, uiAlexandrosGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN41, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN41); JumpToNextStep(5000); break; @@ -896,14 +881,14 @@ public: case 28: if (Creature* temp = Unit::GetCreature(*me, uiAlexandrosGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN42, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN42); JumpToNextStep(6000); break; case 29: // lich king spawns - if (Unit* temp = me->SummonCreature(NPC_THE_LICH_KING, LightofDawnLoc[26].x, LightofDawnLoc[26].y, LightofDawnLoc[26].z, LightofDawnLoc[26].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) + if (Creature* temp = me->SummonCreature(NPC_THE_LICH_KING, LightofDawnLoc[26].x, LightofDawnLoc[26].y, LightofDawnLoc[26].z, LightofDawnLoc[26].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000)) { - DoScriptText(SAY_LIGHT_OF_DAWN43, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN43); uiLichKingGUID = temp->GetGUID(); if (Unit* pAlex = Unit::GetCreature(*me, uiAlexandrosGUID)) temp->CastSpell(pAlex, SPELL_SOUL_FEAST_ALEX, false); @@ -914,21 +899,21 @@ public: case 30: if (Creature* temp = Unit::GetCreature(*me, uiAlexandrosGUID)) // just hide him { - DoScriptText(EMOTE_LIGHT_OF_DAWN09, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN09); temp->SetVisible(false); } if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) { temp->InterruptNonMeleeSpells(false); - DoScriptText(SAY_LIGHT_OF_DAWN45, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN45); } JumpToNextStep(3000); break; case 31: me->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(EMOTE_LIGHT_OF_DAWN10, me); - DoScriptText(SAY_LIGHT_OF_DAWN44, me); + Talk(EMOTE_LIGHT_OF_DAWN10); + Talk(SAY_LIGHT_OF_DAWN44); JumpToNextStep(3000); break; @@ -952,7 +937,7 @@ public: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) { temp->HandleEmoteCommand(EMOTE_ONESHOT_KICK); - DoScriptText(SAY_LIGHT_OF_DAWN46, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN46); } me->SetSpeed(MOVE_RUN, 6.0f); me->SetStandState(UNIT_STAND_STATE_DEAD); @@ -967,33 +952,33 @@ public: case 38: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN47, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN47); JumpToNextStep(8000); break; case 39: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN48, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN48); JumpToNextStep(15000); break; case 40: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN49, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN49); JumpToNextStep(17000); break; case 41: // Lich king - Apocalypse if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) { - DoScriptText(EMOTE_LIGHT_OF_DAWN11, temp); - DoScriptText(SAY_LIGHT_OF_DAWN51, temp); - if (Unit* pTirion = Unit::GetCreature(*me, uiTirionGUID)) + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN11); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN51); + if (Creature* pTirion = Unit::GetCreature(*me, uiTirionGUID)) { pTirion->SetStandState(UNIT_STAND_STATE_KNEEL); //temp->CastSpell(pTirion, SPELL_APOCALYPSE, false); // not working temp->CastSpell(pTirion, SPELL_SOUL_FEAST_TIRION, false); - DoScriptText(EMOTE_LIGHT_OF_DAWN12, pTirion); + pTirion->AI()->Talk(EMOTE_LIGHT_OF_DAWN12); } } JumpToNextStep(2000); @@ -1035,7 +1020,7 @@ public: temp->SetWalk(false); temp->SetSpeed(MOVE_RUN, 2.0f); temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ); - DoScriptText(SAY_LIGHT_OF_DAWN50, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN50); } if (Creature* temp = Unit::GetCreature(*me, uiKorfaxGUID)) { @@ -1058,7 +1043,7 @@ public: case 43: // They all got kicked if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(EMOTE_LIGHT_OF_DAWN13, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN13); if (Creature* temp = Unit::GetCreature(*me, uiMaxwellGUID)) { @@ -1107,7 +1092,7 @@ public: break; case 45: - DoScriptText(SAY_LIGHT_OF_DAWN52, me); + Talk(SAY_LIGHT_OF_DAWN52); JumpToNextStep(5000); break; @@ -1115,14 +1100,14 @@ public: me->SetSpeed(MOVE_RUN, 1.0f); me->SetWalk(true); me->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_LIGHT_OF_DAWN53, me); + Talk(SAY_LIGHT_OF_DAWN53); SetHoldState(false); // Darion throws sword JumpToNextStep(7000); break; case 47: // Ashbringer rebirth me->SetStandState(UNIT_STAND_STATE_KNEEL); - DoScriptText(EMOTE_LIGHT_OF_DAWN15, me); + Talk(EMOTE_LIGHT_OF_DAWN15); if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) { temp->SetStandState(UNIT_STAND_STATE_STAND); @@ -1150,26 +1135,26 @@ public: case 49: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN54, temp); + Talk(SAY_LIGHT_OF_DAWN54); JumpToNextStep(4000); break; case 50: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN55, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN55); JumpToNextStep(5000); break; case 51: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN56, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN56); JumpToNextStep(1000); break; case 52: // Tiron charges if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) { - DoScriptText(EMOTE_LIGHT_OF_DAWN16, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN16); temp->CastSpell(temp, SPELL_TIRION_CHARGE, false); // jumping charge temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H); temp->SetSpeed(MOVE_RUN, 3.0f); // workarounds, make Tirion still running @@ -1183,7 +1168,7 @@ public: case 53: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN57, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN57); JumpToNextStep(1000); break; @@ -1211,13 +1196,13 @@ public: case 57: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN58, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN58); JumpToNextStep(10000); break; case 58: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN59, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN59); JumpToNextStep(10000); break; @@ -1236,7 +1221,7 @@ public: case 60: if (Creature* temp = Unit::GetCreature(*me, uiLichKingGUID)) // Lich king disappears here { - DoScriptText(EMOTE_LIGHT_OF_DAWN17, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN17); temp->Kill(temp); } JumpToNextStep(10000); @@ -1244,7 +1229,7 @@ public: case 61: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN60, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN60); JumpToNextStep(3000); break; @@ -1261,50 +1246,50 @@ public: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) { temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[8].x, LightofDawnLoc[8].y, LightofDawnLoc[8].z); - DoScriptText(SAY_LIGHT_OF_DAWN61, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN61); } JumpToNextStep(15000); break; case 64: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN62, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN62); JumpToNextStep(7000); break; case 65: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN63, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN63); JumpToNextStep(10000); break; case 66: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN64, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN64); JumpToNextStep(11000); break; case 67: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN65, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN65); JumpToNextStep(10000); break; case 68: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN66, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN66); JumpToNextStep(8000); break; case 69: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN67, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN67); JumpToNextStep(10000); break; case 70: me->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_LIGHT_OF_DAWN68, me); + Talk(SAY_LIGHT_OF_DAWN68); JumpToNextStep(10000); break; @@ -1382,12 +1367,7 @@ public: if (uiFight_speech <= diff) { - DoScriptText(RAND(SAY_LIGHT_OF_DAWN09, SAY_LIGHT_OF_DAWN10, SAY_LIGHT_OF_DAWN11, - SAY_LIGHT_OF_DAWN12, SAY_LIGHT_OF_DAWN13, SAY_LIGHT_OF_DAWN14, - SAY_LIGHT_OF_DAWN15, SAY_LIGHT_OF_DAWN16, SAY_LIGHT_OF_DAWN17, - SAY_LIGHT_OF_DAWN18, SAY_LIGHT_OF_DAWN19, SAY_LIGHT_OF_DAWN20, - SAY_LIGHT_OF_DAWN21, SAY_LIGHT_OF_DAWN22, SAY_LIGHT_OF_DAWN23, - SAY_LIGHT_OF_DAWN24), me); + Talk(SAY_LIGHT_OF_DAWN09); uiFight_speech = urand(15000, 20000); } else uiFight_speech -= diff; @@ -1420,11 +1400,11 @@ public: if (uiFight_duration <= diff + 5000) { if (!uiTirionGUID) - if (Unit* temp = me->SummonCreature(NPC_HIGHLORD_TIRION_FORDRING, LightofDawnLoc[0].x, LightofDawnLoc[0].y, LightofDawnLoc[0].z, 1.528f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000)) + if (Creature* temp = me->SummonCreature(NPC_HIGHLORD_TIRION_FORDRING, LightofDawnLoc[0].x, LightofDawnLoc[0].y, LightofDawnLoc[0].z, 1.528f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000)) { temp->setFaction(me->getFaction()); temp->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(EQUIP_UNEQUIP)); - DoScriptText(SAY_LIGHT_OF_DAWN25, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN25); uiTirionGUID = temp->GetGUID(); } } @@ -1501,7 +1481,7 @@ public: } if (Creature* temp = Unit::GetCreature(*me, uiOrbazGUID)) - DoScriptText(EMOTE_LIGHT_OF_DAWN04, temp); + temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN04); if (Creature* temp = Unit::GetCreature(*me, uiThassarianGUID)) { @@ -1516,7 +1496,7 @@ public: } if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - DoScriptText(SAY_LIGHT_OF_DAWN26, temp); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN26); SetHoldState(false); -- cgit v1.2.3 From 4065176897b43c34cbc652ff334d311d402577ea Mon Sep 17 00:00:00 2001 From: Gacko Date: Fri, 23 Nov 2012 16:25:59 +0100 Subject: Core/DB: Convert 14 more scripts to creature text --- .../world/2012_11_21_00_world_creature_text.sql | 166 ++++++++++++++++++++- .../EasternKingdoms/AlteracValley/boss_vanndar.cpp | 10 +- .../BlackrockDepths/blackrock_depths.cpp | 28 ++-- .../boss_emperor_dagran_thaurissan.cpp | 8 +- .../BlackrockDepths/boss_grizzle.cpp | 9 +- .../MagistersTerrace/boss_felblood_kaelthas.cpp | 88 ++++++----- .../MagistersTerrace/boss_priestess_delrissa.cpp | 30 ++-- .../MagistersTerrace/boss_selin_fireheart.cpp | 59 ++++---- .../MagistersTerrace/boss_vexallus.cpp | 18 +-- .../EasternKingdoms/MoltenCore/boss_golemagg.cpp | 4 +- .../EasternKingdoms/MoltenCore/boss_ragnaros.cpp | 40 ++--- src/server/scripts/EasternKingdoms/ghostlands.cpp | 36 ++--- .../scripts/EasternKingdoms/silvermoon_city.cpp | 4 +- .../scripts/EasternKingdoms/stormwind_city.cpp | 60 ++++---- src/server/scripts/EasternKingdoms/westfall.cpp | 40 ++--- 15 files changed, 389 insertions(+), 211 deletions(-) (limited to 'src') diff --git a/sql/updates/world/2012_11_21_00_world_creature_text.sql b/sql/updates/world/2012_11_21_00_world_creature_text.sql index d66088834ca..60e0f9c3aa1 100644 --- a/sql/updates/world/2012_11_21_00_world_creature_text.sql +++ b/sql/updates/world/2012_11_21_00_world_creature_text.sql @@ -166,7 +166,7 @@ INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`, -- A special surprise DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609078 AND -1609025; -DELETE FROM `creature_text` WHERE `entry` IN (29032,29061,29065,29067,29068,29070,29074,29072,29073,29071); +DELETE FROM `creature_text` WHERE `entry` IN (29032,29061,29065,29067,29068,29070,29074,29072,29073,29071,29053); INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES -- Malar Bravehorn (29032,0,0,12,0,100,"special_surprise SAY_EXEC_START_1","Come to finish the job, have you?"), @@ -803,3 +803,167 @@ INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`, (29183,84,0,16,0,100,"The Lich King","%s disappears. Tirion walks over to where Darion lay"), (29173,85,0,16,0,100,"","Light washes over the chapel ? the Light of Dawn is uncovered."); +-- grimstone +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1230008 AND -1230003; +DELETE FROM `creature_text` WHERE `entry`=10096; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(10096,0,0,14,0,100,"grimstone SCRIPT_TEXT1","You have been sentenced to death for crimes against the Dark Iron nation!"), +(10096,1,0,14,0,100,"grimstone SCRIPT_TEXT2","The Sons of Thaurissan shall watch you perish in the Ring of the Law!"), +(10096,2,0,14,0,100,"grimstone SCRIPT_TEXT3","Unleash the fury and let it be done!"), +(10096,3,0,14,0,100,"grimstone SCRIPT_TEXT4","Haha! I bet you thought you were done!"), +(10096,4,0,14,0,100,"grimstone SCRIPT_TEXT5","But your real punishment lies ahead."), +(10096,5,0,14,0,100,"grimstone SCRIPT_TEXT6","Good riddance!"); + +-- rocknot +DELETE FROM `script_texts` WHERE `entry`=-1230000; +DELETE FROM `creature_text` WHERE `entry`=9503; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(9503,0,0,12,0,100,"rocknot SAY_GOT_BEER","Ah, hits the spot!"); + +-- doctor theolen krastinov +-- No delete query here, it's a generic script text for frenzy emotes. +DELETE FROM `creature_text` WHERE `entry`=9028; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(9028,0,0,16,0,100,"grizzle EMOTE_FRENZY_KILL","%s goes into a killing frenzy!"); + +-- dagran +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1230002 AND -1230001; +DELETE FROM `creature_text` WHERE `entry`=9019; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(9019,0,0,14,0,100,"dagran SAY_AGGRO","Come to aid the Throne!"), +(9019,1,0,14,0,100,"dagran SAY_SLAY","Hail to the king, baby!"); + +-- lilatha +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000146 AND -1000140; +DELETE FROM `creature_text` WHERE `entry` IN (16295,16220); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(16295,0,0,12,0,100,"lilatha SAY_START","Let's go."), +(16295,1,0,12,0,100,"lilatha SAY_PROGRESS1","$N, let's use the antechamber to the right."), +(16295,2,0,12,0,100,"lilatha SAY_PROGRESS2","I can see the light at the end of the tunnel!"), +(16295,3,0,12,0,100,"lilatha SAY_PROGRESS3","There's Farstrider Enclave now, $C. Not far to go... Look out! Troll ambush!!"), +(16295,4,0,12,0,100,"lilatha SAY_END1","Thank you for saving my life and bringing me back to safety, $N"), +(16295,5,0,12,0,100,"lilatha SAY_END2","Captain Helios, I've been rescued from the Amani Catacombs. Reporting for duty, sir!"), +(16220,0,0,12,0,100,"lilatha CAPTAIN_ANSWER","Liatha, get someone to look at those injuries. Thank you for bringing her back safely."); + +-- stillblade +DELETE FROM `script_texts` WHERE `entry`=-1000193; +DELETE FROM `creature_text` WHERE `entry`=17768; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(17768,0,0,12,0,100,"stillblade SAY_HEAL","Thank you, dear $C, you just saved my life."); + +-- stilwell +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000297 AND -1000293; +DELETE FROM `creature_text` WHERE `entry`=6182; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(6182,0,0,12,0,100,"stilwell SAY_DS_START","To the house! Stay close to me, no matter what! I have my gun and ammo there!"), +(6182,1,0,12,0,100,"stilwell SAY_DS_DOWN_1","We showed that one!"), +(6182,2,0,12,0,100,"stilwell SAY_DS_DOWN_2","One more down!"), +(6182,3,0,12,0,100,"stilwell SAY_DS_DOWN_3","We've done it! We won!"), +(6182,4,0,12,0,100,"stilwell SAY_DS_PROLOGUE","Meet me down by the orchard-- I just need to put my gun away."); + +-- defias traitor +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000105 AND -1000101; +DELETE FROM `creature_text` WHERE `entry`=467; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(467,0,0,12,0,100,"defias traitor SAY_START","Follow me, $N. I'll take you to the Defias hideout. But you better protect me or I am as good as dead."), +(467,1,0,12,0,100,"defias traitor SAY_PROGRESS","The entrance is hidden here in Moonbrook. Keep your eyes peeled for thieves. They want me dead."), +(467,2,0,12,0,100,"defias traitor SAY_END","You can go tell Stoutmantle this is where the Defias Gang is holed up, $N."), +(467,3,0,12,0,100,"defias traitor SAY_AGGRO_1","%s coming in fast! Prepare to fight!"), +(467,3,1,12,0,100,"defias traitor SAY_AGGRO_2","Help!"); + +-- vexallus +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1585011 AND -1585007; +DELETE FROM `creature_text` WHERE `entry`=24744; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(24744,0,0,14,12389,100,"vexallus SAY_AGGRO","Drain...life!"), +(24744,1,0,14,12392,100,"vexallus SAY_ENERGY","Un...con...tainable."), +(24744,2,0,14,12390,100,"vexallus SAY_OVERLOAD","Un...leash..."), +(24744,3,0,14,12393,100,"vexallus SAY_KILL","Con...sume."), +(24744,4,0,41,0,100,"vexallus EMOTE_DISCHARGE_ENERGY","%s discharges pure energy!"); + +-- kaelthas +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1585029 AND -1585023; +DELETE FROM `creature_text` WHERE `entry`=24664; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(24664,0,0,14,12413,100,"kaelthas MT SAY_AGGRO","Don't look so smug! I know what you're thinking, but Tempest Keep was merely a set back. Did you honestly believe I would trust the future to some blind, half-night elf mongrel? Oh no, he was merely an instrument, a stepping stone to a much larger plan! It has all led to this, and this time, you will not interfere!"), +(24664,1,0,14,12415,100,"kaelthas MT SAY_PHOENIX","Vengeance burns!"), +(24664,2,0,14,12417,100,"kaelthas MT SAY_FLAMESTRIKE","Felomin ashal!"), +(24664,3,0,14,12418,100,"kaelthas MT SAY_GRAVITY_LAPSE","I'll turn your world... upside... down..."), +(24664,4,0,14,12419,100,"kaelthas MT SAY_TIRED","Master... grant me strength."), +(24664,5,0,14,12420,100,"kaelthas MT SAY_RECAST_GRAVITY","Do not... get too comfortable."), +(24664,6,0,14,12421,100,"kaelthas MT SAY_DEATH","My demise accomplishes nothing! The Master will have you! You will drown in your own blood! This world shall burn! Aaaghh!"); + +-- selin +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1585006 AND -1585000; +DELETE FROM `creature_text` WHERE `entry`=24723; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(24723,0,0,14,12378,100,"selin SAY_AGGRO","You only waste my time!"), +(24723,1,0,14,12381,100,"selin SAY_ENERGY","My hunger knows no bounds!"), +(24723,2,0,14,12382,100,"selin SAY_EMPOWERED","Yes! I am a god!"), +(24723,3,0,14,12388,100,"selin SAY_KILL_1","Enough distractions!"), +(24723,3,1,14,12385,100,"selin SAY_KILL_2","I am invincible!"), +(24723,4,0,14,12383,100,"selin SAY_DEATH","No! More... I must have more!"), +(24723,5,0,41,0,100,"selin EMOTE_CRYSTAL","%s begins to channel from the nearby Fel Crystal..."); + +-- delrissa +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1585022 AND -1585012; +DELETE FROM `creature_text` WHERE `entry`=24560; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(24560,0,0,14,12395,100,"delrissa SAY_AGGRO","Annihilate them!"), +(24560,1,0,14,12398,100,"delrissa LackeyDeath1","Oh, the horror."), +(24560,2,0,14,12400,100,"delrissa LackeyDeath2","Well, aren't you lucky?"), +(24560,3,0,14,12401,100,"delrissa LackeyDeath3","Now I'm getting annoyed."), +(24560,4,0,14,12403,100,"delrissa LackeyDeath4","Lackies be damned! I'll finish you myself!"), +(24560,5,0,14,12405,100,"delrissa PlayerDeath1","I call that a good start."), +(24560,6,0,14,12407,100,"delrissa PlayerDeath2","I could have sworn there were more of you."), +(24560,7,0,14,12409,100,"delrissa PlayerDeath3","Not really much of a group, anymore, is it?"), +(24560,8,0,14,12410,100,"delrissa PlayerDeath4","One is such a lonely number."), +(24560,9,0,14,12411,100,"delrissa PlayerDeath5","It's been a kick, really."), +(24560,10,0,14,12397,100,"delrissa SAY_DEATH","Not what I had... planned..."); + +-- lord gregor lescovar +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000463 AND -1000457; +DELETE FROM `creature_text` WHERE `entry` IN (1755,7766,1754,1756); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(1756,0,0,12,0,100,"lord gregor lescovar SAY_GUARD_2","Yes, sir!"), +(1754,0,0,12,0,100,"lord gregor lescovar SAY_LESCOVAR_2","It's time for my meditation, leave me."), +(1754,1,0,12,0,100,"lord gregor lescovar SAY_LESCOVAR_3","There you are. What news from Westfall?"), +(1754,2,0,12,0,100,"lord gregor lescovar SAY_LESCOVAR_4","Hmm, it could be that meddle Shaw. I will see what I can discover. Be off with you. I'll contact you again soon."), +(1755,0,0,12,0,100,"lord gregor lescovar SAY_MARZON_1","VanCleef sends word that the plans are underway. But he's hear rumors about someone snooping about."), +(1755,1,0,12,0,100,"lord gregor lescovar SAY_MARZON_2","The Defias shall succeed! No meek adventurer will stop us!"), +(7766,0,0,14,0,100,"lord gregor lescovar SAY_TYRION_2","That's it! That's what you were waiting for! KILL THEM!"); + +-- tyrion spybot +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000456 AND -1000450 OR `entry`=-1000499; +DELETE FROM `creature_text` WHERE `entry` IN (7766,8856,1756,1754); +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(8856,0,0,12,0,100,"tyrion spybot SAY_QUEST_ACCEPT_ATTACK","By your command!"), +(8856,1,0,12,0,100,"tyrion spybot SAY_SPYBOT_1","Good day to you both. I would speak to Lord Lescovar."), +(8856,2,0,12,0,100,"tyrion spybot SAY_SPYBOT_2","Thank you. The Light be with you both."), +(8856,3,0,12,0,100,"tyrion spybot SAY_SPYBOT_3","Milord, your guest has arrived. He awaits your presence."), +(8856,4,0,12,0,100,"tyrion spybot SAY_SPYBOT_4","I shall use the time wisely, milord. Thank you."), +(7766,0,0,12,0,100,"tyrion spybot SAY_TYRION_1","Wait here. Spybot will make Lescovar come out as soon as possible. Be ready! Attack only after you've overheard their conversation."), +(1756,0,0,12,0,100,"tyrion spybot SAY_GUARD_1","Of course. He awaits you in the library."), +(1754,0,0,12,0,100,"tyrion spybot SAY_LESCOVAR_1","Ah, thank you kindly. I will leave you to the library while I tend to this small matter."); + +-- rager +DELETE FROM `script_texts` WHERE `entry`=-1409002; +DELETE FROM `creature_text` WHERE `entry`=11988; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(11988,0,0,16,0,100,"core rager EMOTE_LOWHP","%s refuses to die while its master is in trouble."); + +-- ragnaros +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1409018 AND -1409008; +DELETE FROM `creature_text` WHERE `entry`=11502; +INSERT INTO `creature_text`(`entry`,`groupid`,`id`,`type`,`sound`,`probability`,`comment`,`text`) VALUES +(11502,0,0,14,8040,100,"ragnaros SAY_SUMMON_MAJ","Behold Ragnaros, the Firelord! He who was ancient when this world was young! Bow before him, mortals! Bow before your ending!"), +(11502,1,0,14,8043,100,"ragnaros SAY_ARRIVAL1_RAG","TOO SOON! YOU HAVE AWAKENED ME TOO SOON, EXECUTUS! WHAT IS THE MEANING OF THIS INTRUSION?"), +(11502,2,0,14,8041,100,"ragnaros SAY_ARRIVAL2_MAJ","These mortal infidels, my lord! They have invaded your sanctum, and seek to steal your secrets!"), +(11502,3,0,14,8044,100,"ragnaros SAY_ARRIVAL3_RAG","FOOL! YOU ALLOWED THESE INSECTS TO RUN RAMPANT THROUGH THE HALLOWED CORE, AND NOW YOU LEAD THEM TO MY VERY LAIR? YOU HAVE FAILED ME, EXECUTUS! JUSTICE SHALL BE MET, INDEED!"), +(11502,4,0,14,8045,100,"ragnaros SAY_ARRIVAL5_RAG","NOW FOR YOU, INSECTS. BOLDLY YOU SAUGHT THE POWER OF RAGNAROS NOW YOU SHALL SEE IT FIRST HAND."), +(11502,5,0,14,8049,100,"ragnaros SAY_REINFORCEMENTS1","COME FORTH, MY SERVANTS! DEFEND YOUR MASTER!"), +(11502,6,0,14,8050,100,"ragnaros SAY_REINFORCEMENTS2","YOU CANNOT DEFEAT THE LIVING FLAME! COME YOU MINIONS OF FIRE! COME FORTH YOU CREATURES OF HATE! YOUR MASTER CALLS!"), +(11502,7,0,14,8046,100,"ragnaros SAY_HAND","BY FIRE BE PURGED!"), +(11502,8,0,14,8047,100,"ragnaros SAY_WRATH","TASTE THE FLAMES OF SULFURON!"), +(11502,9,0,14,8051,100,"ragnaros SAY_KILL","DIE INSECT!"), +(11502,10,0,14,8048,100,"ragnaros SAY_MAGMABURST","MY PATIENCE IS DWINDLING! COME, GNATS, TO YOUR DEATH!"); diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp index fdb6a5da320..af61c723ca3 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp @@ -22,8 +22,8 @@ enum Yells { YELL_AGGRO = 0, YELL_EVADE = 1, - YELL_RESPAWN1 = -1810010, // no creature_text - YELL_RESPAWN2 = -1810011, // no creature_text + //YELL_RESPAWN1 = -1810010, // Missing in database + //YELL_RESPAWN2 = -1810011, // Missing in database YELL_RANDOM = 2, YELL_SPELL = 3, }; @@ -64,12 +64,6 @@ public: Talk(YELL_AGGRO); } - void JustRespawned() - { - Reset(); - DoScriptText(RAND(YELL_RESPAWN1, YELL_RESPAWN2), me); - } - void UpdateAI(const uint32 diff) { if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp index b5283900eb0..5b5787b2ab8 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp @@ -101,12 +101,12 @@ public: // npc_grimstone enum GrimstoneTexts { - SCRIPT_TEXT1 = -1230003, - SCRIPT_TEXT2 = -1230004, - SCRIPT_TEXT3 = -1230005, - SCRIPT_TEXT4 = -1230006, - SCRIPT_TEXT5 = -1230007, - SCRIPT_TEXT6 = -1230008 + SAY_TEXT1 = 0, + SAY_TEXT2 = 1, + SAY_TEXT3 = 2, + SAY_TEXT4 = 3, + SAY_TEXT5 = 4, + SAY_TEXT6 = 5 }; //TODO: implement quest part of event (different end boss) @@ -186,12 +186,12 @@ public: switch (waypointId) { case 0: - DoScriptText(SCRIPT_TEXT1, me);//2 + Talk(SAY_TEXT1); CanWalk = false; Event_Timer = 5000; break; case 1: - DoScriptText(SCRIPT_TEXT2, me);//4 + Talk(SAY_TEXT2); CanWalk = false; Event_Timer = 5000; break; @@ -199,10 +199,10 @@ public: CanWalk = false; break; case 3: - DoScriptText(SCRIPT_TEXT3, me);//5 + Talk(SAY_TEXT3); break; case 4: - DoScriptText(SCRIPT_TEXT4, me);//6 + Talk(SAY_TEXT4); CanWalk = false; Event_Timer = 5000; break; @@ -272,7 +272,7 @@ public: switch (EventPhase) { case 0: - DoScriptText(SCRIPT_TEXT5, me);//1 + Talk(SAY_TEXT5); HandleGameObject(DATA_ARENA4, false); Start(false, false); CanWalk = true; @@ -307,7 +307,7 @@ public: case 7: me->SetVisible(true); HandleGameObject(DATA_ARENA1, false); - DoScriptText(SCRIPT_TEXT6, me);//4 + Talk(SAY_TEXT6); CanWalk = true; Event_Timer = 0; break; @@ -1178,7 +1178,7 @@ public: // npc_rocknot enum RocknotSays { - SAY_GOT_BEER = -1230000 + SAY_GOT_BEER = 0 }; enum RocknotSpells @@ -1215,7 +1215,7 @@ public: //keep track of amount in instance script, returns SPECIAL if amount ok and event in progress if (instance->GetData(TYPE_BAR) == SPECIAL) { - DoScriptText(SAY_GOT_BEER, creature); + creature->AI()->Talk(SAY_GOT_BEER); creature->CastSpell(creature, SPELL_DRUNKEN_RAGE, false); if (npc_escortAI* escortAI = CAST_AI(npc_rocknot::npc_rocknotAI, creature->AI())) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp index 204fa3177e7..bad4d8735b7 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp @@ -22,8 +22,8 @@ enum Yells { - SAY_AGGRO = -1230001, - SAY_SLAY = -1230002 + SAY_AGGRO = 0, + SAY_SLAY = 1 }; enum Spells @@ -63,13 +63,13 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); me->CallForHelp(VISIBLE_RANGE); } void KilledUnit(Unit* /*victim*/) { - DoScriptText(SAY_SLAY, me); + Talk(SAY_SLAY); } void JustDied(Unit* /*killer*/) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp index 40f8b2507e3..2aab7739d8d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp @@ -19,10 +19,11 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" -enum Spells +enum Grizzle { - SPELL_GROUNDTREMOR = 6524, - SPELL_FRENZY = 28371 + SPELL_GROUNDTREMOR = 6524, + SPELL_FRENZY = 28371, + EMOTE_FRENZY_KILL = 0 }; class boss_grizzle : public CreatureScript @@ -69,7 +70,7 @@ public: if (Frenzy_Timer <= diff) { DoCast(me, SPELL_FRENZY); - DoScriptText(EMOTE_GENERIC_FRENZY_KILL, me); + Talk(EMOTE_FRENZY_KILL); Frenzy_Timer = 15000; } else Frenzy_Timer -= diff; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index eec520f04e2..22a26fd4389 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -29,45 +29,55 @@ EndScriptData */ #include "WorldPacket.h" #include "Opcodes.h" -#define SAY_AGGRO -1585023 //This yell should be done when the room is cleared. For now, set it as a movelineofsight yell. -#define SAY_PHOENIX -1585024 -#define SAY_FLAMESTRIKE -1585025 -#define SAY_GRAVITY_LAPSE -1585026 -#define SAY_TIRED -1585027 -#define SAY_RECAST_GRAVITY -1585028 -#define SAY_DEATH -1585029 +enum Says +{ + SAY_AGGRO = 0, //This yell should be done when the room is cleared. For now, set it as a movelineofsight yell. + SAY_PHOENIX = 1, + SAY_FLAMESTRIKE = 2, + SAY_GRAVITY_LAPSE = 3, + SAY_TIRED = 4, + SAY_RECAST_GRAVITY = 5, + SAY_DEATH = 6 +}; -/*** Spells ***/ -// Phase 1 spells -#define SPELL_FIREBALL_NORMAL 44189 // Deals 2700-3300 damage at current target -#define SPELL_FIREBALL_HEROIC 46164 // 4950-6050 +enum Spells +{ + // Phase 1 spells + SPELL_FIREBALL_NORMAL = 44189, // Deals 2700-3300 damage at current target + SPELL_FIREBALL_HEROIC = 46164, // 4950-6050 -#define SPELL_PHOENIX 44194 // Summons a phoenix (Doesn't work?) -#define SPELL_PHOENIX_BURN 44197 // A spell Phoenix uses to damage everything around -#define SPELL_REBIRTH_DMG 44196 // DMG if a Phoenix rebirth happen + SPELL_PHOENIX = 44194, // Summons a phoenix (Doesn't work?) + SPELL_PHOENIX_BURN = 44197, // A spell Phoenix uses to damage everything around + SPELL_REBIRTH_DMG = 44196, // DMG if a Phoenix rebirth happen -#define SPELL_FLAMESTRIKE1_NORMAL 44190 // Damage part -#define SPELL_FLAMESTRIKE1_HEROIC 46163 // Heroic damage part -#define SPELL_FLAMESTRIKE2 44191 // Flamestrike indicator before the damage -#define SPELL_FLAMESTRIKE3 44192 // Summons the trigger + animation (projectile) + SPELL_FLAMESTRIKE1_NORMAL = 44190, // Damage part + SPELL_FLAMESTRIKE1_HEROIC = 46163, // Heroic damage part + SPELL_FLAMESTRIKE2 = 44191, // Flamestrike indicator before the damage + SPELL_FLAMESTRIKE3 = 44192, // Summons the trigger + animation (projectile) -#define SPELL_SHOCK_BARRIER 46165 // Heroic only; 10k damage shield, followed by Pyroblast -#define SPELL_PYROBLAST 36819 // Heroic only; 45-55k fire damage + SPELL_SHOCK_BARRIER = 46165, // Heroic only; 10k damage shield, followed by Pyroblast + SPELL_PYROBLAST = 36819, // Heroic only; 45-55k fire damage // Phase 2 spells -#define SPELL_GRAVITY_LAPSE_INITIAL 44224 // Cast at the beginning of every Gravity Lapse -#define SPELL_GRAVITY_LAPSE_CHANNEL 44251 // Channeled; blue beam animation to every enemy in range -#define SPELL_TELEPORT_CENTER 44218 // Should teleport people to the center. Requires DB entry in spell_target_position. -#define SPELL_GRAVITY_LAPSE_FLY 44227 // Hastens flyspeed and allows flying for 1 minute. For some reason removes 44226. -#define SPELL_GRAVITY_LAPSE_DOT 44226 // Knocks up in the air and applies a 300 DPS DoT. -#define SPELL_ARCANE_SPHERE_PASSIVE 44263 // Passive auras on Arcane Spheres -#define SPELL_POWER_FEEDBACK 44233 // Stuns him, making him take 50% more damage for 10 seconds. Cast after Gravity Lapse - -/*** Creatures ***/ -#define CREATURE_PHOENIX 24674 -#define CREATURE_PHOENIX_EGG 24675 -#define CREATURE_ARCANE_SPHERE 24708 + SPELL_GRAVITY_LAPSE_INITIAL = 44224, // Cast at the beginning of every Gravity Lapse + SPELL_GRAVITY_LAPSE_CHANNEL = 44251, // Channeled; blue beam animation to every enemy in range + SPELL_TELEPORT_CENTER = 44218, // Should teleport people to the center. Requires DB entry in spell_target_position. + SPELL_GRAVITY_LAPSE_FLY = 44227, // Hastens flyspeed and allows flying for 1 minute. For some reason removes 44226. + SPELL_GRAVITY_LAPSE_DOT = 44226, // Knocks up in the air and applies a 300 DPS DoT. + SPELL_ARCANE_SPHERE_PASSIVE = 44263, // Passive auras on Arcane Spheres + SPELL_POWER_FEEDBACK = 44233 // Stuns him, making him take 50% more damage for 10 seconds. Cast after Gravity Lapse +}; + + + +enum Creatures +{ + CREATURE_PHOENIX = 24674, + CREATURE_PHOENIX_EGG = 24675, + CREATURE_ARCANE_SPHERE = 24708 +}; + /** Locations **/ float KaelLocations[3][2]= @@ -146,7 +156,7 @@ public: void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); if (!instance) return; @@ -176,7 +186,7 @@ public: { if (!HasTaunted && me->IsWithinDistInMap(who, 40.0f)) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); HasTaunted = true; } @@ -315,7 +325,7 @@ public: Phoenix->AI()->AttackStart(target); } - DoScriptText(SAY_PHOENIX, me); + Talk(SAY_PHOENIX); PhoenixTimer = 60000; } else PhoenixTimer -= diff; @@ -327,7 +337,7 @@ public: me->InterruptSpell(CURRENT_CHANNELED_SPELL); me->InterruptSpell(CURRENT_GENERIC_SPELL); DoCast(target, SPELL_FLAMESTRIKE3, true); - DoScriptText(SAY_FLAMESTRIKE, me); + Talk(SAY_FLAMESTRIKE); } FlameStrikeTimer = urand(15000, 25000); } else FlameStrikeTimer -= diff; @@ -357,14 +367,14 @@ public: case 0: if (FirstGravityLapse) // Different yells at 50%, and at every following Gravity Lapse { - DoScriptText(SAY_GRAVITY_LAPSE, me); + Talk(SAY_GRAVITY_LAPSE); FirstGravityLapse = false; if (instance) instance->SetData(DATA_KAELTHAS_STATUES, 1); } else - DoScriptText(SAY_RECAST_GRAVITY, me); + Talk(SAY_RECAST_GRAVITY); DoCast(me, SPELL_GRAVITY_LAPSE_INITIAL); GravityLapseTimer = 2000 + diff;// Don't interrupt the visual spell @@ -407,7 +417,7 @@ public: case 4: me->InterruptNonMeleeSpells(false); - DoScriptText(SAY_TIRED, me); + Talk(SAY_TIRED); DoCast(me, SPELL_POWER_FEEDBACK); RemoveGravityLapse(); GravityLapseTimer = 10000; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 2af417381a5..b2cf2336024 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -34,25 +34,25 @@ struct Speech static Speech LackeyDeath[]= { - {-1585013}, - {-1585014}, - {-1585015}, - {-1585016}, + {1}, + {2}, + {3}, + {4}, }; static Speech PlayerDeath[]= { - {-1585017}, - {-1585018}, - {-1585019}, - {-1585020}, - {-1585021}, + {5}, + {6}, + {7}, + {8}, + {9}, }; enum eEnums { - SAY_AGGRO = -1585012, - SAY_DEATH = -1585022, + SAY_AGGRO = 0, + SAY_DEATH = 10, SPELL_DISPEL_MAGIC = 27609, SPELL_FLASH_HEAL = 17843, @@ -144,7 +144,7 @@ public: void EnterCombat(Unit* who) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i) { @@ -216,7 +216,7 @@ public: if (victim->GetTypeId() != TYPEID_PLAYER) return; - DoScriptText(PlayerDeath[PlayersKilled].id, me); + Talk(PlayerDeath[PlayersKilled].id); if (PlayersKilled < 4) ++PlayersKilled; @@ -224,7 +224,7 @@ public: void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); if (!instance) return; @@ -415,7 +415,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI return; //should delrissa really yell if dead? - DoScriptText(LackeyDeath[uiLackeyDeathCount].id, pDelrissa); + pDelrissa->AI()->Talk(LackeyDeath[uiLackeyDeathCount].id); instance->SetData(DATA_DELRISSA_DEATH_COUNT, SPECIAL); diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index 7b79c18239e..4d9bd1f2192 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -27,30 +27,37 @@ EndScriptData */ #include "ScriptedCreature.h" #include "magisters_terrace.h" -#define SAY_AGGRO -1585000 -#define SAY_ENERGY -1585001 -#define SAY_EMPOWERED -1585002 -#define SAY_KILL_1 -1585003 -#define SAY_KILL_2 -1585004 -#define SAY_DEATH -1585005 -#define EMOTE_CRYSTAL -1585006 - -//Crystal effect spells -#define SPELL_FEL_CRYSTAL_COSMETIC 44374 -#define SPELL_FEL_CRYSTAL_DUMMY 44329 -#define SPELL_FEL_CRYSTAL_VISUAL 44355 -#define SPELL_MANA_RAGE 44320 // This spell triggers 44321, which changes scale and regens mana Requires an entry in spell_script_target +enum Says +{ + SAY_AGGRO = 0, + SAY_ENERGY = 1, + SAY_EMPOWERED = 2, + SAY_KILL = 3, + SAY_DEATH = 4, + EMOTE_CRYSTAL = 5 +}; -//Selin's spells -#define SPELL_DRAIN_LIFE 44294 -#define SPELL_FEL_EXPLOSION 44314 +enum Spells +{ + //Crystal effect spells + SPELL_FEL_CRYSTAL_COSMETIC = 44374, + SPELL_FEL_CRYSTAL_DUMMY = 44329, + SPELL_FEL_CRYSTAL_VISUAL = 44355, + SPELL_MANA_RAGE = 44320, // This spell triggers 44321, which changes scale and regens mana Requires an entry in spell_script_target -#define SPELL_DRAIN_MANA 46153 // Heroic only + //Selin's spells + SPELL_DRAIN_LIFE = 44294, + SPELL_FEL_EXPLOSION = 44314, -#define CRYSTALS_NUMBER 5 -#define DATA_CRYSTALS 6 + SPELL_DRAIN_MANA = 46153 // Heroic only +}; -#define CREATURE_FEL_CRYSTAL 24722 +enum Misc +{ + CRYSTALS_NUMBER = 5, + DATA_CRYSTALS = 6, + CREATURE_FEL_CRYSTAL = 24722 +}; class boss_selin_fireheart : public CreatureScript { @@ -161,8 +168,8 @@ public: } if (CrystalChosen) { - DoScriptText(SAY_ENERGY, me); - DoScriptText(EMOTE_CRYSTAL, me); + Talk(SAY_ENERGY); + Talk(EMOTE_CRYSTAL); CrystalChosen->CastSpell(CrystalChosen, SPELL_FEL_CRYSTAL_COSMETIC, true); @@ -192,14 +199,14 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); if (instance) instance->SetData(DATA_SELIN_EVENT, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) { - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void MovementInform(uint32 type, uint32 id) @@ -226,7 +233,7 @@ public: void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); if (!instance) return; @@ -293,7 +300,7 @@ public: IsDraining = false; DrainingCrystal = false; - DoScriptText(SAY_EMPOWERED, me); + Talk(SAY_EMPOWERED); Unit* CrystalChosen = Unit::GetUnit(*me, CrystalGUID); if (CrystalChosen && CrystalChosen->isAlive()) diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 34682683ee3..31821623878 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -29,11 +29,11 @@ EndScriptData */ enum eEnums { - SAY_AGGRO = -1585007, - SAY_ENERGY = -1585008, - SAY_OVERLOAD = -1585009, - SAY_KILL = -1585010, - EMOTE_DISCHARGE_ENERGY = -1585011, + SAY_AGGRO = 0, + SAY_ENERGY = 1, + SAY_OVERLOAD = 2, + SAY_KILL = 3, + EMOTE_DISCHARGE_ENERGY = 4, //is this text for real? //#define SAY_DEATH "What...happen...ed." @@ -99,7 +99,7 @@ public: void KilledUnit(Unit* /*victim*/) { - DoScriptText(SAY_KILL, me); + Talk(SAY_KILL); } void JustDied(Unit* /*killer*/) @@ -110,7 +110,7 @@ public: void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); if (instance) instance->SetData(DATA_VEXALLUS_EVENT, IN_PROGRESS); @@ -144,8 +144,8 @@ public: else ++IntervalHealthAmount; - DoScriptText(SAY_ENERGY, me); - DoScriptText(EMOTE_DISCHARGE_ENERGY, me); + Talk(SAY_ENERGY); + Talk(EMOTE_DISCHARGE_ENERGY); if (IsHeroic()) { diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp index fa99078cedb..5e5cc0ffab8 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp @@ -30,7 +30,7 @@ EndScriptData */ enum Texts { - EMOTE_LOWHP = -1409002, + EMOTE_LOWHP = 0, }; enum Spells @@ -149,7 +149,7 @@ class mob_core_rager : public CreatureScript if (pGolemagg->isAlive()) { me->AddAura(SPELL_GOLEMAGG_TRUST, me); - DoScriptText(EMOTE_LOWHP, me); + Talk(EMOTE_LOWHP); me->SetFullHealth(); } } diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp index 9d48d04cf07..edd8905ff4a 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp @@ -29,17 +29,17 @@ EndScriptData */ enum Texts { - SAY_REINFORCEMENTS1 = -1409013, - SAY_REINFORCEMENTS2 = -1409014, - SAY_HAND = -1409015, - SAY_WRATH = -1409016, - SAY_KILL = -1409017, - SAY_MAGMABURST = -1409018, - SAY_SUMMON_MAJ = -1409008, - SAY_ARRIVAL1_RAG = -1409009, - SAY_ARRIVAL2_MAJ = -1409010, - SAY_ARRIVAL3_RAG = -1409011, - SAY_ARRIVAL5_RAG = -1409012, + SAY_SUMMON_MAJ = 0, + SAY_ARRIVAL1_RAG = 1, + SAY_ARRIVAL2_MAJ = 2, + SAY_ARRIVAL3_RAG = 3, + SAY_ARRIVAL5_RAG = 4, + SAY_REINFORCEMENTS1 = 5, + SAY_REINFORCEMENTS2 = 6, + SAY_HAND = 7, + SAY_WRATH = 8, + SAY_KILL = 9, + SAY_MAGMABURST = 10 }; enum Spells @@ -112,7 +112,7 @@ class boss_ragnaros : public CreatureScript void KilledUnit(Unit* /*victim*/) { if (urand(0, 99) < 25) - DoScriptText(SAY_KILL, me); + Talk(SAY_KILL); } void UpdateAI(const uint32 diff) @@ -137,16 +137,16 @@ class boss_ragnaros : public CreatureScript switch (eventId) { case EVENT_INTRO_1: - DoScriptText(SAY_ARRIVAL1_RAG, me); + Talk(SAY_ARRIVAL1_RAG); break; case EVENT_INTRO_2: - DoScriptText(SAY_ARRIVAL3_RAG, me); + Talk(SAY_ARRIVAL3_RAG); break; case EVENT_INTRO_3: me->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H); break; case EVENT_INTRO_4: - DoScriptText(SAY_ARRIVAL5_RAG, me); + Talk(SAY_ARRIVAL5_RAG); if (instance) if (Creature* executus = Unit::GetCreature(*me, instance->GetData64(BOSS_MAJORDOMO_EXECUTUS))) me->Kill(executus); @@ -205,13 +205,13 @@ class boss_ragnaros : public CreatureScript case EVENT_WRATH_OF_RAGNAROS: DoCastVictim(SPELL_WRATH_OF_RAGNAROS); if (urand(0, 1)) - DoScriptText(SAY_WRATH, me); + Talk(SAY_WRATH); events.ScheduleEvent(EVENT_WRATH_OF_RAGNAROS, 25000); break; case EVENT_HAND_OF_RAGNAROS: DoCast(me, SPELL_HAND_OF_RAGNAROS); if (urand(0, 1)) - DoScriptText(SAY_HAND, me); + Talk(SAY_HAND); events.ScheduleEvent(EVENT_HAND_OF_RAGNAROS, 20000); break; case EVENT_LAVA_BURST: @@ -229,7 +229,7 @@ class boss_ragnaros : public CreatureScript if (!_hasYelledMagmaBurst) { //Say our dialog - DoScriptText(SAY_MAGMABURST, me); + Talk(SAY_MAGMABURST); _hasYelledMagmaBurst = true; } } @@ -256,7 +256,7 @@ class boss_ragnaros : public CreatureScript if (!_hasSubmergedOnce) { - DoScriptText(SAY_REINFORCEMENTS1, me); + Talk(SAY_REINFORCEMENTS1); // summon 8 elementals for (uint8 i = 0; i < 8; ++i) @@ -272,7 +272,7 @@ class boss_ragnaros : public CreatureScript } else { - DoScriptText(SAY_REINFORCEMENTS2, me); + Talk(SAY_REINFORCEMENTS2); for (uint8 i = 0; i < 8; ++i) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) diff --git a/src/server/scripts/EasternKingdoms/ghostlands.cpp b/src/server/scripts/EasternKingdoms/ghostlands.cpp index 5d97735ab5d..ddd3b0f423a 100644 --- a/src/server/scripts/EasternKingdoms/ghostlands.cpp +++ b/src/server/scripts/EasternKingdoms/ghostlands.cpp @@ -111,18 +111,18 @@ public: enum eEnums { - SAY_START = -1000140, - SAY_PROGRESS1 = -1000141, - SAY_PROGRESS2 = -1000142, - SAY_PROGRESS3 = -1000143, - SAY_END1 = -1000144, - SAY_END2 = -1000145, - SAY_CAPTAIN_ANSWER = -1000146, + SAY_START = 0, + SAY_PROGRESS1 = 1, + SAY_PROGRESS2 = 2, + SAY_PROGRESS3 = 3, + SAY_END1 = 4, + SAY_END2 = 5, + SAY_CAPTAIN_ANSWER = 0, QUEST_ESCAPE_FROM_THE_CATACOMBS = 9212, - GO_CAGE = 181152, - NPC_CAPTAIN_HELIOS = 16220, - FACTION_SMOON_E = 1603, + GO_CAGE = 181152, + NPC_CAPTAIN_HELIOS = 16220, + FACTION_SMOON_E = 1603 }; class npc_ranger_lilatha : public CreatureScript @@ -146,18 +146,18 @@ public: me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); if (GameObject* Cage = me->FindNearestGameObject(GO_CAGE, 20)) Cage->SetGoState(GO_STATE_ACTIVE); - DoScriptText(SAY_START, me, player); + Talk(SAY_START, player->GetGUID()); break; case 5: - DoScriptText(SAY_PROGRESS1, me, player); + Talk(SAY_PROGRESS1, player->GetGUID()); break; case 11: - DoScriptText(SAY_PROGRESS2, me, player); + Talk(SAY_PROGRESS2, player->GetGUID()); me->SetOrientation(4.762841f); break; case 18: { - DoScriptText(SAY_PROGRESS3, me, player); + Talk(SAY_PROGRESS3, player->GetGUID()); Creature* Summ1 = me->SummonCreature(16342, 7627.083984f, -7532.538086f, 152.128616f, 1.082733f, TEMPSUMMON_DEAD_DESPAWN, 0); Creature* Summ2 = me->SummonCreature(16343, 7620.432129f, -7532.550293f, 152.454865f, 0.827478f, TEMPSUMMON_DEAD_DESPAWN, 0); if (Summ1 && Summ2) @@ -180,14 +180,14 @@ public: break; case 32: me->SetOrientation(2.978281f); - DoScriptText(SAY_END1, me, player); + Talk(SAY_END1, player->GetGUID()); break; case 33: me->SetOrientation(5.858011f); - DoScriptText(SAY_END2, me, player); - Unit* CaptainHelios = me->FindNearestCreature(NPC_CAPTAIN_HELIOS, 50); + Talk(SAY_END2, player->GetGUID()); + Creature* CaptainHelios = me->FindNearestCreature(NPC_CAPTAIN_HELIOS, 50); if (CaptainHelios) - DoScriptText(SAY_CAPTAIN_ANSWER, CaptainHelios, player); + CaptainHelios->AI()->Talk(SAY_CAPTAIN_ANSWER, player->GetGUID()); break; } } diff --git a/src/server/scripts/EasternKingdoms/silvermoon_city.cpp b/src/server/scripts/EasternKingdoms/silvermoon_city.cpp index 28af25d39de..d8e9a9ae49a 100644 --- a/src/server/scripts/EasternKingdoms/silvermoon_city.cpp +++ b/src/server/scripts/EasternKingdoms/silvermoon_city.cpp @@ -37,7 +37,7 @@ EndContentData */ #######*/ enum eStillbladeData { - SAY_HEAL = -1000193, + SAY_HEAL = 0, QUEST_REDEEMING_THE_DEAD = 9685, SPELL_SHIMMERING_VESSEL = 31225, @@ -98,7 +98,7 @@ public: me->SetStandState(UNIT_STAND_STATE_STAND); me->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0); //me->RemoveAllAuras(); - DoScriptText(SAY_HEAL, me); + Talk(SAY_HEAL); spellHit = true; } } diff --git a/src/server/scripts/EasternKingdoms/stormwind_city.cpp b/src/server/scripts/EasternKingdoms/stormwind_city.cpp index 188f2c77fa1..188b3dcd2b1 100644 --- a/src/server/scripts/EasternKingdoms/stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/stormwind_city.cpp @@ -206,13 +206,13 @@ public: 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, + SAY_GUARD_2 = 0, + SAY_LESCOVAR_2 = 0, + SAY_LESCOVAR_3 = 1, + SAY_LESCOVAR_4 = 2, + SAY_MARZON_1 = 0, + SAY_MARZON_2 = 1, + SAY_TYRION_2 = 0, NPC_STORMWIND_ROYAL = 1756, NPC_MARZON_BLADE = 1755, @@ -277,7 +277,7 @@ public: { case 14: SetEscortPaused(true); - DoScriptText(SAY_LESCOVAR_2, me); + Talk(SAY_LESCOVAR_2); uiTimer = 3000; uiPhase = 1; break; @@ -318,7 +318,7 @@ public: { case 1: if (Creature* pGuard = me->FindNearestCreature(NPC_STORMWIND_ROYAL, 8.0f, true)) - DoScriptText(SAY_GUARD_2, pGuard); + pGuard->AI()->Talk(SAY_GUARD_2); uiTimer = 3000; uiPhase = 2; break; @@ -333,18 +333,18 @@ public: uiPhase = 0; break; case 4: - DoScriptText(SAY_LESCOVAR_3, me); + Talk(SAY_LESCOVAR_3); uiTimer = 0; uiPhase = 0; break; case 5: if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID)) - DoScriptText(SAY_MARZON_1, pMarzon); + pMarzon->AI()->Talk(SAY_MARZON_1); uiTimer = 3000; uiPhase = 6; break; case 6: - DoScriptText(SAY_LESCOVAR_4, me); + Talk(SAY_LESCOVAR_4); if (Player* player = GetPlayerForEscort()) player->AreaExploredOrEventHappens(QUEST_THE_ATTACK); uiTimer = 2000; @@ -352,7 +352,7 @@ public: break; case 7: if (Creature* pTyrion = me->FindNearestCreature(NPC_TYRION, 20.0f, true)) - DoScriptText(SAY_TYRION_2, pTyrion); + pTyrion->AI()->Talk(SAY_TYRION_2); if (Creature* pMarzon = Unit::GetCreature(*me, MarzonGUID)) pMarzon->setFaction(14); me->setFaction(14); @@ -400,7 +400,7 @@ public: void EnterCombat(Unit* who) { - DoScriptText(SAY_MARZON_2, me); + Talk(SAY_MARZON_2); if (me->isSummon()) { @@ -464,14 +464,14 @@ public: 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, + SAY_QUEST_ACCEPT_ATTACK = 0, + SAY_SPYBOT_1 = 1, + SAY_SPYBOT_2 = 2, + SAY_SPYBOT_3 = 3, + SAY_SPYBOT_4 = 4, + SAY_TYRION_1 = 0, + SAY_GUARD_1 = 0, + SAY_LESCOVAR_1 = 0, NPC_PRIESTESS_TYRIONA = 7779, NPC_LORD_GREGOR_LESCOVAR = 1754, @@ -511,13 +511,13 @@ public: break; case 5: SetEscortPaused(true); - DoScriptText(SAY_SPYBOT_1, me); + Talk(SAY_SPYBOT_1); uiTimer = 2000; uiPhase = 5; break; case 17: SetEscortPaused(true); - DoScriptText(SAY_SPYBOT_3, me); + Talk(SAY_SPYBOT_3); uiTimer = 3000; uiPhase = 8; break; @@ -533,13 +533,13 @@ public: switch (uiPhase) { case 1: - DoScriptText(SAY_QUEST_ACCEPT_ATTACK, me); + Talk(SAY_QUEST_ACCEPT_ATTACK); uiTimer = 3000; uiPhase = 2; break; case 2: if (Creature* pTyrion = me->FindNearestCreature(NPC_TYRION, 10.0f)) - DoScriptText(SAY_TYRION_1, pTyrion); + pTyrion->AI()->Talk(SAY_TYRION_1); uiTimer = 3000; uiPhase = 3; break; @@ -555,12 +555,12 @@ public: break; case 5: if (Creature* pGuard = me->FindNearestCreature(NPC_STORMWIND_ROYAL, 10.0f, true)) - DoScriptText(SAY_GUARD_1, pGuard); + pGuard->AI()->Talk(SAY_GUARD_1); uiTimer = 3000; uiPhase = 6; break; case 6: - DoScriptText(SAY_SPYBOT_2, me); + Talk(SAY_SPYBOT_2); uiTimer = 3000; uiPhase = 7; break; @@ -571,12 +571,12 @@ public: break; case 8: if (Creature* pLescovar = me->FindNearestCreature(NPC_LORD_GREGOR_LESCOVAR, 10.0f)) - DoScriptText(SAY_LESCOVAR_1, pLescovar); + pLescovar->AI()->Talk(SAY_LESCOVAR_1); uiTimer = 3000; uiPhase = 9; break; case 9: - DoScriptText(SAY_SPYBOT_4, me); + Talk(SAY_SPYBOT_4); uiTimer = 3000; uiPhase = 10; break; diff --git a/src/server/scripts/EasternKingdoms/westfall.cpp b/src/server/scripts/EasternKingdoms/westfall.cpp index c6cf1b4361c..16ba171928c 100644 --- a/src/server/scripts/EasternKingdoms/westfall.cpp +++ b/src/server/scripts/EasternKingdoms/westfall.cpp @@ -39,11 +39,11 @@ EndContentData */ enum eEnums { - SAY_DS_START = -1000293, - SAY_DS_DOWN_1 = -1000294, - SAY_DS_DOWN_2 = -1000295, - SAY_DS_DOWN_3 = -1000296, - SAY_DS_PROLOGUE = -1000297, + SAY_DS_START = 0, + SAY_DS_DOWN_1 = 1, + SAY_DS_DOWN_2 = 2, + SAY_DS_DOWN_3 = 3, + SAY_DS_PROLOGUE = 4, SPELL_SHOOT = 6660, QUEST_TOME_VALOR = 1651, @@ -60,7 +60,7 @@ public: { if (quest->GetQuestId() == QUEST_TOME_VALOR) { - DoScriptText(SAY_DS_START, creature); + creature->AI()->Talk(SAY_DS_START); if (npc_escortAI* pEscortAI = CAST_AI(npc_daphne_stilwell::npc_daphne_stilwellAI, creature->AI())) pEscortAI->Start(true, true, player->GetGUID()); @@ -88,13 +88,13 @@ public: switch (uiWPHolder) { case 7: - DoScriptText(SAY_DS_DOWN_1, me); + Talk(SAY_DS_DOWN_1); break; case 8: - DoScriptText(SAY_DS_DOWN_2, me); + Talk(SAY_DS_DOWN_2); break; case 9: - DoScriptText(SAY_DS_DOWN_3, me); + Talk(SAY_DS_DOWN_3); break; } } @@ -143,7 +143,7 @@ public: SetRun(false); break; case 11: - DoScriptText(SAY_DS_PROLOGUE, me); + Talk(SAY_DS_PROLOGUE); break; case 13: SetEquipmentSlots(true); @@ -197,12 +197,14 @@ public: /*###### ## npc_defias_traitor ######*/ +enum DefiasSays +{ + SAY_START = 0, + SAY_PROGRESS = 1, + SAY_END = 2, + SAY_AGGRO = 3 +}; -#define SAY_START -1000101 -#define SAY_PROGRESS -1000102 -#define SAY_END -1000103 -#define SAY_AGGRO_1 -1000104 -#define SAY_AGGRO_2 -1000105 #define QUEST_DEFIAS_BROTHERHOOD 155 @@ -218,7 +220,7 @@ public: if (npc_escortAI* pEscortAI = CAST_AI(npc_defias_traitor::npc_defias_traitorAI, creature->AI())) pEscortAI->Start(true, true, player->GetGUID()); - DoScriptText(SAY_START, creature, player); + creature->AI()->Talk(SAY_START, player->GetGUID()); } return true; @@ -245,10 +247,10 @@ public: SetRun(false); break; case 36: - DoScriptText(SAY_PROGRESS, me, player); + Talk(SAY_PROGRESS, player->GetGUID()); break; case 44: - DoScriptText(SAY_END, me, player); + Talk(SAY_END, player->GetGUID()); player->GroupEventHappens(QUEST_DEFIAS_BROTHERHOOD, me); break; } @@ -256,7 +258,7 @@ public: void EnterCombat(Unit* who) { - DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me, who); + Talk(SAY_AGGRO, who->GetGUID()); } void Reset() {} -- cgit v1.2.3 From 7fcdbdd3aebe0372846879866a75ee0b201b87b3 Mon Sep 17 00:00:00 2001 From: kaelima Date: Fri, 23 Nov 2012 20:17:19 +0100 Subject: Core/Scripts: Fix typo in boss_lethon script --- src/server/scripts/World/boss_emerald_dragons.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 65677959135..fc264d01fea 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -366,7 +366,7 @@ class boss_lethon : public CreatureScript { Position targetPos; target->GetPosition(&targetPos); - me->GetMap()->SummonCreature(NPC_SPIRIT_SHADE, targetPos, NULL, 50000, (Unit*)this); + me->SummonCreature(NPC_SPIRIT_SHADE, targetPos, NULL, 50000); } } -- cgit v1.2.3 From fc974d6fbef152faf2f3e025afe6303f6780c0ea Mon Sep 17 00:00:00 2001 From: kaelima Date: Fri, 23 Nov 2012 20:18:55 +0100 Subject: Core/Movement: Remove deprecated method Creature::AI_SendMoveToPacket. --- src/server/game/Entities/Creature/Creature.cpp | 24 ------------------------ src/server/game/Entities/Creature/Creature.h | 1 - src/server/scripts/Kalimdor/azshara.cpp | 12 ++++++------ 3 files changed, 6 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 2300876048b..911ccd25728 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -955,30 +955,6 @@ bool Creature::isCanTrainingAndResetTalentsOf(Player* player) const && player->getClass() == GetCreatureTemplate()->trainer_class; } -void Creature::AI_SendMoveToPacket(float x, float y, float z, uint32 time, uint32 /*MovementFlags*/, uint8 /*type*/) -{ - /* uint32 timeElap = getMSTime(); - if ((timeElap - m_startMove) < m_moveTime) - { - oX = (dX - oX) * ((timeElap - m_startMove) / m_moveTime); - oY = (dY - oY) * ((timeElap - m_startMove) / m_moveTime); - } - else - { - oX = dX; - oY = dY; - } - - dX = x; - dY = y; - m_orientation = atan2((oY - dY), (oX - dX)); - - m_startMove = getMSTime(); - m_moveTime = time;*/ - float speed = GetDistance(x, y, z) / ((float)time * 0.001f); - MonsterMoveWithSpeed(x, y, z, speed); -} - Player* Creature::GetLootRecipient() const { if (!m_lootRecipient) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index c0703196075..228485d001e 100755 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -520,7 +520,6 @@ class Creature : public Unit, public GridObject, public MapCreature bool AIM_Initialize(CreatureAI* ai = NULL); void Motion_Initialize(); - void AI_SendMoveToPacket(float x, float y, float z, uint32 time, uint32 MovementFlags, uint8 type); CreatureAI* AI() const { return (CreatureAI*)i_AI; } bool SetWalk(bool enable); diff --git a/src/server/scripts/Kalimdor/azshara.cpp b/src/server/scripts/Kalimdor/azshara.cpp index c8eb5daef68..213918db338 100644 --- a/src/server/scripts/Kalimdor/azshara.cpp +++ b/src/server/scripts/Kalimdor/azshara.cpp @@ -358,14 +358,14 @@ public: if (TeleportTimer <= diff) { - //temp solution - unit can't be teleported by core using spelleffect 5, only players - if (me->GetMap()) - { - me->SetPosition(3706.39f, -3969.15f, 35.9118f, 0); - me->AI_SendMoveToPacket(3706.39f, -3969.15f, 35.9118f, 0, 0, 0); - } + // temp solution - unit can't be teleported by core using spelleffect 5, only players + DoTeleportTo(3706.39f, -3969.15f, 35.9118f); + //begin swimming and summon depth charges Player* player = Unit::GetPlayer(*me, PlayerGUID); + if (!player) + return; + SendText(MSG_ESCAPE_NOTICE, player); DoCast(me, SPELL_PERIODIC_DEPTH_CHARGE); me->SetUnitMovementFlags(MOVEMENTFLAG_HOVER | MOVEMENTFLAG_SWIMMING); -- cgit v1.2.3 From d2063d2fb3df1e5a19a957cb7bda3bcbff3a6950 Mon Sep 17 00:00:00 2001 From: Shocker Date: Sat, 24 Nov 2012 00:48:21 +0200 Subject: Build fix --- src/server/scripts/World/boss_emerald_dragons.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index fc264d01fea..a8f65b0bc9b 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -366,7 +366,7 @@ class boss_lethon : public CreatureScript { Position targetPos; target->GetPosition(&targetPos); - me->SummonCreature(NPC_SPIRIT_SHADE, targetPos, NULL, 50000); + me->SummonCreature(NPC_SPIRIT_SHADE, targetPos, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 50000); } } -- cgit v1.2.3 From bc95305d579e7dd27830440238a8fa6b986d2cde Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 23 Nov 2012 23:53:36 +0100 Subject: Core/Battlegrounds: Fixed loading StartMaxDist --- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 0604cadd5ee..11a7cf14e73 100755 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -700,8 +700,7 @@ void BattlegroundMgr::CreateInitialBattlegrounds() data.MaxPlayersPerTeam = fields[2].GetUInt16(); data.LevelMin = fields[3].GetUInt8(); data.LevelMax = fields[4].GetUInt8(); - uint8 spawn = fields[9].GetUInt8(); - data.StartMaxDist = float(spawn * spawn); + data.StartMaxDist = fields[9].GetFloat(); data.scriptId = sObjectMgr->GetScriptId(fields[11].GetCString()); data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()]; -- cgit v1.2.3 From eb10226b02ec3cf0370840ebed00315fed566262 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 24 Nov 2012 00:08:15 +0100 Subject: Core/Battlegrounds: Fixed loading StartMaxDist (this time properly) --- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 11a7cf14e73..a0f95e1eaef 100755 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -700,7 +700,8 @@ void BattlegroundMgr::CreateInitialBattlegrounds() data.MaxPlayersPerTeam = fields[2].GetUInt16(); data.LevelMin = fields[3].GetUInt8(); data.LevelMax = fields[4].GetUInt8(); - data.StartMaxDist = fields[9].GetFloat(); + float dist = fields[9].GetFloat(); + data.StartMaxDist = dist * dist; data.scriptId = sObjectMgr->GetScriptId(fields[11].GetCString()); data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()]; -- cgit v1.2.3 From ea60648c880cbc56b318e8690311b1598ed91f3a Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sat, 24 Nov 2012 00:25:56 +0100 Subject: Core: Fix typo --- src/server/game/Chat/Channels/Channel.cpp | 8 ++++---- src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index cba38a3ebf1..8ce7d7d2139 100755 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -297,7 +297,7 @@ void Channel::KickOrBan(Player const* player, std::string const& badname, bool b SendToOne(&data, good); return; } - + Player* bad = sObjectAccessor->FindPlayerByName(badname); uint64 victim = bad ? bad->GetGUID() : 0; if (!victim || !IsOn(victim)) @@ -403,7 +403,7 @@ void Channel::Password(Player const* player, std::string const& pass) SendToOne(&data, guid); return; } - + if (!playersStore[guid].IsModerator() && !AccountMgr::IsGMAccount(player->GetSession()->GetSecurity())) { WorldPacket data; @@ -497,7 +497,7 @@ void Channel::SetOwner(Player const* player, std::string const& newname) Player* newp = sObjectAccessor->FindPlayerByName(newname); uint64 victim = newp ? newp->GetGUID() : 0; - + if (!victim || !IsOn(victim) || (newp->GetTeam() != player->GetTeam() && !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL))) { @@ -615,7 +615,7 @@ void Channel::Say(uint64 guid, std::string const& what, uint32 lang) SendToOne(&data, guid); return; } - + if (playersStore[guid].IsMuted()) { WorldPacket data; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 77c1e3bc066..8f410cf62bc 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1135,7 +1135,7 @@ public: case 49: if (Creature* temp = Unit::GetCreature(*me, uiTirionGUID)) - Talk(SAY_LIGHT_OF_DAWN54); + temp->AI()->Talk(SAY_LIGHT_OF_DAWN54); JumpToNextStep(4000); break; -- cgit v1.2.3 From e83c5d1a0f830b18bf0fdbace21c6c55cbf6b3a7 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sat, 24 Nov 2012 02:45:48 +0100 Subject: Core/Conditions: use proper SpellCastResult instead of Notification when CONDITION_SOURCE_TYPE_SPELL fails --- sql/updates/world/2012_11_24_00_conditions.sql | 34 ++++++++++++++++++++++++++ src/server/game/Conditions/ConditionMgr.cpp | 24 +++++++++++++----- src/server/game/Conditions/ConditionMgr.h | 2 ++ src/server/game/Miscellaneous/Language.h | 3 +-- src/server/game/Spells/Spell.cpp | 15 ++++-------- src/server/scripts/Commands/cs_misc.cpp | 22 ++++++++--------- 6 files changed, 70 insertions(+), 30 deletions(-) create mode 100644 sql/updates/world/2012_11_24_00_conditions.sql (limited to 'src') diff --git a/sql/updates/world/2012_11_24_00_conditions.sql b/sql/updates/world/2012_11_24_00_conditions.sql new file mode 100644 index 00000000000..1a5e5963c8e --- /dev/null +++ b/sql/updates/world/2012_11_24_00_conditions.sql @@ -0,0 +1,34 @@ +ALTER TABLE `conditions` + ADD COLUMN `ErrorType` MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL AFTER `NegativeCondition`; + +/* + * trinity_string + * 63 - You can't do that right now. -> SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 173 + * 64 - You cannot use that item here. -> SPELL_CUSTOM_ERROR_CANT_USE_THAT_ITEM = 56 + * SPELL_FAILED_INCORRECT_AREA = 39 + * SPELL_CUSTOM_ERROR_CANT_CALL_WINTERGARDE_HERE = 26 + * SPELL_CUSTOM_ERROR_MUST_TARGET_ICE_HEART_JORMUNGAR = 21 + * SPELL_FAILED_BAD_TARGETS = 12 + * 65 - You must reach level 58 to use this portal. -> SPELL_CUSTOM_ERROR_REQUIRES_LEVEL_58 = 66 + * 97 - don't exist + * 1334 - Requires Maiden of Winter's Breath Lake -> SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_MAIDEN = 61 + * 1335 - You can't use that right now -> SPELL_FAILED_INCORRECT_AREA = 39 + * SPELL_FAILED_TARGET_AURASTATE = 111 + */ + +UPDATE `conditions` SET `ErrorType`=173, `ErrorTextId`=0 WHERE `ErrorType`=0 AND `ErrorTextId`=63; + +UPDATE `conditions` SET `ErrorType`=172, `ErrorTextId`=26 WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=48388; +UPDATE `conditions` SET `ErrorType`= 39, `ErrorTextId`= 0 WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=43209; +UPDATE `conditions` SET `ErrorType`=172, `ErrorTextId`=21 WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=47431; +UPDATE `conditions` SET `ErrorType`= 12, `ErrorTextId`= 0 WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=34367; + +UPDATE `conditions` SET `ErrorType`=172, `ErrorTextId`=66 WHERE `ErrorType`=0 AND `ErrorTextId`=65; +UPDATE `conditions` SET `ErrorType`=172, `ErrorTextId`=61 WHERE `ErrorType`=0 AND `ErrorTextId`=1334; +UPDATE `conditions` SET `ErrorType`= 39, `ErrorTextId`=0 WHERE `ErrorType`=0 AND `ErrorTextId`=1335 AND `ConditionTypeOrReference`=23; +UPDATE `conditions` SET `ErrorType`=111, `ErrorTextId`=0 WHERE `ErrorType`=0 AND `ErrorTextId`=1335 AND `ConditionTypeOrReference`=1; + +UPDATE `conditions` SET `ErrorTextId`=0 WHERE `ErrorType`=0 AND `ErrorTextId`=97; +UPDATE `conditions` SET `ErrorTextId`=0 WHERE `ErrorType`=0 AND `SourceTypeOrReferenceId`=13; + +DELETE FROM `trinity_string` WHERE `entry` IN (63,64,65,97,1334,1335); diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 2f3cb0fbaaf..a27ddeda8ed 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -720,12 +720,11 @@ void ConditionMgr::LoadConditions(bool isReload) } QueryResult result = WorldDatabase.Query("SELECT SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, " - " ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, ErrorTextId, ScriptName FROM conditions"); + " ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, ErrorType, ErrorTextId, ScriptName FROM conditions"); if (!result) { sLog->outError(LOG_FILTER_SQL, ">> Loaded 0 conditions. DB table `conditions` is empty!"); - return; } @@ -736,19 +735,20 @@ void ConditionMgr::LoadConditions(bool isReload) Field* fields = result->Fetch(); Condition* cond = new Condition(); - int32 iSourceTypeOrReferenceId = fields[0].GetInt32(); + int32 iSourceTypeOrReferenceId = fields[0].GetInt32(); cond->SourceGroup = fields[1].GetUInt32(); cond->SourceEntry = fields[2].GetInt32(); cond->SourceId = fields[3].GetInt32(); cond->ElseGroup = fields[4].GetUInt32(); - int32 iConditionTypeOrReference = fields[5].GetInt32(); + int32 iConditionTypeOrReference = fields[5].GetInt32(); cond->ConditionTarget = fields[6].GetUInt8(); cond->ConditionValue1 = fields[7].GetUInt32(); cond->ConditionValue2 = fields[8].GetUInt32(); cond->ConditionValue3 = fields[9].GetUInt32(); cond->NegativeCondition = fields[10].GetUInt8(); - cond->ErrorTextId = fields[11].GetUInt32(); - cond->ScriptId = sObjectMgr->GetScriptId(fields[12].GetCString()); + cond->ErrorType = fields[11].GetUInt32(); + cond->ErrorTextId = fields[12].GetUInt32(); + cond->ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); if (iConditionTypeOrReference >= 0) cond->ConditionType = ConditionTypes(iConditionTypeOrReference); @@ -825,6 +825,18 @@ void ConditionMgr::LoadConditions(bool isReload) continue; } + if (cond->ErrorType && cond->SourceType != CONDITION_SOURCE_TYPE_SPELL) + { + sLog->outError(LOG_FILTER_SQL, "Condition type %u entry %i can't have ErrorType (%u), set to 0!", uint32(cond->SourceType), cond->SourceEntry, cond->ErrorType); + cond->ErrorType = 0; + } + + if (cond->ErrorTextId && !cond->ErrorType) + { + sLog->outError(LOG_FILTER_SQL, "Condition type %u entry %i has any ErrorType, ErrorTextId (%u) is set, set to 0!", uint32(cond->SourceType), cond->SourceEntry, cond->ErrorTextId); + cond->ErrorTextId = 0; + } + if (cond->SourceGroup) { bool valid = false; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 7b0dc1f20bf..7ffb6ff584c 100755 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -180,6 +180,7 @@ struct Condition uint32 ConditionValue1; uint32 ConditionValue2; uint32 ConditionValue3; + uint32 ErrorType; uint32 ErrorTextId; uint32 ReferenceId; uint32 ScriptId; @@ -198,6 +199,7 @@ struct Condition ConditionValue2 = 0; ConditionValue3 = 0; ReferenceId = 0; + ErrorType = 0; ErrorTextId = 0; ScriptId = 0; NegativeCondition = false; diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 5321202b256..df5f45622f8 100755 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -86,8 +86,7 @@ enum TrinityStrings LANG_CONNECTED_PLAYERS = 60, LANG_ACCOUNT_ADDON = 61, LANG_IMPROPER_VALUE = 62, - LANG_CANT_DO_NOW = 63, - // Room for more level 0 64-99 not used + // Room for more level 0 63-99 not used // level 1 chat LANG_GLOBAL_NOTIFY = 100, diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index cd1197dca86..867fa47977a 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4866,17 +4866,12 @@ SpellCastResult Spell::CheckCast(bool strict) ConditionList conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_SPELL, m_spellInfo->Id); if (!conditions.empty() && !sConditionMgr->IsObjectMeetToConditions(condInfo, conditions)) { - // send error msg to player if condition failed and text message available - // TODO: using WorldSession::SendNotification is not blizzlike - if (Player* playerCaster = m_caster->ToPlayer()) + // mLastFailedCondition can be NULL if there was an error processing the condition in Condition::Meets (i.e. wrong data for ConditionTarget or others) + if (condInfo.mLastFailedCondition && condInfo.mLastFailedCondition->ErrorType) { - // mLastFailedCondition can be NULL if there was an error processing the condition in Condition::Meets (i.e. wrong data for ConditionTarget or others) - if (playerCaster->GetSession() && condInfo.mLastFailedCondition - && condInfo.mLastFailedCondition->ErrorTextId) - { - playerCaster->GetSession()->SendNotification(condInfo.mLastFailedCondition->ErrorTextId); - return SPELL_FAILED_DONT_REPORT; - } + if (condInfo.mLastFailedCondition->ErrorType == SPELL_FAILED_CUSTOM_ERROR) + m_customError = SpellCustomErrors(condInfo.mLastFailedCondition->ErrorTextId); + return SpellCastResult(condInfo.mLastFailedCondition->ErrorType); } if (!condInfo.mLastFailedCondition || !condInfo.mLastFailedCondition->ConditionTarget) return SPELL_FAILED_CASTER_AURASTATE; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 5e54778b14a..c701c4f350c 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -937,16 +937,9 @@ public: //No args required for players if (handler->GetSession() && AccountMgr::IsPlayerAccount(handler->GetSession()->GetSecurity())) { - Player* player = handler->GetSession()->GetPlayer(); - if (player->isInFlight() || player->isInCombat()) - { - handler->SendSysMessage(LANG_CANT_DO_NOW); - handler->SetSentErrorMessage(true); - return false; - } - - //7355: "Stuck" - player->CastSpell(player, 7355, false); + // 7355: "Stuck" + if (Player* player = handler->GetSession()->GetPlayer()) + player->CastSpell(player, 7355, false); return true; } @@ -967,8 +960,13 @@ public: if (player->isInFlight() || player->isInCombat()) { - handler->SendSysMessage(LANG_CANT_DO_NOW); - handler->SetSentErrorMessage(true); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(7355); + if (!spellInfo) + return false; + + if (Player* caster = handler->GetSession()->GetPlayer()) + Spell::SendCastResult(caster, spellInfo, 0, SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW); + return false; } -- cgit v1.2.3 From 0591c468acbc3894a1b55d707acb4551dcf8a41e Mon Sep 17 00:00:00 2001 From: Nay Date: Sat, 24 Nov 2012 23:49:27 +0000 Subject: Core/SAI: Add more details to an error log --- src/server/game/Conditions/ConditionMgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index a27ddeda8ed..029272b3841 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1422,7 +1422,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) if (cond->ConditionTarget >= cond->GetMaxAvailableConditionTargets()) { - sLog->outError(LOG_FILTER_SQL, "SourceType %u, SourceEntry %u in `condition` table, has incorrect ConditionTarget set, ignoring.", cond->SourceType, cond->SourceEntry); + sLog->outError(LOG_FILTER_SQL, "SourceType %u, SourceEntry %u, SourceGroup %u in `condition` table, has incorrect ConditionTarget set, ignoring.", cond->SourceType, cond->SourceEntry, cond->SourceGroup); return false; } -- cgit v1.2.3 From 7ed100a74e6a8df6adc5ef18f918455ee7705348 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 25 Nov 2012 01:01:22 +0100 Subject: Core/Scripting: Small cleanup --- src/server/game/Scripting/ScriptLoader.cpp | 12 ++++++++++-- src/server/game/Scripting/ScriptLoader.h | 1 + src/server/scripts/Events/CMakeLists.txt | 1 - src/server/scripts/Events/event.cpp | 23 ----------------------- 4 files changed, 11 insertions(+), 26 deletions(-) delete mode 100644 src/server/scripts/Events/event.cpp (limited to 'src') diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 39b5dcee211..b794d45423b 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -90,7 +90,6 @@ void AddSC_npc_innkeeper(); void AddSC_npcs_special(); void AddSC_npc_taxi(); void AddSC_achievement_scripts(); -void AddSC_event_scripts(); //eastern kingdoms void AddSC_alterac_valley(); //Alterac Valley @@ -602,6 +601,9 @@ void AddSC_shattrath_city(); void AddSC_terokkar_forest(); void AddSC_zangarmarsh(); +// Events +void AddSC_event_childrens_week(); + // battlegrounds // outdoor pvp @@ -714,7 +716,6 @@ void AddWorldScripts() AddSC_npc_taxi(); AddSC_achievement_scripts(); AddSC_chat_log(); - AddSC_event_scripts(); #endif } @@ -1244,6 +1245,13 @@ void AddNorthrendScripts() #endif } +void AddEventScripts() +{ +#ifdef SCRIPTS + AddSC_event_childrens_week(); +#endif +} + void AddOutdoorPvPScripts() { #ifdef SCRIPTS diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/game/Scripting/ScriptLoader.h index 0db6917a0d4..04ab3215551 100644 --- a/src/server/game/Scripting/ScriptLoader.h +++ b/src/server/game/Scripting/ScriptLoader.h @@ -27,6 +27,7 @@ void AddEasternKingdomsScripts(); void AddKalimdorScripts(); void AddOutlandScripts(); void AddNorthrendScripts(); +void AddEventScripts(); void AddBattlegroundScripts(); void AddOutdoorPvPScripts(); void AddCustomScripts(); diff --git a/src/server/scripts/Events/CMakeLists.txt b/src/server/scripts/Events/CMakeLists.txt index d8be052d645..00bdaa9cb0c 100644 --- a/src/server/scripts/Events/CMakeLists.txt +++ b/src/server/scripts/Events/CMakeLists.txt @@ -11,7 +11,6 @@ set(scripts_STAT_SRCS ${scripts_STAT_SRCS} Events/childrens_week.cpp - Events/event.cpp ) message(" -> Prepared: Events") diff --git a/src/server/scripts/Events/event.cpp b/src/server/scripts/Events/event.cpp deleted file mode 100644 index d77ef2b78c1..00000000000 --- a/src/server/scripts/Events/event.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2008-2012 TrinityCore - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -void AddSC_event_childrens_week(); - -void AddSC_event_scripts() -{ - AddSC_event_childrens_week(); -} -- cgit v1.2.3 From 5de19484ee09deb4ef1bcfd9438e25c8dd645c0d Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 10:23:24 +0100 Subject: Core/Spells: Removed selecting shapeshift model based on race and skin color for creatures. --- src/server/game/Entities/Unit/Unit.cpp | 285 +++++++++++++++++---------------- src/server/game/Entities/Unit/Unit.h | 2 +- 2 files changed, 145 insertions(+), 142 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 64a47c4bf8b..ab2c07e1925 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16702,178 +16702,181 @@ uint32 Unit::GetCombatRatingDamageReduction(CombatRating cr, float rate, float c return CalculatePct(damage, percent); } -uint32 Unit::GetModelForForm(ShapeshiftForm form) +uint32 Unit::GetModelForForm(ShapeshiftForm form) const { - switch (form) + if (GetTypeId() == TYPEID_PLAYER) { - case FORM_CAT: - // Based on Hair color - if (getRace() == RACE_NIGHTELF) - { - uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); - switch (hairColor) + switch (form) + { + case FORM_CAT: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) { - case 7: // Violet - case 8: - return 29405; - case 3: // Light Blue - return 29406; - case 0: // Green - case 1: // Light Green - case 2: // Dark Green - return 29407; - case 4: // White - return 29408; - default: // original - Dark Blue - return 892; + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 7: // Violet + case 8: + return 29405; + case 3: // Light Blue + return 29406; + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29407; + case 4: // White + return 29408; + default: // original - Dark Blue + return 892; + } } - } - // Based on Skin color - else if (getRace() == RACE_TAUREN) - { - uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); - // Male - if (getGender() == GENDER_MALE) + // Based on Skin color + else if (getRace() == RACE_TAUREN) { - switch (skinColor) + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch (skinColor) + { + case 12: // White + case 13: + case 14: + case 18: // Completly White + return 29409; + case 9: // Light Brown + case 10: + case 11: + return 29410; + case 6: // Brown + case 7: + case 8: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: // Dark Grey + case 4: + case 5: + return 29412; + default: // original - Grey + return 8571; + } + } + // Female + else switch (skinColor) { - case 12: // White - case 13: - case 14: - case 18: // Completly White + case 10: // White return 29409; - case 9: // Light Brown - case 10: - case 11: - return 29410; - case 6: // Brown + case 6: // Light Brown case 7: - case 8: + return 29410; + case 4: // Brown + case 5: return 29411; case 0: // Dark case 1: case 2: - case 3: // Dark Grey - case 4: - case 5: + case 3: return 29412; default: // original - Grey return 8571; } } - // Female - else switch (skinColor) - { - case 10: // White - return 29409; - case 6: // Light Brown - case 7: - return 29410; - case 4: // Brown - case 5: - return 29411; - case 0: // Dark - case 1: - case 2: - case 3: - return 29412; - default: // original - Grey - return 8571; - } - } - else if (Player::TeamForRace(getRace()) == ALLIANCE) - return 892; - else - return 8571; - case FORM_DIREBEAR: - case FORM_BEAR: - // Based on Hair color - if (getRace() == RACE_NIGHTELF) - { - uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); - switch (hairColor) + else if (Player::TeamForRace(getRace()) == ALLIANCE) + return 892; + else + return 8571; + case FORM_DIREBEAR: + case FORM_BEAR: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) { - case 0: // Green - case 1: // Light Green - case 2: // Dark Green - return 29413; // 29415? - case 6: // Dark Blue - return 29414; - case 4: // White - return 29416; - case 3: // Light Blue - return 29417; - default: // original - Violet - return 2281; + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29413; // 29415? + case 6: // Dark Blue + return 29414; + case 4: // White + return 29416; + case 3: // Light Blue + return 29417; + default: // original - Violet + return 2281; + } } - } - // Based on Skin color - else if (getRace() == RACE_TAUREN) - { - uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); - // Male - if (getGender() == GENDER_MALE) + // Based on Skin color + else if (getRace() == RACE_TAUREN) { - switch (skinColor) + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch (skinColor) + { + case 0: // Dark (Black) + case 1: + case 2: + return 29418; + case 3: // White + case 4: + case 5: + case 12: + case 13: + case 14: + return 29419; + case 9: // Light Brown/Grey + case 10: + case 11: + case 15: + case 16: + case 17: + return 29420; + case 18: // Completly White + return 29421; + default: // original - Brown + return 2289; + } + } + // Female + else switch (skinColor) { case 0: // Dark (Black) case 1: - case 2: return 29418; - case 3: // White - case 4: - case 5: - case 12: - case 13: - case 14: + case 2: // White + case 3: return 29419; - case 9: // Light Brown/Grey - case 10: - case 11: - case 15: - case 16: - case 17: + case 6: // Light Brown/Grey + case 7: + case 8: + case 9: return 29420; - case 18: // Completly White + case 10: // Completly White return 29421; default: // original - Brown return 2289; } } - // Female - else switch (skinColor) - { - case 0: // Dark (Black) - case 1: - return 29418; - case 2: // White - case 3: - return 29419; - case 6: // Light Brown/Grey - case 7: - case 8: - case 9: - return 29420; - case 10: // Completly White - return 29421; - default: // original - Brown - return 2289; - } - } - else if (Player::TeamForRace(getRace()) == ALLIANCE) - return 2281; - else - return 2289; - case FORM_FLIGHT: - if (Player::TeamForRace(getRace()) == ALLIANCE) - return 20857; - return 20872; - case FORM_FLIGHT_EPIC: - if (Player::TeamForRace(getRace()) == ALLIANCE) - return 21243; - return 21244; - default: - break; + else if (Player::TeamForRace(getRace()) == ALLIANCE) + return 2281; + else + return 2289; + case FORM_FLIGHT: + if (Player::TeamForRace(getRace()) == ALLIANCE) + return 20857; + return 20872; + case FORM_FLIGHT_EPIC: + if (Player::TeamForRace(getRace()) == ALLIANCE) + return 21243; + return 21244; + default: + break; + } } uint32 modelid = 0; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index b6c0b0059b6..1f999477f9a 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2137,7 +2137,7 @@ class Unit : public WorldObject void AddPetAura(PetAura const* petSpell); void RemovePetAura(PetAura const* petSpell); - uint32 GetModelForForm(ShapeshiftForm form); + uint32 GetModelForForm(ShapeshiftForm form) const; uint32 GetModelForTotem(PlayerTotemType totemType); void SetReducedThreatPercent(uint32 pct, uint64 guid) -- cgit v1.2.3 From 0462f0b14913a7bc1360e1c6804a493865396bcb Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 10:27:11 +0100 Subject: Core/Battlegrounds: Corrected arena logout win conditions --- src/server/game/Battlegrounds/Battleground.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 40a74a49b69..b54efad18f0 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1275,8 +1275,8 @@ void Battleground::EventPlayerLoggedOut(Player* player) // 1 player is logging out, if it is the last, then end arena! if (isArena()) - if (GetAlivePlayersCountByTeam(player->GetTeam()) <= 1 && GetPlayersCountByTeam(GetOtherTeam(player->GetTeam()))) - EndBattleground(GetOtherTeam(player->GetTeam())); + if (GetAlivePlayersCountByTeam(player->GetBGTeam()) <= 1 && GetPlayersCountByTeam(GetOtherTeam(player->GetBGTeam()))) + EndBattleground(GetOtherTeam(player->GetBGTeam())); } } -- cgit v1.2.3 From bd2e5b1be83f82732839287ea25a81923c400088 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 10:34:59 +0100 Subject: Core/Battlegrounds: Fixed GameMasters logging out in arena counting as player killed for any teams. Closes #7429 --- src/server/game/Battlegrounds/Battleground.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index b54efad18f0..22f960ceaef 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -411,7 +411,7 @@ uint32 Battleground::GetPrematureWinner() winner = ALLIANCE; else if (GetPlayersCountByTeam(HORDE) >= GetMinPlayersPerTeam()) winner = HORDE; - + return winner; } @@ -1265,6 +1265,9 @@ void Battleground::EventPlayerLoggedIn(Player* player) void Battleground::EventPlayerLoggedOut(Player* player) { uint64 guid = player->GetGUID(); + if (!IsPlayerInBattleground(guid)) // Check if this player really is in battleground (might be a GM who teleported inside) + return; + // player is correct pointer, it is checked in WorldSession::LogoutPlayer() m_OfflineQueue.push_back(player->GetGUID()); m_Players[guid].OfflineRemoveTime = sWorld->GetGameTime() + MAX_OFFLINE_TIME; -- cgit v1.2.3 From 108db4f6eb832a81308759e73c5d645280b42b0a Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 11:11:26 +0100 Subject: Core/Items: Cloned items should not retain refundable/tradeable flags --- src/server/game/Entities/Item/Item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index a1ff6cf2ce8..bdaf11ad9b8 100755 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1045,7 +1045,7 @@ Item* Item::CloneItem(uint32 count, Player const* player) const newItem->SetUInt32Value(ITEM_FIELD_CREATOR, GetUInt32Value(ITEM_FIELD_CREATOR)); newItem->SetUInt32Value(ITEM_FIELD_GIFTCREATOR, GetUInt32Value(ITEM_FIELD_GIFTCREATOR)); - newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS)); + newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS) & ~(ITEM_FLAG_REFUNDABLE | ITEM_FLAG_BOP_TRADEABLE)); newItem->SetUInt32Value(ITEM_FIELD_DURATION, GetUInt32Value(ITEM_FIELD_DURATION)); // player CAN be NULL in which case we must not update random properties because that accesses player's item update queue if (player) -- cgit v1.2.3 From 408793a73600c7dcc8c737c31f273d04597a3a10 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 11:12:16 +0100 Subject: Core/Players: Logic fixes for tradeable soulbound items --- src/server/game/Entities/Player/Player.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index dd9907d8c07..215902cb30f 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12530,10 +12530,10 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool // if this original item then it need create record in inventory // in case trade we already have item in other player inventory pLastItem->SetState(in_characterInventoryDB ? ITEM_CHANGED : ITEM_NEW, this); - } - if (pLastItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE)) - AddTradeableItem(pLastItem); + if (pLastItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE)) + AddTradeableItem(pLastItem); + } } void Player::DestroyItem(uint8 bag, uint8 slot, bool update) @@ -17691,8 +17691,14 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F AllowedLooterSet looters; for (Tokenizer::const_iterator itr = GUIDlist.begin(); itr != GUIDlist.end(); ++itr) looters.insert(atol(*itr)); - item->SetSoulboundTradeable(looters); - AddTradeableItem(item); + + if (looters.size() > 1 && item->GetTemplate()->GetMaxStackSize() == 1 && item->IsSoulBound()) + { + item->SetSoulboundTradeable(looters); + AddTradeableItem(item); + } + else + item->ClearSoulboundTradeable(this); } else { -- cgit v1.2.3 From 00044b5d32c1435ec21f6e691851848b55c04497 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 11:12:53 +0100 Subject: Core/PacketIO: Parse the MGS_MOVE_STOP packet embedded into spell cast packets with flag 0x2 --- src/server/game/Handlers/SpellHandler.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 270980c8e7c..a32f4eea370 100755 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -51,15 +51,8 @@ void WorldSession::HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlag recvPacket >> hasMovementData; if (hasMovementData) { - recvPacket.rfinish(); - // movement packet for caster of the spell - /*recvPacket.read_skip(); // MSG_MOVE_STOP - hardcoded in client - uint64 guid; - recvPacket.readPackGUID(guid); - - MovementInfo movementInfo; - movementInfo.guid = guid; - ReadMovementInfo(recvPacket, &movementInfo);*/ + recvPacket.SetOpcode(recvPacket.read()); + HandleMovementOpcodes(recvPacket); } } } -- cgit v1.2.3 From ba18fe1e5626033b25f45e53256ebb615f58a5f4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 11:13:39 +0100 Subject: Core/Spells: Fixed combat log for spells that affect item durability --- src/server/game/Spells/Spell.cpp | 6 +++--- src/server/game/Spells/Spell.h | 2 +- src/server/game/Spells/SpellEffects.cpp | 9 +++++---- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 867fa47977a..ce6d38ba8f3 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4198,12 +4198,12 @@ void Spell::ExecuteLogEffectInterruptCast(uint8 effIndex, Unit* victim, uint32 s *m_effectExecuteData[effIndex] << uint32(spellId); } -void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, uint32 /*itemslot*/, uint32 damage) +void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 slot) { InitEffectExecuteData(effIndex); m_effectExecuteData[effIndex]->append(victim->GetPackGUID()); - *m_effectExecuteData[effIndex] << uint32(m_spellInfo->Id); - *m_effectExecuteData[effIndex] << uint32(damage); + *m_effectExecuteData[effIndex] << int32(itemId); + *m_effectExecuteData[effIndex] << int32(slot); } void Spell::ExecuteLogEffectOpenLock(uint8 effIndex, Object* obj) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 5de81b6bd88..a892d6c9590 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -423,7 +423,7 @@ class Spell void ExecuteLogEffectTakeTargetPower(uint8 effIndex, Unit* target, uint32 powerType, uint32 powerTaken, float gainMultiplier); void ExecuteLogEffectExtraAttacks(uint8 effIndex, Unit* victim, uint32 attCount); void ExecuteLogEffectInterruptCast(uint8 effIndex, Unit* victim, uint32 spellId); - void ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, uint32 itemslot, uint32 damage); + void ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 slot); void ExecuteLogEffectOpenLock(uint8 effIndex, Object* obj); void ExecuteLogEffectCreateItem(uint8 effIndex, uint32 entry); void ExecuteLogEffectDestroyItem(uint8 effIndex, uint32 entry); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 15a3887ac0e..c049605f27a 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5400,11 +5400,11 @@ void Spell::EffectDurabilityDamage(SpellEffIndex effIndex) int32 slot = m_spellInfo->Effects[effIndex].MiscValue; - // FIXME: some spells effects have value -1/-2 - // Possibly its mean -1 all player equipped items and -2 all items + // -1 means all player equipped items and -2 all items if (slot < 0) { unitTarget->ToPlayer()->DurabilityPointsLossAll(damage, (slot < -1)); + ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, -1, -1); return; } @@ -5413,9 +5413,10 @@ void Spell::EffectDurabilityDamage(SpellEffIndex effIndex) return; if (Item* item = unitTarget->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) + { unitTarget->ToPlayer()->DurabilityPointsLoss(item, damage); - - ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, slot, damage); + ExecuteLogEffectDurabilityDamage(effIndex, unitTarget, item->GetEntry(), slot); + } } void Spell::EffectDurabilityDamagePCT(SpellEffIndex effIndex) -- cgit v1.2.3 From 66234a835c0f2e73f5bb28321b7b12e27274e605 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2012 11:14:19 +0100 Subject: Core/Battlefield: Compile fix --- src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 197299504ef..3cb1e5a8b9e 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -21,6 +21,7 @@ // TODO: Add proper implement of achievement #include "BattlefieldWG.h" +#include "MapManager.h" #include "ObjectMgr.h" #include "Opcodes.h" #include "Player.h" @@ -55,7 +56,7 @@ bool BattlefieldWG::SetupBattlefield() m_ZoneId = BATTLEFIELD_WG_ZONEID; m_MapId = BATTLEFIELD_WG_MAPID; m_Map = sMapMgr->FindMap(m_MapId, 0); - + m_MaxPlayer = sWorld->getIntConfig(CONFIG_WINTERGRASP_PLR_MAX); m_IsEnabled = sWorld->getBoolConfig(CONFIG_WINTERGRASP_ENABLE); m_MinPlayer = sWorld->getIntConfig(CONFIG_WINTERGRASP_PLR_MIN); -- cgit v1.2.3 From 2a845355ebe514a3f7a6b238359e899df0392aaa Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 25 Nov 2012 18:18:03 +0100 Subject: Core/Script: Remove Scourge Prisoner cpp script, handled by SAI --- src/server/scripts/Northrend/borean_tundra.cpp | 37 -------------------------- 1 file changed, 37 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp index 6eed82991b8..bbc26de85eb 100644 --- a/src/server/scripts/Northrend/borean_tundra.cpp +++ b/src/server/scripts/Northrend/borean_tundra.cpp @@ -29,7 +29,6 @@ npc_corastrasza npc_jenny npc_sinkhole_kill_credit npc_khunok_the_behemoth -npc_scourge_prisoner mob_nerubar_victim npc_keristrasza npc_nesingwary_trapper @@ -386,41 +385,6 @@ public: } }; -/*###### -## npc_scourge_prisoner -######*/ - -enum eScourgePrisoner -{ - GO_SCOURGE_CAGE = 187867 -}; - -class npc_scourge_prisoner : public CreatureScript -{ -public: - npc_scourge_prisoner() : CreatureScript("npc_scourge_prisoner") { } - - struct npc_scourge_prisonerAI : public ScriptedAI - { - npc_scourge_prisonerAI(Creature* creature) : ScriptedAI (creature){} - - void Reset() - { - me->SetReactState(REACT_PASSIVE); - - if (GameObject* go = me->FindNearestGameObject(GO_SCOURGE_CAGE, 5.0f)) - if (go->GetGoState() == GO_STATE_ACTIVE) - go->SetGoState(GO_STATE_READY); - } - - }; - - CreatureAI* GetAI(Creature* creature) const - { - return new npc_scourge_prisonerAI(creature); - } -}; - /*###### ## npc_jenny ######*/ @@ -2548,7 +2512,6 @@ void AddSC_borean_tundra() new npc_corastrasza(); new npc_iruk(); new mob_nerubar_victim(); - new npc_scourge_prisoner(); new npc_jenny(); new npc_fezzix_geartwist(); new npc_nesingwary_trapper(); -- cgit v1.2.3