aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/ScriptMgr.cpp4
-rw-r--r--src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp41
-rw-r--r--src/bindings/scripts/scripts/custom/test.cpp6
-rw-r--r--src/bindings/scripts/scripts/examples/example_escort.cpp12
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.cpp78
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.h12
-rw-r--r--src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp39
-rw-r--r--src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp61
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp62
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/darkshore/darkshore.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp9
-rw-r--r--src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/feralas/feralas.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp54
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp14
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp24
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/def_karazhan.h43
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp286
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp286
-rw-r--r--src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/sholazar_basin/sholazar_basin.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/westfall/westfall.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp2
53 files changed, 601 insertions, 575 deletions
diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp
index d828170b6bc..1835aaae565 100644
--- a/src/bindings/scripts/ScriptMgr.cpp
+++ b/src/bindings/scripts/ScriptMgr.cpp
@@ -85,7 +85,7 @@ extern void AddSC_npc_taxi();
//------ ZONE --------
//Alterac Mountains
-extern void AddSC_alterac_mountains();
+//extern void AddSC_alterac_mountains();
//Arathi Highlands
extern void AddSC_arathi_highlands();
@@ -1012,7 +1012,7 @@ void ScriptsInit(char const* cfg_file = "trinitycore.conf")
//------ ZONE --------
//Alterac Mountains
- AddSC_alterac_mountains();
+ //AddSC_alterac_mountains();
//Arathi Highlands
AddSC_arathi_highlands();
diff --git a/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp b/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp
index 1c1b7312cb3..9ed608ce97b 100644
--- a/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp
+++ b/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp
@@ -31,22 +31,28 @@ EndContentData */
## at_legion_teleporter
#####*/
-#define SPELL_TELE_A_TO 37387
-#define SPELL_TELE_H_TO 37389
+enum
+{
+ SPELL_TELE_A_TO = 37387,
+ QUEST_GAINING_ACCESS_A = 10589,
+
+ SPELL_TELE_H_TO = 37389,
+ QUEST_GAINING_ACCESS_H = 10604
+};
-bool AreaTrigger_at_legion_teleporter(Player *player, AreaTriggerEntry *at)
+bool AreaTrigger_at_legion_teleporter(Player* pPlayer, AreaTriggerEntry* pAt)
{
- if (player->isAlive() && !player->isInCombat())
+ if (pPlayer->isAlive() && !pPlayer->isInCombat())
{
- if (player->GetTeam()== ALLIANCE && player->GetQuestRewardStatus(10589))
+ if (pPlayer->GetTeam()== ALLIANCE && pPlayer->GetQuestRewardStatus(QUEST_GAINING_ACCESS_A))
{
- player->CastSpell(player,SPELL_TELE_A_TO,false);
+ pPlayer->CastSpell(pPlayer,SPELL_TELE_A_TO,false);
return true;
}
- if (player->GetTeam()== HORDE && player->GetQuestRewardStatus(10604))
+ if (pPlayer->GetTeam()== HORDE && pPlayer->GetQuestRewardStatus(QUEST_GAINING_ACCESS_H))
{
- player->CastSpell(player,SPELL_TELE_H_TO,false);
+ pPlayer->CastSpell(pPlayer,SPELL_TELE_H_TO,false);
return true;
}
@@ -55,6 +61,20 @@ bool AreaTrigger_at_legion_teleporter(Player *player, AreaTriggerEntry *at)
return false;
}
+enum
+{
+ QUEST_MANOR_RAVENHOLDT = 6681,
+ NPC_RAVENHOLDT = 13936
+};
+
+bool AreaTrigger_at_ravenholdt(Player* pPlayer, AreaTriggerEntry* pAt)
+{
+ if (pPlayer->GetQuestStatus(QUEST_MANOR_RAVENHOLDT) == QUEST_STATUS_INCOMPLETE)
+ pPlayer->KilledMonsterCredit(NPC_RAVENHOLDT, 0);
+
+ return false;
+}
+
void AddSC_areatrigger_scripts()
{
Script *newscript;
@@ -63,5 +83,10 @@ void AddSC_areatrigger_scripts()
newscript->Name = "at_legion_teleporter";
newscript->pAreaTrigger = &AreaTrigger_at_legion_teleporter;
newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "at_ravenholdt";
+ newscript->pAreaTrigger = &AreaTrigger_at_ravenholdt;
+ newscript->RegisterSelf();
}
diff --git a/src/bindings/scripts/scripts/custom/test.cpp b/src/bindings/scripts/scripts/custom/test.cpp
index 3ae42792f8b..fc3cfeb4342 100644
--- a/src/bindings/scripts/scripts/custom/test.cpp
+++ b/src/bindings/scripts/scripts/custom/test.cpp
@@ -165,7 +165,7 @@ bool GossipSelect_npc_test(Player *player, Creature *_Creature, uint32 sender, u
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
- ((npc_escortAI*)(_Creature->AI()))->Start(true, true, true, player->GetGUID());
+ ((npc_escortAI*)(_Creature->AI()))->Start(true, true, player->GetGUID());
return true; // prevent Trinity core handling
}
@@ -173,7 +173,7 @@ bool GossipSelect_npc_test(Player *player, Creature *_Creature, uint32 sender, u
if (action == GOSSIP_ACTION_INFO_DEF+2)
{
player->CLOSE_GOSSIP_MENU();
- ((npc_escortAI*)(_Creature->AI()))->Start(false, false, false, player->GetGUID());
+ ((npc_escortAI*)(_Creature->AI()))->Start(false, false, player->GetGUID());
return true; // prevent Trinity core handling
}
@@ -181,7 +181,7 @@ bool GossipSelect_npc_test(Player *player, Creature *_Creature, uint32 sender, u
if (action == GOSSIP_ACTION_INFO_DEF+3)
{
player->CLOSE_GOSSIP_MENU();
- ((npc_escortAI*)(_Creature->AI()))->Start(false, true, false, player->GetGUID());
+ ((npc_escortAI*)(_Creature->AI()))->Start(false, false, player->GetGUID());
return true; // prevent Trinity core handling
}
diff --git a/src/bindings/scripts/scripts/examples/example_escort.cpp b/src/bindings/scripts/scripts/examples/example_escort.cpp
index 4517eaff765..3c81797c2a6 100644
--- a/src/bindings/scripts/scripts/examples/example_escort.cpp
+++ b/src/bindings/scripts/scripts/examples/example_escort.cpp
@@ -37,9 +37,9 @@ EndScriptData */
#define SAY_RAND_1 -1999920
#define SAY_RAND_2 -1999921
-#define GOSSIP_ITEM_1 "Click to Test Escort(Attack, Defend, Run)"
-#define GOSSIP_ITEM_2 "Click to Test Escort(NoAttack, NoDefend, Walk)"
-#define GOSSIP_ITEM_3 "Click to Test Escort(NoAttack, Defend, Walk)"
+#define GOSSIP_ITEM_1 "Click to Test Escort(Attack, Run)"
+#define GOSSIP_ITEM_2 "Click to Test Escort(NoAttack, Walk)"
+#define GOSSIP_ITEM_3 "Click to Test Escort(NoAttack, Run)"
struct TRINITY_DLL_DECL example_escortAI : public npc_escortAI
{
@@ -186,7 +186,7 @@ bool GossipSelect_example_escort(Player *player, Creature *_Creature, uint32 sen
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, player->GetGUID());
return true; // prevent mangos core handling
}
@@ -194,7 +194,7 @@ bool GossipSelect_example_escort(Player *player, Creature *_Creature, uint32 sen
if (action == GOSSIP_ACTION_INFO_DEF+2)
{
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, player->GetGUID());
return true; // prevent mangos core handling
}
@@ -202,7 +202,7 @@ bool GossipSelect_example_escort(Player *player, Creature *_Creature, uint32 sen
if (action == GOSSIP_ACTION_INFO_DEF+3)
{
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, player->GetGUID());
return true; // prevent mangos core handling
}
diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp
index 2a6e593c113..61bdaf0c35b 100644
--- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp
+++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp
@@ -12,7 +12,12 @@ EndScriptData */
#include "precompiled.h"
#include "npc_escortAI.h"
-#define WP_LAST_POINT -1
+enum
+{
+ POINT_LAST_POINT = 0xFFFFFF,
+ POINT_HOME = 0xFFFFFE
+};
+
extern std::list<PointMovement> PointMovementList;
void npc_escortAI::AttackStart(Unit *who)
@@ -20,9 +25,6 @@ void npc_escortAI::AttackStart(Unit *who)
if (!who)
return;
- if (IsBeingEscorted && !m_bCanDefendSelf)
- return;
-
if(m_creature->Attack(who, true) )
{
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
@@ -58,7 +60,7 @@ void npc_escortAI::ReturnToLastPoint()
{
float x, y, z, o;
m_creature->GetHomePosition(x, y, z, o);
- m_creature->GetMotionMaster()->MovePoint(WP_LAST_POINT, x, y, z);
+ m_creature->GetMotionMaster()->MovePoint(POINT_LAST_POINT, x, y, z);
}
void npc_escortAI::EnterEvadeMode()
@@ -87,17 +89,33 @@ void npc_escortAI::UpdateAI(const uint32 diff)
{
if (m_uiWPWaitTimer <= diff)
{
- //End of the line, Despawn self then immediatly respawn
+ //End of the line
if (CurrentWP == WaypointList.end())
{
if(DespawnAtEnd)
{
debug_log("TSCR: EscortAI reached end of waypoints");
- m_creature->setDeathState(JUST_DIED);
+ if (m_bCanReturnToStart)
+ {
+ float fRetX, fRetY, fRetZ;
+ m_creature->GetRespawnCoord(fRetX, fRetY, fRetZ);
- //TODO: add option to set instant respawn? Then use db respawn value as default
- m_creature->Respawn();
+ m_creature->GetMotionMaster()->MovePoint(POINT_HOME, fRetX, fRetY, fRetZ);
+
+ m_uiWPWaitTimer = 0;
+
+ debug_log("TSCR: EscortAI are returning home to spawn location: %u, %f, %f, %f", POINT_HOME, fRetX, fRetY, fRetZ);
+ return;
+ }
+
+ if (m_bCanInstantRespawn)
+ {
+ m_creature->setDeathState(JUST_DIED);
+ m_creature->Respawn();
+ }
+ else
+ m_creature->ForcedDespawn();
return;
}
@@ -152,10 +170,14 @@ void npc_escortAI::UpdateAI(const uint32 diff)
debug_log("TSCR: EscortAI Evaded back to spawn point because player/group was to far away or not found");
JustDied(m_creature);
- m_creature->setDeathState(JUST_DIED);
- //TODO: add option to set instant respawn? Then use db respawn value as default
- m_creature->Respawn();
+ if (m_bCanInstantRespawn)
+ {
+ m_creature->setDeathState(JUST_DIED);
+ m_creature->Respawn();
+ }
+ else
+ m_creature->ForcedDespawn();
return;
}
@@ -174,7 +196,7 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id)
return;
//Combat start position reached, continue waypoint movement
- if (id == WP_LAST_POINT)
+ if (id == POINT_LAST_POINT)
{
debug_log("TSCR: EscortAI has returned to original position before combat");
@@ -188,6 +210,13 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id)
if (!m_uiWPWaitTimer)
m_uiWPWaitTimer = 1;
}
+ else if (id == POINT_HOME)
+ {
+ debug_log("TSCR: EscortAI has returned to original home location and will continue from beginning of waypoint list.");
+
+ CurrentWP = WaypointList.begin();
+ m_uiWPWaitTimer = 1;
+ }
else
{
//Make sure that we are still on the right waypoint
@@ -269,7 +298,8 @@ void npc_escortAI::SetRun(bool bRun)
m_bIsRunning = bRun;
}
-void npc_escortAI::Start(bool bIsActiveAttacker, bool bCanDefendSelf, bool bRun, uint64 uiPlayerGUID)
+//TODO: get rid of this many variables passed in function.
+void npc_escortAI::Start(bool bIsActiveAttacker, bool bRun, uint64 uiPlayerGUID, const Quest* pQuest, bool bInstantRespawn, bool bCanLoopPath)
{
if (m_creature->getVictim())
{
@@ -289,6 +319,19 @@ void npc_escortAI::Start(bool bIsActiveAttacker, bool bCanDefendSelf, bool bRun,
return;
}
+ //set variables
+ m_bIsActiveAttacker = bIsActiveAttacker;
+ m_bIsRunning = bRun;
+
+ PlayerGUID = uiPlayerGUID;
+ m_pQuestForEscort = pQuest;
+
+ m_bCanInstantRespawn = bInstantRespawn;
+ m_bCanReturnToStart = bCanLoopPath;
+
+ if (m_bCanReturnToStart && m_bCanInstantRespawn)
+ debug_log("TSCR: EscortAI is set to return home after waypoint end and instant respawn at waypoint end. Creature will never despawn.");
+
if(m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE)
{
m_creature->GetMotionMaster()->MovementExpired();
@@ -296,15 +339,10 @@ void npc_escortAI::Start(bool bIsActiveAttacker, bool bCanDefendSelf, bool bRun,
debug_log("TSCR: EscortAI start with WAYPOINT_MOTION_TYPE, changed to MoveIdle.");
}
- m_bIsActiveAttacker = bIsActiveAttacker;
- m_bCanDefendSelf = bCanDefendSelf;
- m_bIsRunning = bRun;
- PlayerGUID = uiPlayerGUID;
-
//disable npcflags
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
- debug_log("TSCR: EscortAI started with %d waypoints. ActiveAttacker = %d, Defend = %d, Run = %d, PlayerGUID = %d", WaypointList.size(), m_bIsActiveAttacker, m_bCanDefendSelf, m_bIsRunning, PlayerGUID);
+ debug_log("TSCR: EscortAI started with %d waypoints. ActiveAttacker = %d, Run = %d, PlayerGUID = %d", WaypointList.size(), m_bIsActiveAttacker, m_bIsRunning, PlayerGUID);
CurrentWP = WaypointList.begin();
diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.h b/src/bindings/scripts/scripts/npc/npc_escortAI.h
index efe9ef5f922..cda331e6121 100644
--- a/src/bindings/scripts/scripts/npc/npc_escortAI.h
+++ b/src/bindings/scripts/scripts/npc/npc_escortAI.h
@@ -31,8 +31,7 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
{
public:
explicit npc_escortAI(Creature* pCreature) : ScriptedAI(pCreature),
- IsBeingEscorted(false), IsOnHold(false), PlayerGUID(0), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), m_uiPlayerCheckTimer(1000), m_uiWPWaitTimer(0),
- m_bIsReturning(false), m_bIsActiveAttacker(true), m_bCanDefendSelf(true), m_bIsRunning(false), DespawnAtEnd(true), DespawnAtFar(true) {}
+ IsBeingEscorted(false), IsOnHold(false), PlayerGUID(0), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), m_uiPlayerCheckTimer(1000), m_uiWPWaitTimer(0), m_bIsReturning(false), m_bIsActiveAttacker(true), m_bIsRunning(false), DespawnAtEnd(true), DespawnAtFar(true), m_pQuestForEscort(NULL), m_bCanInstantRespawn(false), m_bCanReturnToStart(false) {}
~npc_escortAI() {}
// Pure Virtual Functions
@@ -58,7 +57,8 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
void FillPointMovementListForCreature();
- void Start(bool bIsActiveAttacker = true, bool bCanDefendSelf = true, bool bRun = false, uint64 uiPlayerGUID = 0);
+ void Start(bool bIsActiveAttacker = true, bool bRun = false, uint64 uiPlayerGUID = 0, const Quest* pQuest = NULL, bool bInstantRespawn = false, bool bCanLoopPath = false);
+
void SetRun(bool bRun = true);
void SetMaxPlayerDistance(float newMax) { MaxPlayerDistance = newMax; }
@@ -73,7 +73,6 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
bool GetIsBeingEscorted() { return IsBeingEscorted; }//used in EnterEvadeMode override
void SetReturning(bool returning) { m_bIsReturning = returning; }//used in EnterEvadeMode override
void SetCanAttack(bool attack) { m_bIsActiveAttacker = attack; }
- void SetCanDefend(bool defend) { m_bCanDefendSelf = defend; }
uint64 GetEventStarterGUID() { return PlayerGUID; }
// EscortAI variables
@@ -87,13 +86,16 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
uint32 m_uiPlayerCheckTimer;
float MaxPlayerDistance;
+ const Quest* m_pQuestForEscort; //generally passed in Start() when regular escort script.
+
std::list<Escort_Waypoint> WaypointList;
std::list<Escort_Waypoint>::iterator CurrentWP;
bool m_bIsActiveAttacker; //possible obsolete, and should be determined with db only (civilian)
- bool m_bCanDefendSelf; //rarely used, is true in 99%
bool m_bIsReturning; //in use when creature leave combat, and are returning to combat start position
bool m_bIsRunning; //all creatures are walking by default (has flag MOVEMENTFLAG_WALK)
+ bool m_bCanInstantRespawn; //if creature should respawn instantly after escort over (if not, database respawntime are used)
+ bool m_bCanReturnToStart; //if creature can walk same path (loop) without despawn. Not for regular escort quests.
bool CanMelee;
bool DespawnAtEnd;
bool DespawnAtFar;
diff --git a/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp b/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp
index 46be478f939..8b4c360a886 100644
--- a/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp
+++ b/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp
@@ -16,49 +16,18 @@
/* ScriptData
SDName: Alterac_Mountains
-SD%Complete: 100
-SDComment: Quest support: 6681
+SD%Complete: 0
+SDComment: Placeholder
SDCategory: Alterac Mountains
EndScriptData */
/* ContentData
-npc_ravenholdt
EndContentData */
#include "precompiled.h"
-/*######
-## npc_ravenholdt
-######*/
-
-struct TRINITY_DLL_DECL npc_ravenholdtAI : public ScriptedAI
-{
- npc_ravenholdtAI(Creature *c) : ScriptedAI(c) {}
-
- void Reset() { }
-
- void MoveInLineOfSight(Unit *who)
- {
- if( who->GetTypeId() == TYPEID_PLAYER )
- if( CAST_PLR(who)->GetQuestStatus(6681) == QUEST_STATUS_INCOMPLETE )
- CAST_PLR(who)->KilledMonsterCredit(m_creature->GetEntry(),m_creature->GetGUID() );
- }
-
- void EnterCombat(Unit* who) { }
-};
-
-CreatureAI* GetAI_npc_ravenholdt(Creature *_Creature)
-{
- return new npc_ravenholdtAI (_Creature);
-}
-
-void AddSC_alterac_mountains()
+/*void AddSC_alterac_mountains()
{
Script *newscript;
-
- newscript = new Script;
- newscript->Name="npc_ravenholdt";
- newscript->GetAI = &GetAI_npc_ravenholdt;
- newscript->RegisterSelf();
-}
+}*/
diff --git a/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp b/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp
index 2e80e6e4c6e..a91742b083c 100644
--- a/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp
+++ b/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp
@@ -117,7 +117,7 @@ bool QuestAccept_npc_professor_phizzlethorpe(Player* player, Creature* creature,
if (quest->GetQuestId() == QUEST_SUNKEN_TREASURE)
{
DoScriptText(SAY_PROGRESS_1, creature, player);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(false, false, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(false, false, player->GetGUID());
creature->setFaction(113);
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp
index 73e89f8c7ca..9c8ee5a7db2 100644
--- a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp
+++ b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp
@@ -144,7 +144,7 @@ bool QuestAccept_npc_torek(Player* player, Creature* creature, Quest const* ques
if (quest->GetQuestId() == QUEST_TOREK_ASSULT)
{
//TODO: find companions, make them follow Torek, at any time (possibly done by mangos/database in future?)
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, player->GetGUID());
DoScriptText(SAY_READY, creature, player);
creature->setFaction(113);
}
@@ -244,7 +244,7 @@ bool QuestAccept_npc_ruul_snowhoof(Player* player, Creature* creature, Quest con
if (quest->GetQuestId() == QUEST_FREEDOM_TO_RUUL)
{
creature->setFaction(113);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp
index 3f4c04a328c..f023b443e00 100644
--- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp
+++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp
@@ -394,7 +394,7 @@ bool QuestAccept_npc_magwin(Player* player, Creature* creature, Quest const* que
if (quest->GetQuestId() == QUEST_A_CRY_FOR_SAY_HELP)
{
creature->setFaction(113);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp
index dcf9263ad07..76e2d0603e7 100644
--- a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp
+++ b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp
@@ -38,21 +38,26 @@ EndContentData */
#define GOSSIP_CORPSE "Examine corpse in detail..."
-bool GossipHello_npc_beaten_corpse(Player *player, Creature *_Creature)
+enum
+{
+ QUEST_LOST_IN_BATTLE = 4921
+};
+
+bool GossipHello_npc_beaten_corpse(Player* pPlayer, Creature* pCreature)
{
- if( player->GetQuestStatus(4921) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(4921) == QUEST_STATUS_COMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CORPSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
+ if( pPlayer->GetQuestStatus(QUEST_LOST_IN_BATTLE) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(QUEST_LOST_IN_BATTLE) == QUEST_STATUS_COMPLETE)
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CORPSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- player->SEND_GOSSIP_MENU(3557, _Creature->GetGUID());
+ pPlayer->SEND_GOSSIP_MENU(3557, pCreature->GetGUID());
return true;
}
-bool GossipSelect_npc_beaten_corpse(Player *player, Creature *_Creature, uint32 sender, uint32 action )
+bool GossipSelect_npc_beaten_corpse(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action )
{
if(action == GOSSIP_ACTION_INFO_DEF +1)
{
- player->SEND_GOSSIP_MENU(3558, _Creature->GetGUID());
- player->KilledMonsterCredit( 10668,_Creature->GetGUID() );
+ pPlayer->SEND_GOSSIP_MENU(3558, pCreature->GetGUID());
+ pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID());
}
return true;
}
@@ -499,7 +504,7 @@ bool QuestAccept_npc_wizzlecrank_shredder(Player* player, Creature* creature, Qu
if (quest->GetQuestId() == QUEST_ESCAPE)
{
creature->setFaction(FACTION_RATCHET);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp
index ad0a461f969..683974b3004 100644
--- a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp
+++ b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp
@@ -240,7 +240,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI
case 0:
DoScriptText(-1000000, m_creature);//1
HandleGameObject(DATA_ARENA4, false);
- Start(false, false, false);
+ Start(false, false);
CanWalk = true;
Event_Timer = 0;
break;
@@ -593,7 +593,7 @@ bool GossipSelect_npc_dughal_stormwing(Player *player, Creature *_Creature, uint
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, player->GetGUID());
_Creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
pInstance->SetData(DATA_QUEST_JAIL_BREAK,ENCOUNTER_STATE_IN_PROGRESS);
}
@@ -750,7 +750,7 @@ bool QuestAccept_npc_marshal_windsor(Player *player, Creature *creature, Quest c
{PlayerStart = player;
if( pInstance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED )
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
pInstance->SetData(DATA_QUEST_JAIL_BREAK,ENCOUNTER_STATE_IN_PROGRESS);
creature->setFaction(11);
}
@@ -859,7 +859,7 @@ struct TRINITY_DLL_DECL npc_marshal_reginald_windsorAI : public npc_escortAI
if( m_creature->IsWithinDistInMap(who, Radius) )
{
IsOnHold = false;
- Start(true, true, false, who->GetGUID());
+ Start(true, false, who->GetGUID());
}
}
}
@@ -1058,7 +1058,7 @@ bool GossipSelect_npc_tobias_seecher(Player *player, Creature *_Creature, uint32
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, player->GetGUID());
_Creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
pInstance->SetData(DATA_TOBIAS,ENCOUNTER_STATE_IN_PROGRESS);
}
@@ -1196,7 +1196,7 @@ bool ChooseReward_npc_rocknot(Player *player, Creature *_Creature, const Quest *
{
DoScriptText(SAY_GOT_BEER, _Creature);
_Creature->CastSpell(_Creature,SPELL_DRUNKEN_RAGE,false);
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, false);
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp b/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp
index 0a90b870926..946290d6294 100644
--- a/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp
+++ b/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp
@@ -50,18 +50,14 @@ struct TRINITY_DLL_DECL mobs_bladespire_ogreAI : public ScriptedAI
{
mobs_bladespire_ogreAI(Creature *c) : ScriptedAI(c) {}
- void Reset()
- {
- }
+ void Reset() { }
- void EnterCombat(Unit* who)
+ void UpdateAI(const uint32 uiDiff)
{
- }
+ if (!UpdateVictim())
+ return;
- void JustDied(Unit* Killer)
- {
- if (Killer->GetTypeId() == TYPEID_PLAYER)
- CAST_PLR(Killer)->KilledMonsterCredit(19995, m_creature->GetGUID());
+ DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_mobs_bladespire_ogre(Creature *_Creature)
@@ -73,23 +69,26 @@ CreatureAI* GetAI_mobs_bladespire_ogre(Creature *_Creature)
## mobs_nether_drake
######*/
-#define SAY_NIHIL_1 -1000396
-#define SAY_NIHIL_2 -1000397
-#define SAY_NIHIL_3 -1000398
-#define SAY_NIHIL_4 -1000399
-#define SAY_NIHIL_INTERRUPT -1000400
-
-#define ENTRY_WHELP 20021
-#define ENTRY_PROTO 21821
-#define ENTRY_ADOLE 21817
-#define ENTRY_MATUR 21820
-#define ENTRY_NIHIL 21823
-
-#define SPELL_T_PHASE_MODULATOR 37573
-
-#define SPELL_ARCANE_BLAST 38881
-#define SPELL_MANA_BURN 38884
-#define SPELL_INTANGIBLE_PRESENCE 36513
+enum
+{
+ SAY_NIHIL_1 = -1000396,
+ SAY_NIHIL_2 = -1000397,
+ SAY_NIHIL_3 = -1000398,
+ SAY_NIHIL_4 = -1000399,
+ SAY_NIHIL_INTERRUPT = -1000400,
+
+ ENTRY_WHELP = 20021,
+ ENTRY_PROTO = 21821,
+ ENTRY_ADOLE = 21817,
+ ENTRY_MATUR = 21820,
+ ENTRY_NIHIL = 21823,
+
+ SPELL_T_PHASE_MODULATOR = 37573,
+
+ SPELL_ARCANE_BLAST = 38881,
+ SPELL_MANA_BURN = 38884,
+ SPELL_INTANGIBLE_PRESENCE = 36513
+};
struct TRINITY_DLL_DECL mobs_nether_drakeAI : public ScriptedAI
{
@@ -243,7 +242,11 @@ CreatureAI* GetAI_mobs_nether_drake(Creature *_Creature)
## npc_daranelle
######*/
-#define SAY_SPELL_INFLUENCE -1000174
+enum
+{
+ SAY_SPELL_INFLUENCE = -1000174,
+ SPELL_LASHHAN_CHANNEL = 36904
+};
struct TRINITY_DLL_DECL npc_daranelleAI : public ScriptedAI
{
@@ -257,11 +260,11 @@ struct TRINITY_DLL_DECL npc_daranelleAI : public ScriptedAI
{
if (who->GetTypeId() == TYPEID_PLAYER)
{
- if (who->HasAura(36904) && m_creature->IsWithinDistInMap(who, 10.0f))
+ if (who->HasAura(SPELL_LASHHAN_CHANNEL) && m_creature->IsWithinDistInMap(who, 10.0f))
{
DoScriptText(SAY_SPELL_INFLUENCE, m_creature, who);
//TODO: Move the below to updateAI and run if this statement == true
- DoCast(who,37028,true);
+ m_creature->CastSpell(who,37028,true);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp
index b1a0f2ff1b3..9add7077482 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp
@@ -136,7 +136,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
AddWaypoint(5, 5026.27, -1736.89, 1323.02);
AddWaypoint(6, 5037.77, -1770.56, 1324.36);
AddWaypoint(7, 5067.23, -1789.95, 1321.17);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp
index b704080ba86..606125bd8e4 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp
@@ -128,7 +128,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
AddWaypoint(5, 5508.16, -2659.2, 1480.15);
AddWaypoint(6, 5489.62, -2704.05, 1482.18);
AddWaypoint(7, 5457.04, -2726.26, 1485.10);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp
index 3dfe54e0cf6..b26ec432224 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp
@@ -123,7 +123,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
AddWaypoint(5, 5508.16, -2659.2, 1480.15);
AddWaypoint(6, 5489.62, -2704.05, 1482.18);
AddWaypoint(7, 5457.04, -2726.26, 1485.10);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp
index fcbe58a6661..9a9b8a2de2f 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp
@@ -120,7 +120,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
AddWaypoint(5, 5026.27, -1736.89, 1323.02);
AddWaypoint(6, 5037.77, -1770.56, 1324.36);
AddWaypoint(7, 5067.23, -1789.95, 1321.17);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
index 4c8cb2e5e99..c323dd55010 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
@@ -669,7 +669,7 @@ void hyjalAI::Retreat()
pInstance->SetData(DATA_ALLIANCE_RETREAT, 1);
AddWaypoint(0,JainaWPs[0][0],JainaWPs[0][1],JainaWPs[0][2]);
AddWaypoint(1,JainaWPs[1][0],JainaWPs[1][1],JainaWPs[1][2]);
- Start(false, false, false);
+ Start(false, false);
SetDespawnAtEnd(false);//move to center of alliance base
}
if(Faction == 1)
@@ -683,7 +683,7 @@ void hyjalAI::Retreat()
DummyGuid = JainaDummy->GetGUID();
}
AddWaypoint(0,JainaDummySpawn[1][0],JainaDummySpawn[1][1],JainaDummySpawn[1][2]);
- Start(false, false, false);
+ Start(false, false);
SetDespawnAtEnd(false);//move to center of alliance base
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp
index 18a2bad6822..90e83c5994b 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp
@@ -203,7 +203,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[43][0]+irand(-3,3), AllianceOverrunWP[43][1]+irand(-3,3), AllianceOverrunWP[43][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 18;
- Start(true, true, true);
+ Start(true, true);
break;
case 1:
AddWaypoint( 4, AllianceOverrunWP[22][0]+irand(-3,3), AllianceOverrunWP[22][1]+irand(-3,3), AllianceOverrunWP[22][2]);
@@ -225,7 +225,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[44][0]+irand(-3,3), AllianceOverrunWP[44][1]+irand(-3,3), AllianceOverrunWP[44][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 18;
- Start(true, true, true);
+ Start(true, true);
break;
default:
for(uint8 i = 22; i < 36; i++)
@@ -233,7 +233,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
SetDespawnAtEnd(true);
LastOverronPos = 17;
- Start(true, true, true);
+ Start(true, true);
break;
}
}
@@ -249,7 +249,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[2][0]+irand(-3,3), AllianceOverrunWP[2][1]+irand(-3,3), AllianceOverrunWP[2][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 5;
- Start(true, true, true);
+ Start(true, true);
break;
case 1:
AddWaypoint(4, AllianceOverrunWP[3][0]+irand(-3,3), AllianceOverrunWP[3][1]+irand(-3,3), AllianceOverrunWP[3][2]);
@@ -258,7 +258,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[5][0]+irand(-3,3), AllianceOverrunWP[5][1]+irand(-3,3), AllianceOverrunWP[5][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 6;
- Start(true, true, true);
+ Start(true, true);
break;
case 2:
AddWaypoint(4, AllianceOverrunWP[6][0]+irand(-3,3), AllianceOverrunWP[6][1]+irand(-3,3), AllianceOverrunWP[6][2]);
@@ -268,7 +268,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[9][0]+irand(-3,3), AllianceOverrunWP[9][1]+irand(-3,3), AllianceOverrunWP[9][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 7;
- Start(true, true, true);
+ Start(true, true);
break;
case 3:
AddWaypoint(4, AllianceOverrunWP[10][0]+irand(-3,3), AllianceOverrunWP[10][1]+irand(-3,3), AllianceOverrunWP[10][2]);
@@ -277,7 +277,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[12][0]+irand(-3,3), AllianceOverrunWP[12][1]+irand(-3,3), AllianceOverrunWP[12][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 6;
- Start(true, true, true);
+ Start(true, true);
break;
case 4:
AddWaypoint(4, AllianceOverrunWP[13][0]+irand(-3,3), AllianceOverrunWP[13][1]+irand(-3,3), AllianceOverrunWP[13][2]);
@@ -286,7 +286,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[15][0]+irand(-3,3), AllianceOverrunWP[15][1]+irand(-3,3), AllianceOverrunWP[15][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 6;
- Start(true, true, true);
+ Start(true, true);
break;
case 5:
AddWaypoint(4, AllianceOverrunWP[16][0]+irand(-3,3), AllianceOverrunWP[16][1]+irand(-3,3), AllianceOverrunWP[16][2]);
@@ -298,14 +298,14 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(AllianceOverrunWP[21][0]+irand(-3,3), AllianceOverrunWP[21][1]+irand(-3,3), AllianceOverrunWP[21][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 9;
- Start(true, true, true);
+ Start(true, true);
break;
default:
for(uint8 i = 22; i < 36; i++)
AddWaypoint( i-18, AllianceOverrunWP[i][0]+irand(-3,3), AllianceOverrunWP[i][1]+irand(-3,3), AllianceOverrunWP[i][2]);
SetDespawnAtEnd(true);
LastOverronPos = 17;
- Start(true, true, true);
+ Start(true, true);
break;
}
}
@@ -326,7 +326,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(HordeOverrunWP[19][0], HordeOverrunWP[19][1], HordeOverrunWP[19][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 8;
- Start(true, true, true);
+ Start(true, true);
break;
case 1:
AddWaypoint( 5, HordeOverrunWP[16][0]+irand(-10,10), HordeOverrunWP[16][1]+irand(-10,10), HordeOverrunWP[16][2]);
@@ -336,14 +336,14 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
m_creature->SetHomePosition(HordeOverrunWP[20][0], HordeOverrunWP[20][1], HordeOverrunWP[20][2],0);
SetDespawnAtEnd(false);
LastOverronPos = 8;
- Start(true, true, true);
+ Start(true, true);
break;
default:
for(uint8 i = 0; i < 16; i++)
AddWaypoint( i+6, HordeOverrunWP[i][0]+irand(-10,10), HordeOverrunWP[i][1]+irand(-10,10), HordeOverrunWP[i][2]);
SetDespawnAtEnd(true);
LastOverronPos = 21;
- Start(true, true, true);
+ Start(true, true);
break;
}
}
@@ -355,7 +355,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
AddWaypoint( i+6, HordeOverrunWP[i][0]+irand(-10,10), HordeOverrunWP[i][1]+irand(-10,10), HordeOverrunWP[i][2]);
SetDespawnAtEnd(true);
LastOverronPos = 21;
- Start(true, true, true);
+ Start(true, true);
}
}
}
@@ -474,7 +474,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
if(pInstance)
{
AddWaypoint(0, HordeWPs[7][0]+irand(-3,3), HordeWPs[7][1]+irand(-3,3), HordeWPs[7][2]);//HordeWPs[7] infront of thrall
- Start(true, true, true);
+ Start(true, true);
SetDespawnAtEnd(false);
}
}
@@ -567,13 +567,13 @@ struct mob_abominationAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
@@ -668,13 +668,13 @@ struct mob_ghoulAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
@@ -787,13 +787,13 @@ struct mob_necromancerAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(true, true, true);
+ Start(true, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(true, true, true);
+ Start(true, true);
SetDespawnAtEnd(false);
}
}
@@ -879,13 +879,13 @@ struct mob_bansheeAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
@@ -974,13 +974,13 @@ struct mob_crypt_fiendAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
@@ -1060,13 +1060,13 @@ struct mob_fel_stalkerAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else//use alliance WPs
{
for (uint8 i = 0; i < 8; ++i)
AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
@@ -1161,12 +1161,12 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 3; ++i)
AddWaypoint(i, FrostWyrmWPs[i][0], FrostWyrmWPs[i][1], FrostWyrmWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else{//fly path FlyPathWPs
for (uint8 i = 0; i < 3; ++i)
AddWaypoint(i, FlyPathWPs[i][0]+irand(-10,10), FlyPathWPs[i][1]+irand(-10,10), FlyPathWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
@@ -1273,12 +1273,12 @@ struct mob_gargoyleAI : public hyjal_trashAI
{
for (uint8 i = 0; i < 3; ++i)
AddWaypoint(i, GargoyleWPs[i][0]+irand(-10,10), GargoyleWPs[i][1]+irand(-10,10), GargoyleWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}else{//fly path FlyPathWPs
for (uint8 i = 0; i < 3; ++i)
AddWaypoint(i, FlyPathWPs[i][0]+irand(-10,10), FlyPathWPs[i][1]+irand(-10,10), FlyPathWPs[i][2]);
- Start(false, true, true);
+ Start(false, true);
SetDespawnAtEnd(false);
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp
index 80542b9a1db..87d1d69dbdf 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp
@@ -336,7 +336,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI
if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA))
{
if (Creature* Taretha = (Unit::GetCreature(*m_creature, TarethaGUID)))
- CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, false, true, PlayerGUID);
+ CAST_AI(npc_escortAI, (Taretha->AI()))->Start(false, true, PlayerGUID);
}
//kill credit creature for quest
@@ -537,7 +537,7 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
DoScriptText(SAY_TH_START_EVENT_PART1, _Creature);
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, player->GetGUID());
CAST_AI(npc_escortAI, (_Creature->AI()))->SetMaxPlayerDistance(100.0f);//not really needed, because it will not despawn if player is too far
CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtEnd(false);
CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtFar(false);
diff --git a/src/bindings/scripts/scripts/zone/darkshore/darkshore.cpp b/src/bindings/scripts/scripts/zone/darkshore/darkshore.cpp
index d266e3721ae..83e0ea4a98f 100644
--- a/src/bindings/scripts/scripts/zone/darkshore/darkshore.cpp
+++ b/src/bindings/scripts/scripts/zone/darkshore/darkshore.cpp
@@ -156,7 +156,7 @@ bool QuestAccept_npc_prospector_remtravel(Player* pPlayer, Creature* pCreature,
{
if(pQuest->GetQuestId() == QUEST_ABSENT_MINDED_PT2)
{
- CAST_AI(npc_escortAI, pCreature->AI())->Start(false, true, false, pPlayer->GetGUID());
+ CAST_AI(npc_escortAI, pCreature->AI())->Start(false, false, pPlayer->GetGUID());
pCreature->setFaction(FACTION_ESCORTEE);
}
diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
index 26aabed2cd7..06770a03859 100644
--- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
+++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
@@ -659,7 +659,7 @@ bool QuestAccept_npc_koltira_deathweaver(Player* pPlayer, Creature* pCreature, c
if (pQuest->GetQuestId() == QUEST_BREAKOUT)
{
pCreature->SetStandState(UNIT_STAND_STATE_STAND);
- CAST_AI(npc_escortAI,pCreature->AI())->Start(false, true, false, pPlayer->GetGUID());
+ CAST_AI(npc_escortAI,pCreature->AI())->Start(false, false, pPlayer->GetGUID());
}
return true;
}
@@ -771,13 +771,6 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
events.ScheduleEvent(EVENT_DEATH_COIL, 5000, GCD_CAST);
}
- void JustDied(Unit *killer)
- {
- if(m_creature->GetEntry() != 29519)
- if(killer->GetTypeId() == TYPEID_PLAYER)
- CAST_PLR(killer)->KilledMonsterCredit(29519,m_creature->GetGUID());
- }
-
void MovementInform(uint32 type, uint32 id)
{
if(type != POINT_MOTION_TYPE)
diff --git a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp
index 07b9179b9af..36676db625e 100644
--- a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp
+++ b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp
@@ -111,7 +111,7 @@ bool GossipSelect_npc_prospector_anvilward(Player *player, Creature *_Creature,
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, false, player->GetGUID());
break;
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/feralas/feralas.cpp b/src/bindings/scripts/scripts/zone/feralas/feralas.cpp
index 7183f732f1e..e780c74e185 100644
--- a/src/bindings/scripts/scripts/zone/feralas/feralas.cpp
+++ b/src/bindings/scripts/scripts/zone/feralas/feralas.cpp
@@ -190,7 +190,7 @@ bool QuestAccept_npc_oox22fe(Player* pPlayer, Creature* pCreature, const Quest*
if (pPlayer->GetTeam() == HORDE)
pCreature->setFaction(FACTION_ESCORTEE_H);
- CAST_AI(npc_escortAI, (pCreature->AI()))->Start(true, true, false, pPlayer->GetGUID());
+ CAST_AI(npc_escortAI, (pCreature->AI()))->Start(true, false, pPlayer->GetGUID());
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp
index 32e0d5dcee9..2509537edd4 100644
--- a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp
+++ b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp
@@ -246,7 +246,7 @@ bool QuestAccept_npc_ranger_lilatha(Player* player, Creature* creature, Quest co
if (quest->GetQuestId() == QUEST_ESCAPE_FROM_THE_CATACOMBS)
{
creature->setFaction(113);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp
index 26520fc16df..8f2e6210110 100644
--- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp
+++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp
@@ -16,7 +16,7 @@
/* ScriptData
SDName: Boss_Gruul
-SD%Complete: 25
+SD%Complete: 50
SDComment: Ground Slam seriously messed up due to core problem
SDCategory: Gruul's Lair
EndScriptData */
@@ -24,30 +24,34 @@ EndScriptData */
#include "precompiled.h"
#include "def_gruuls_lair.h"
-#define SAY_AGGRO -1565010
-#define SAY_SLAM1 -1565011
-#define SAY_SLAM2 -1565012
-#define SAY_SHATTER1 -1565013
-#define SAY_SHATTER2 -1565014
-#define SAY_SLAY1 -1565015
-#define SAY_SLAY2 -1565016
-#define SAY_SLAY3 -1565017
-#define SAY_DEATH -1565018
-#define EMOTE_GROW -1565019
-
-#define SPELL_GROWTH 36300
-#define SPELL_CAVE_IN 36240
-#define SPELL_GROUND_SLAM 33525 //AoE Ground Slam applying Ground Slam to everyone with a script effect (most likely the knock back, we can code it to a set knockback)
-#define SPELL_REVERBERATION 36297 //AoE Silence
-#define SPELL_SHATTER 33654
-
-#define SPELL_SHATTER_EFFECT 33671
-#define SPELL_HURTFUL_STRIKE 33813
-#define SPELL_STONED 33652 //Spell is self cast
-#define SPELL_MAGNETIC_PULL 28337
-#define SPELL_KNOCK_BACK 24199 //Knockback spell until correct implementation is made
-
-#define SPELL_GRONN_LORDS_GRASP 33572 //Triggered by Ground Slam
+enum
+{
+ SAY_AGGRO = -1565010,
+ SAY_SLAM1 = -1565011,
+ SAY_SLAM2 = -1565012,
+ SAY_SHATTER1 = -1565013,
+ SAY_SHATTER2 = -1565014,
+ SAY_SLAY1 = -1565015,
+ SAY_SLAY2 = -1565016,
+ SAY_SLAY3 = -1565017,
+ SAY_DEATH = -1565018,
+
+ EMOTE_GROW = -1565019,
+
+ SPELL_GROWTH = 36300,
+ SPELL_CAVE_IN = 36240,
+ SPELL_GROUND_SLAM = 33525, //AoE Ground Slam applying Ground Slam to everyone with a script effect (most likely the knock back, we can code it to a set knockback)
+ SPELL_REVERBERATION = 36297,
+ SPELL_SHATTER = 33654,
+
+ SPELL_SHATTER_EFFECT = 33671,
+ SPELL_HURTFUL_STRIKE = 33813,
+ SPELL_STONED = 33652, //Spell is self cast by target
+ SPELL_MAGNETIC_PULL = 28337,
+ SPELL_KNOCK_BACK = 24199, //Knockback spell until correct implementation is made
+
+ SPELL_GRONN_LORDS_GRASP = 33572 //Triggered by Ground Slam
+};
struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI
{
diff --git a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp
index 67db4faac91..b0dc4d53786 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp
@@ -231,7 +231,7 @@ bool QuestAccept_npc_wounded_blood_elf(Player* player, Creature* creature, Quest
{
if (quest->GetQuestId() == QUEST_ROAD_TO_FALCON_WATCH)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
// Change faction so mobs attack
creature->setFaction(775);
}
diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp
index ef599a18843..b9d1ea986b2 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp
@@ -99,13 +99,13 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
}
if(pInstance)
- pInstance->SetData(DATA_MOROES_EVENT, NOT_STARTED);
+ pInstance->SetData(TYPE_MOROES, NOT_STARTED);
}
void StartEvent()
{
if(pInstance)
- pInstance->SetData(DATA_MOROES_EVENT, IN_PROGRESS);
+ pInstance->SetData(TYPE_MOROES, IN_PROGRESS);
DoZoneInCombat();
}
@@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
DoScriptText(SAY_DEATH, m_creature);
if (pInstance)
- pInstance->SetData(DATA_MOROES_EVENT, DONE);
+ pInstance->SetData(TYPE_MOROES, DONE);
DeSpawnAdds();
@@ -248,7 +248,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
if(!UpdateVictim() )
return;
- if(pInstance && !pInstance->GetData(DATA_MOROES_EVENT))
+ if(pInstance && !pInstance->GetData(TYPE_MOROES))
{
EnterEvadeMode();
return;
@@ -346,7 +346,7 @@ struct TRINITY_DLL_DECL boss_moroes_guestAI : public ScriptedAI
void Reset()
{
if(pInstance)
- pInstance->SetData(DATA_MOROES_EVENT, NOT_STARTED);
+ pInstance->SetData(TYPE_MOROES, NOT_STARTED);
}
void AcquireGUID()
@@ -382,7 +382,7 @@ struct TRINITY_DLL_DECL boss_moroes_guestAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
- if(pInstance && !pInstance->GetData(DATA_MOROES_EVENT))
+ if(pInstance && !pInstance->GetData(TYPE_MOROES))
EnterEvadeMode();
DoMeleeAttackIfReady();
diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp
index 56194893b17..bc6b9e14161 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp
@@ -113,7 +113,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
m_creature->setActive(true);
- if(pInstance->GetData(DATA_NIGHTBANE_EVENT) == DONE || pInstance->GetData(DATA_NIGHTBANE_EVENT) == IN_PROGRESS)
+ if(pInstance->GetData(TYPE_NIGHTBANE) == DONE || pInstance->GetData(TYPE_NIGHTBANE) == IN_PROGRESS)
{
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
m_creature->RemoveCorpse();
@@ -121,7 +121,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
else
{
if(pInstance)
- pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
+ pInstance->SetData(TYPE_NIGHTBANE, NOT_STARTED);
}
HandleTerraceDoors(true);
@@ -145,7 +145,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
void EnterCombat(Unit *who)
{
if(pInstance)
- pInstance->SetData(DATA_NIGHTBANE_EVENT, IN_PROGRESS);
+ pInstance->SetData(TYPE_NIGHTBANE, IN_PROGRESS);
HandleTerraceDoors(false);
DoYell(YELL_AGGRO, LANG_UNIVERSAL, NULL);
@@ -160,7 +160,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
void JustDied(Unit* killer)
{
if(pInstance)
- pInstance->SetData(DATA_NIGHTBANE_EVENT, DONE);
+ pInstance->SetData(TYPE_NIGHTBANE, DONE);
HandleTerraceDoors(true);
}
diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp
index 691fad1d3f0..fd898db8938 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp
@@ -207,7 +207,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
phase = 1;
if(pInstance)
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_NETHER_DOOR), true);
}
void KilledUnit(Unit *victim)
@@ -233,7 +233,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
positions.push_back(&InfernalPoints[i]);
if(pInstance)
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_NETHER_DOOR), true);
}
void EnterCombat(Unit *who)
@@ -241,7 +241,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
DoScriptText(SAY_AGGRO, m_creature);
if(pInstance)
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), false); // Open the door leading further in
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_NETHER_DOOR), false); // Open the door leading further in
}
void InfernalCleanup()
diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp
index f94d0bf05b5..760cad69f82 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp
@@ -140,8 +140,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if(pInstance)
{
// Not in progress
- pInstance->SetData(DATA_SHADEOFARAN_EVENT, NOT_STARTED);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), true);
+ pInstance->SetData(TYPE_ARAN, NOT_STARTED);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_LIBRARY_DOOR), true);
}
}
@@ -160,8 +160,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if(pInstance)
{
- pInstance->SetData(DATA_SHADEOFARAN_EVENT, DONE);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), true);
+ pInstance->SetData(TYPE_ARAN, DONE);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_LIBRARY_DOOR), true);
}
}
@@ -176,8 +176,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if(pInstance)
{
- pInstance->SetData(DATA_SHADEOFARAN_EVENT, IN_PROGRESS);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), false);
+ pInstance->SetData(TYPE_ARAN, IN_PROGRESS);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_LIBRARY_DOOR), false);
}
}
@@ -227,7 +227,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
{
if(pInstance)
{
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), false);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_LIBRARY_DOOR), false);
CloseDoorTimer = 0;
}
}else CloseDoorTimer -= diff;
diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp
index 185891a7bbd..f039783c815 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp
@@ -200,7 +200,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
ReSummon = false;
if(pInstance)
- pInstance->SetData(DATA_TERESTIAN_EVENT, NOT_STARTED);
+ pInstance->SetData(TYPE_TERESTIAN, NOT_STARTED);
}
void EnterCombat(Unit* who)
@@ -220,7 +220,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
if(Kilrek && !Kilrek->getVictim())
Kilrek->AddThreat(who, 1.0f);
- pInstance->SetData(DATA_TERESTIAN_EVENT, IN_PROGRESS);
+ pInstance->SetData(TYPE_TERESTIAN, IN_PROGRESS);
}else ERROR_INST_DATA(m_creature);
}
@@ -249,7 +249,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
DoScriptText(SAY_DEATH, m_creature);
if(pInstance)
- pInstance->SetData(DATA_TERESTIAN_EVENT, DONE);
+ pInstance->SetData(TYPE_TERESTIAN, DONE);
}
void UpdateAI(const uint32 diff)
diff --git a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp
index 19bc46dfc53..c0634295063 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp
@@ -595,9 +595,9 @@ struct TRINITY_DLL_DECL boss_croneAI : public ScriptedAI
if(pInstance)
{
- pInstance->SetData(DATA_OPERA_EVENT, DONE);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
+ pInstance->SetData(TYPE_OPERA, DONE);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORLEFT), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
@@ -786,9 +786,9 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI
if(pInstance)
{
- pInstance->SetData(DATA_OPERA_EVENT, DONE);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
+ pInstance->SetData(TYPE_OPERA, DONE);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORLEFT), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
@@ -1029,9 +1029,9 @@ struct TRINITY_DLL_DECL boss_julianneAI : public ScriptedAI
if(pInstance)
{
- pInstance->SetData(DATA_OPERA_EVENT, DONE);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
+ pInstance->SetData(TYPE_OPERA, DONE);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORLEFT), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
}
@@ -1120,9 +1120,9 @@ struct TRINITY_DLL_DECL boss_romuloAI : public ScriptedAI
if (pInstance)
{
- pInstance->SetData(DATA_OPERA_EVENT, DONE);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
+ pInstance->SetData(TYPE_OPERA, DONE);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORLEFT), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
diff --git a/src/bindings/scripts/scripts/zone/karazhan/def_karazhan.h b/src/bindings/scripts/scripts/zone/karazhan/def_karazhan.h
index 47162ec2599..67cb5e6ece5 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/def_karazhan.h
+++ b/src/bindings/scripts/scripts/zone/karazhan/def_karazhan.h
@@ -8,31 +8,34 @@
enum
{
- DATA_ATTUMEN_EVENT = 1,
- DATA_MOROES_EVENT = 2,
- DATA_MAIDENOFVIRTUE_EVENT = 3,
- DATA_OPTIONAL_BOSS_EVENT = 4,
- DATA_OPERA_EVENT = 5,
- DATA_CURATOR_EVENT = 6,
- DATA_SHADEOFARAN_EVENT = 7,
- DATA_TERESTIAN_EVENT = 8,
- DATA_NETHERSPITE_EVENT = 9,
- DATA_CHESS_EVENT = 10,
- DATA_MALCHEZZAR_EVENT = 11,
- DATA_NIGHTBANE_EVENT = 12,
+ TYPE_ATTUMEN = 1,
+ TYPE_MOROES = 2,
+ TYPE_MAIDEN = 3,
+ TYPE_OPTIONAL_BOSS = 4,
+ TYPE_OPERA = 5,
+ TYPE_CURATOR = 6,
+ TYPE_ARAN = 7,
+ TYPE_TERESTIAN = 8,
+ TYPE_NETHERSPITE = 9,
+ TYPE_CHESS = 10,
+ TYPE_MALCHEZZAR = 11,
+ TYPE_NIGHTBANE = 12,
+
DATA_OPERA_PERFORMANCE = 13,
DATA_OPERA_OZ_DEATHCOUNT = 14,
+
DATA_KILREK = 15,
DATA_TERESTIAN = 16,
DATA_MOROES = 17,
- DATA_GAMEOBJECT_CURTAINS = 18,
- DATA_GAMEOBJECT_STAGEDOORLEFT = 19,
- DATA_GAMEOBJECT_STAGEDOORRIGHT = 20,
- DATA_GAMEOBJECT_LIBRARY_DOOR = 21,
- DATA_GAMEOBJECT_MASSIVE_DOOR = 22,
- DATA_GAMEOBJECT_NETHER_DOOR = 23,
- DATA_GAMEOBJECT_GAME_DOOR = 24,
- DATA_GAMEOBJECT_GAME_EXIT_DOOR = 25,
+ DATA_GO_CURTAINS = 18,
+ DATA_GO_STAGEDOORLEFT = 19,
+ DATA_GO_STAGEDOORRIGHT = 20,
+ DATA_GO_LIBRARY_DOOR = 21,
+ DATA_GO_MASSIVE_DOOR = 22,
+ DATA_GO_NETHER_DOOR = 23,
+ DATA_GO_GAME_DOOR = 24,
+ DATA_GO_GAME_EXIT_DOOR = 25,
+
DATA_IMAGE_OF_MEDIVH = 26,
DATA_MASTERS_TERRACE_DOOR_1 = 27,
DATA_MASTERS_TERRACE_DOOR_2 = 28,
diff --git a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
index 25c3f9c57f0..813e8181901 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
@@ -45,24 +45,24 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
{
instance_karazhan(Map* map) : ScriptedInstance(map) {Initialize();}
- uint32 Encounters[ENCOUNTERS];
- std::string str_data;
-
- uint32 OperaEvent;
- uint32 OzDeathCount;
-
- uint64 CurtainGUID;
- uint64 StageDoorLeftGUID;
- uint64 StageDoorRightGUID;
- uint64 KilrekGUID;
- uint64 TerestianGUID;
- uint64 MoroesGUID;
- uint64 LibraryDoor; // Door at Shade of Aran
- uint64 MassiveDoor; // Door at Netherspite
- uint64 SideEntranceDoor; // Side Entrance
- uint64 GamesmansDoor; // Door before Chess
- uint64 GamesmansExitDoor; // Door after Chess
- uint64 NetherspaceDoor; // Door at Malchezaar
+ uint32 m_auiEncounter[ENCOUNTERS];
+ std::string strSaveData;
+
+ uint32 m_uiOperaEvent;
+ uint32 m_uiOzDeathCount;
+
+ uint64 m_uiCurtainGUID;
+ uint64 m_uiStageDoorLeftGUID;
+ uint64 m_uiStageDoorRightGUID;
+ uint64 m_uiKilrekGUID;
+ uint64 m_uiTerestianGUID;
+ uint64 m_uiMoroesGUID;
+ uint64 m_uiLibraryDoor; // Door at Shade of Aran
+ uint64 m_uiMassiveDoor; // Door at Netherspite
+ uint64 m_uiSideEntranceDoor; // Side Entrance
+ uint64 m_uiGamesmansDoor; // Door before Chess
+ uint64 m_uiGamesmansExitDoor; // Door after Chess
+ uint64 m_uiNetherspaceDoor; // Door at Malchezaar
uint64 MastersTerraceDoor[2];
uint64 ImageGUID;
uint64 DustCoveredChest;
@@ -70,25 +70,26 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
void Initialize()
{
for (uint8 i = 0; i < ENCOUNTERS; ++i)
- Encounters[i] = NOT_STARTED;
-
- OperaEvent = urand(1,3); // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
- OzDeathCount = 0;
-
- CurtainGUID = 0;
- StageDoorLeftGUID = 0;
- StageDoorRightGUID = 0;
-
- KilrekGUID = 0;
- TerestianGUID = 0;
- MoroesGUID = 0;
-
- LibraryDoor = 0;
- MassiveDoor = 0;
- SideEntranceDoor = 0;
- GamesmansDoor = 0;
- GamesmansExitDoor = 0;
- NetherspaceDoor = 0;
+ m_auiEncounter[i] = NOT_STARTED;
+
+ // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
+ m_uiOperaEvent = urand(1,3);
+ m_uiOzDeathCount = 0;
+
+ m_uiCurtainGUID = 0;
+ m_uiStageDoorLeftGUID = 0;
+ m_uiStageDoorRightGUID = 0;
+
+ m_uiKilrekGUID = 0;
+ m_uiTerestianGUID = 0;
+ m_uiMoroesGUID = 0;
+
+ m_uiLibraryDoor = 0;
+ m_uiMassiveDoor = 0;
+ m_uiSideEntranceDoor = 0;
+ m_uiGamesmansDoor = 0;
+ m_uiGamesmansExitDoor = 0;
+ m_uiNetherspaceDoor = 0;
MastersTerraceDoor[0]= 0;
MastersTerraceDoor[1]= 0;
ImageGUID = 0;
@@ -98,115 +99,68 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
bool IsEncounterInProgress() const
{
for (uint8 i = 0; i < ENCOUNTERS; ++i)
- if (Encounters[i] == IN_PROGRESS)
+ if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false;
}
- uint32 GetData(uint32 identifier)
- {
- switch (identifier)
- {
- case DATA_ATTUMEN_EVENT: return Encounters[0];
- case DATA_MOROES_EVENT: return Encounters[1];
- case DATA_MAIDENOFVIRTUE_EVENT: return Encounters[2];
- case DATA_OPTIONAL_BOSS_EVENT: return Encounters[3];
- case DATA_OPERA_EVENT: return Encounters[4];
- case DATA_CURATOR_EVENT: return Encounters[5];
- case DATA_SHADEOFARAN_EVENT: return Encounters[6];
- case DATA_TERESTIAN_EVENT: return Encounters[7];
- case DATA_NETHERSPITE_EVENT: return Encounters[8];
- case DATA_CHESS_EVENT: return Encounters[9];
- case DATA_MALCHEZZAR_EVENT: return Encounters[10];
- case DATA_NIGHTBANE_EVENT: return Encounters[11];
- case DATA_OPERA_PERFORMANCE: return OperaEvent;
- case DATA_OPERA_OZ_DEATHCOUNT: return OzDeathCount;
- case DATA_IMAGE_OF_MEDIVH: return ImageGUID;
- }
-
- return 0;
- }
-
void OnCreatureCreate(Creature *creature, bool add)
{
switch (creature->GetEntry())
{
- case 17229: KilrekGUID = creature->GetGUID(); break;
- case 15688: TerestianGUID = creature->GetGUID(); break;
- case 15687: MoroesGUID = creature->GetGUID(); break;
+ case 17229: m_uiKilrekGUID = creature->GetGUID(); break;
+ case 15688: m_uiTerestianGUID = creature->GetGUID(); break;
+ case 15687: m_uiMoroesGUID = creature->GetGUID(); break;
}
}
- uint64 GetData64(uint32 data)
- {
- switch (data)
- {
- case DATA_KILREK: return KilrekGUID;
- case DATA_TERESTIAN: return TerestianGUID;
- case DATA_MOROES: return MoroesGUID;
- case DATA_GAMEOBJECT_STAGEDOORLEFT: return StageDoorLeftGUID;
- case DATA_GAMEOBJECT_STAGEDOORRIGHT: return StageDoorRightGUID;
- case DATA_GAMEOBJECT_CURTAINS: return CurtainGUID;
- case DATA_GAMEOBJECT_LIBRARY_DOOR: return LibraryDoor;
- case DATA_GAMEOBJECT_MASSIVE_DOOR: return MassiveDoor;
- case DATA_GO_SIDE_ENTRANCE_DOOR: return SideEntranceDoor;
- case DATA_GAMEOBJECT_GAME_DOOR: return GamesmansDoor;
- case DATA_GAMEOBJECT_GAME_EXIT_DOOR: return GamesmansExitDoor;
- case DATA_GAMEOBJECT_NETHER_DOOR: return NetherspaceDoor;
- case DATA_MASTERS_TERRACE_DOOR_1: return MastersTerraceDoor[0];
- case DATA_MASTERS_TERRACE_DOOR_2: return MastersTerraceDoor[1];
- }
-
- return 0;
- }
-
- void SetData(uint32 type, uint32 data)
+ void SetData(uint32 type, uint32 uiData)
{
- switch (type)
+ switch (type)
{
- case DATA_ATTUMEN_EVENT: Encounters[0] = data; break;
- case DATA_MOROES_EVENT:
- if (Encounters[1] == DONE)
+ case TYPE_ATTUMEN: m_auiEncounter[0] = uiData; break;
+ case TYPE_MOROES:
+ if (m_auiEncounter[1] == DONE)
break;
- Encounters[1] = data;
+ m_auiEncounter[1] = uiData;
break;
- case DATA_MAIDENOFVIRTUE_EVENT: Encounters[2] = data; break;
- case DATA_OPTIONAL_BOSS_EVENT: Encounters[3] = data; break;
- case DATA_OPERA_EVENT: Encounters[4] = data; break;
- case DATA_CURATOR_EVENT: Encounters[5] = data; break;
- case DATA_SHADEOFARAN_EVENT: Encounters[6] = data; break;
- case DATA_TERESTIAN_EVENT: Encounters[7] = data; break;
- case DATA_NETHERSPITE_EVENT: Encounters[8] = data; break;
- case DATA_CHESS_EVENT:
- if (data == DONE)
+ case TYPE_MAIDEN: m_auiEncounter[2] = uiData; break;
+ case TYPE_OPTIONAL_BOSS: m_auiEncounter[3] = uiData; break;
+ case TYPE_OPERA: m_auiEncounter[4] = uiData; break;
+ case TYPE_CURATOR: m_auiEncounter[5] = uiData; break;
+ case TYPE_ARAN: m_auiEncounter[6] = uiData; break;
+ case TYPE_TERESTIAN: m_auiEncounter[7] = uiData; break;
+ case TYPE_NETHERSPITE: m_auiEncounter[8] = uiData; break;
+ case TYPE_CHESS:
+ if (uiData == DONE)
DoRespawnGameObject(DustCoveredChest,DAY);
- Encounters[9] = data;
+ m_auiEncounter[9] = uiData;
break;
- case DATA_MALCHEZZAR_EVENT: Encounters[10] = data; break;
- case DATA_NIGHTBANE_EVENT:
- if (Encounters[11] == DONE)
+ case TYPE_MALCHEZZAR: m_auiEncounter[10] = uiData; break;
+ case TYPE_NIGHTBANE: m_auiEncounter[11] = uiData; break;
+ if (m_auiEncounter[11] == DONE)
break;
- Encounters[11] = data;
+ m_auiEncounter[11] = uiData;
break;
case DATA_OPERA_OZ_DEATHCOUNT:
- if (data == SPECIAL)
- ++OzDeathCount;
- else if (data == IN_PROGRESS)
- OzDeathCount = 0;
+ if (uiData == SPECIAL)
+ ++m_uiOzDeathCount;
+ else if (uiData == IN_PROGRESS)
+ m_uiOzDeathCount = 0;
break;
}
- if(data == DONE)
+ if(uiData == DONE)
{
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
- saveStream << Encounters[0] << " " << Encounters[1] << " " << Encounters[2] << " "
- << Encounters[3] << " " << Encounters[4] << " " << Encounters[5] << " " << Encounters[6] << " "
- << Encounters[7] << " " << Encounters[8] << " " << Encounters[9] << " " << Encounters[10] << " " << Encounters[11];
+ saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " "
+ << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5] << " " << m_auiEncounter[6] << " "
+ << m_auiEncounter[7] << " " << m_auiEncounter[8] << " " << m_auiEncounter[9] << " " << m_auiEncounter[10] << " " << m_auiEncounter[11];
- str_data = saveStream.str();
+ strSaveData = saveStream.str();
SaveToDB();
OUT_SAVE_INST_DATA_COMPLETE;
@@ -225,19 +179,27 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
{
switch(go->GetEntry())
{
- case 183932: CurtainGUID = go->GetGUID(); break;
- case 184278: StageDoorLeftGUID = go->GetGUID(); break;
- case 184279: StageDoorRightGUID = go->GetGUID(); break;
- case 184517: LibraryDoor = go->GetGUID(); break;
- case 185521: MassiveDoor = go->GetGUID(); break;
- case 184276: GamesmansDoor = go->GetGUID(); break;
- case 184277: GamesmansExitDoor = go->GetGUID(); break;
- case 185134: NetherspaceDoor = go->GetGUID(); break;
+ case 183932: m_uiCurtainGUID = go->GetGUID(); break;
+ case 184278:
+ m_uiStageDoorLeftGUID = go->GetGUID();
+ if (m_auiEncounter[4] == DONE)
+ go->SetGoState(GO_STATE_ACTIVE);
+ break;
+ case 184279:
+ m_uiStageDoorRightGUID = go->GetGUID();
+ if (m_auiEncounter[4] == DONE)
+ go->SetGoState(GO_STATE_ACTIVE);
+ break;
+ case 184517: m_uiLibraryDoor = go->GetGUID(); break;
+ case 185521: m_uiMassiveDoor = go->GetGUID(); break;
+ case 184276: m_uiGamesmansDoor = go->GetGUID(); break;
+ case 184277: m_uiGamesmansExitDoor = go->GetGUID(); break;
+ case 185134: m_uiNetherspaceDoor = go->GetGUID(); break;
case 184274: MastersTerraceDoor[0] = go->GetGUID(); break;
case 184280: MastersTerraceDoor[1] = go->GetGUID(); break;
case 184275:
- SideEntranceDoor = go->GetGUID();
- if (GetData(DATA_OPERA_EVENT) != DONE)
+ m_uiSideEntranceDoor = go->GetGUID();
+ if (m_auiEncounter[4] == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
@@ -245,7 +207,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
case 185119: DustCoveredChest = go->GetGUID(); break;
}
- switch(OperaEvent)
+ switch(m_uiOperaEvent)
{
//TODO: Set Object visibilities for Opera based on performance
case EVENT_OZ:
@@ -261,25 +223,73 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
std::string GetSaveData()
{
- return str_data;
+ return strSaveData;
+ }
+
+ uint32 GetData(uint32 uiData)
+ {
+ switch (uiData)
+ {
+ case TYPE_ATTUMEN: return m_auiEncounter[0];
+ case TYPE_MOROES: return m_auiEncounter[1];
+ case TYPE_MAIDEN: return m_auiEncounter[2];
+ case TYPE_OPTIONAL_BOSS: return m_auiEncounter[3];
+ case TYPE_OPERA: return m_auiEncounter[4];
+ case TYPE_CURATOR: return m_auiEncounter[5];
+ case TYPE_ARAN: return m_auiEncounter[6];
+ case TYPE_TERESTIAN: return m_auiEncounter[7];
+ case TYPE_NETHERSPITE: return m_auiEncounter[8];
+ case TYPE_CHESS: return m_auiEncounter[9];
+ case TYPE_MALCHEZZAR: return m_auiEncounter[10];
+ case TYPE_NIGHTBANE: return m_auiEncounter[11];
+ case DATA_OPERA_PERFORMANCE: return m_uiOperaEvent;
+ case DATA_OPERA_OZ_DEATHCOUNT: return m_uiOzDeathCount;
+ case DATA_IMAGE_OF_MEDIVH: return ImageGUID;
+ }
+
+ return 0;
}
- void Load(const char* in)
+ uint64 GetData64(uint32 uiData)
{
- if(!in)
+ switch (uiData)
+ {
+ case DATA_KILREK: return m_uiKilrekGUID;
+ case DATA_TERESTIAN: return m_uiTerestianGUID;
+ case DATA_MOROES: return m_uiMoroesGUID;
+ case DATA_GO_STAGEDOORLEFT: return m_uiStageDoorLeftGUID;
+ case DATA_GO_STAGEDOORRIGHT: return m_uiStageDoorRightGUID;
+ case DATA_GO_CURTAINS: return m_uiCurtainGUID;
+ case DATA_GO_LIBRARY_DOOR: return m_uiLibraryDoor;
+ case DATA_GO_MASSIVE_DOOR: return m_uiMassiveDoor;
+ case DATA_GO_SIDE_ENTRANCE_DOOR: return m_uiSideEntranceDoor;
+ case DATA_GO_GAME_DOOR: return m_uiGamesmansDoor;
+ case DATA_GO_GAME_EXIT_DOOR: return m_uiGamesmansExitDoor;
+ case DATA_GO_NETHER_DOOR: return m_uiNetherspaceDoor;
+ case DATA_MASTERS_TERRACE_DOOR_1: return MastersTerraceDoor[0];
+ case DATA_MASTERS_TERRACE_DOOR_2: return MastersTerraceDoor[1];
+ }
+
+ return 0;
+ }
+
+ void Load(const char* chrIn)
+ {
+ if (!chrIn)
{
OUT_LOAD_INST_DATA_FAIL;
return;
}
- OUT_LOAD_INST_DATA(in);
- std::istringstream loadStream(in);
- loadStream >> Encounters[0] >> Encounters[1] >> Encounters[2] >> Encounters[3]
- >> Encounters[4] >> Encounters[5] >> Encounters[6] >> Encounters[7]
- >> Encounters[8] >> Encounters[9] >> Encounters[10] >> Encounters[11];
+ OUT_LOAD_INST_DATA(chrIn);
+ std::istringstream loadStream(chrIn);
+
+ loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3]
+ >> m_auiEncounter[4] >> m_auiEncounter[5] >> m_auiEncounter[6] >> m_auiEncounter[7]
+ >> m_auiEncounter[8] >> m_auiEncounter[9] >> m_auiEncounter[10] >> m_auiEncounter[11];
for(uint8 i = 0; i < ENCOUNTERS; ++i)
- if(Encounters[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead.
- Encounters[i] = NOT_STARTED;
+ if(m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead.
+ m_auiEncounter[i] = NOT_STARTED;
OUT_LOAD_INST_DATA_COMPLETE;
}
};
diff --git a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp
index a7bab8e75a9..ef55e075c25 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp
@@ -91,16 +91,6 @@ float Spawns[6][2]=
{17534, -10900}, // Julianne
};
-float StageLocations[6][2]=
-{
- {-10866.711, -1779.816}, // Open door, begin walking (0)
- {-10894.917, -1775.467}, // (1)
- {-10896.044, -1782.619}, // Begin Speech after this (2)
- {-10894.917, -1775.467}, // Resume walking (back to spawn point now) after speech (3)
- {-10866.711, -1779.816}, // (4)
- {-10866.700, -1781.030} // Summon mobs, open curtains, close door (5)
-};
-
#define CREATURE_SPOTLIGHT 19525
#define SPELL_SPOTLIGHT 25824
@@ -115,72 +105,83 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
npc_barnesAI(Creature* c) : npc_escortAI(c)
{
RaidWiped = false;
+ m_uiEventId = 0;
pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
- uint64 SpotlightGUID;
+ uint64 m_uiSpotlightGUID;
uint32 TalkCount;
uint32 TalkTimer;
- uint32 CurtainTimer;
uint32 WipeTimer;
- uint32 Event;
+ uint32 m_uiEventId;
bool PerformanceReady;
bool RaidWiped;
- bool IsTalking;
void Reset()
{
+ m_uiSpotlightGUID = 0;
+
TalkCount = 0;
TalkTimer = 2000;
- CurtainTimer = 5000;
WipeTimer = 5000;
PerformanceReady = false;
- IsTalking = false;
if(pInstance)
- {
- pInstance->SetData(DATA_OPERA_EVENT, NOT_STARTED);
+ m_uiEventId = pInstance->GetData(DATA_OPERA_PERFORMANCE);
+ }
+
+ void StartEvent()
+ {
+ if (!pInstance)
+ return;
- Event = pInstance->GetData(DATA_OPERA_PERFORMANCE);
+ pInstance->SetData(TYPE_OPERA, IN_PROGRESS);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), false);
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS), false);
- }
+ //resets count for this event, in case earlier failed
+ if (m_uiEventId == EVENT_OZ)
+ pInstance->SetData(DATA_OPERA_OZ_DEATHCOUNT, IN_PROGRESS);
+
+ Start(false, false);
}
void EnterCombat(Unit* who) {}
void WaypointReached(uint32 i)
{
+ if (!pInstance)
+ return;
+
switch(i)
{
- case 2:
- IsBeingEscorted = false;
+ case 0:
+ m_creature->CastSpell(m_creature, SPELL_TUXEDO, false);
+ pInstance->DoUseDoorOrButton(pInstance->GetData64(DATA_GO_STAGEDOORLEFT));
+ break;
+ case 4:
TalkCount = 0;
- IsTalking = true;
+ IsOnHold = true;
- float x,y,z;
- m_creature->GetPosition(x, y, z);
- if (Creature* Spotlight = m_creature->SummonCreature(CREATURE_SPOTLIGHT, x, y, z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 50000))
+ if (Creature* pSpotlight = m_creature->SummonCreature(CREATURE_SPOTLIGHT,
+ m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0.0f,
+ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000))
{
- Spotlight->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- Spotlight->CastSpell(Spotlight, SPELL_SPOTLIGHT, false);
- SpotlightGUID = Spotlight->GetGUID();
+ pSpotlight->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ pSpotlight->CastSpell(pSpotlight, SPELL_SPOTLIGHT, false);
+ m_uiSpotlightGUID = pSpotlight->GetGUID();
}
break;
-
- case 5:
- if(pInstance)
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), false);
-
- IsBeingEscorted = false;
+ case 8:
+ pInstance->DoUseDoorOrButton(pInstance->GetData64(DATA_GO_STAGEDOORLEFT));
PerformanceReady = true;
- m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
+ break;
+ case 9:
+ PrepareEncounter();
+ pInstance->DoUseDoorOrButton(pInstance->GetData64(DATA_GO_CURTAINS));
break;
}
}
@@ -189,7 +190,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
{
int32 text = 0;
- switch(Event)
+ switch(m_uiEventId)
{
case EVENT_OZ:
if (OzDialogue[count].textid)
@@ -217,52 +218,70 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
DoScriptText(text, m_creature);
}
+ void PrepareEncounter()
+ {
+ debug_log("TSCR: Barnes Opera Event - Introduction complete - preparing encounter %d", m_uiEventId);
+ uint8 index = 0;
+ uint8 count = 0;
+
+ switch(m_uiEventId)
+ {
+ case EVENT_OZ:
+ index = 0;
+ count = 4;
+ break;
+ case EVENT_HOOD:
+ index = 4;
+ count = index+1;
+ break;
+ case EVENT_RAJ:
+ index = 5;
+ count = index+1;
+ break;
+ }
+
+ for(; index < count; ++index)
+ {
+ uint32 entry = ((uint32)Spawns[index][0]);
+ float PosX = Spawns[index][1];
+
+ if (Creature* pCreature = m_creature->SummonCreature(entry, PosX, SPAWN_Y, SPAWN_Z, SPAWN_O, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR*2*IN_MILISECONDS))
+ {
+ // In case database has bad flags
+ pCreature->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
+ pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ }
+ }
+
+ RaidWiped = false;
+ }
+
void UpdateAI(const uint32 diff)
{
npc_escortAI::UpdateAI(diff);
- if(IsTalking)
+ if(IsOnHold)
{
if(TalkTimer < diff)
{
if(TalkCount > 3)
{
- if (Unit* Spotlight = Unit::GetUnit((*m_creature), SpotlightGUID))
- {
- Spotlight->RemoveAllAuras();
- Spotlight->SetVisibility(VISIBILITY_OFF);
- }
+ if (Creature* pSpotlight = Unit::GetCreature(*m_creature, m_uiSpotlightGUID))
+ pSpotlight->ForcedDespawn();
- m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STAND);
- IsTalking = false;
- IsBeingEscorted = true;
+ IsOnHold = false;
return;
}
- m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
Talk(TalkCount);
++TalkCount;
- }else TalkTimer -= diff;
+ }
+ else
+ TalkTimer -= diff;
}
if(PerformanceReady)
{
- if(CurtainTimer)
- {
- if(CurtainTimer <= diff)
- {
- PrepareEncounter();
-
- if(!pInstance)
- return;
-
- if (GameObject* Curtain = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS)))
- Curtain->SetGoState(GO_STATE_ACTIVE);
-
- CurtainTimer = 0;
- }else CurtainTimer -= diff;
- }
-
if(!RaidWiped)
{
if(WipeTimer < diff)
@@ -297,103 +316,53 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
}
}
-
- void StartEvent()
- {
- if(!pInstance)
- return;
-
- pInstance->SetData(DATA_OPERA_EVENT, IN_PROGRESS);
-
- //resets count for this event, in case earlier failed
- if (Event == EVENT_OZ)
- pInstance->SetData(DATA_OPERA_OZ_DEATHCOUNT, IN_PROGRESS);
-
- pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
-
- m_creature->CastSpell(m_creature, SPELL_TUXEDO, true);
- m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
-
- Start(false, false, false);
- }
-
- void PrepareEncounter()
- {
- debug_log("TSCR: Barnes Opera Event - Introduction complete - preparing encounter %d", Event);
- uint8 index = 0;
- uint8 count = 0;
- switch(Event)
- {
- case EVENT_OZ:
- index = 0;
- count = 4;
- break;
-
- case EVENT_HOOD:
- index = 4;
- count = index+1;
- break;
-
- case EVENT_RAJ:
- index = 5;
- count = index+1;
- break;
- }
-
- for( ; index < count; ++index)
- {
- uint32 entry = ((uint32)Spawns[index][0]);
- float PosX = Spawns[index][1];
- if (Creature* pCreature = m_creature->SummonCreature(entry, PosX, SPAWN_Y, SPAWN_Z, SPAWN_O, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR*2*IN_MILISECONDS))
- {
- // In case database has bad flags
- pCreature->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
- pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
- }
-
- CurtainTimer = 10000;
- PerformanceReady = true;
- RaidWiped = false;
- }
};
CreatureAI* GetAI_npc_barnesAI(Creature* _Creature)
{
npc_barnesAI* Barnes_AI = new npc_barnesAI(_Creature);
- for(uint8 i = 0; i < 6; ++i)
- Barnes_AI->AddWaypoint(i, StageLocations[i][0], StageLocations[i][1], 90.465);
+ Barnes_AI->FillPointMovementListForCreature();
- return (Barnes_AI);
+ return (CreatureAI*)Barnes_AI;
}
-bool GossipHello_npc_barnes(Player* player, Creature* _Creature)
+bool GossipHello_npc_barnes(Player* pPlayer, Creature* pCreature)
{
- // Check for death of Moroes.
- ScriptedInstance* pInstance = (_Creature->GetInstanceData());
- if(pInstance && (pInstance->GetData(DATA_MOROES_EVENT) >= DONE))
+ if (ScriptedInstance* pInstance = (ScriptedInstance*)pCreature->GetInstanceData())
{
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, OZ_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
-
- if (player->isGameMaster())
+ // Check for death of Moroes and if opera event is not done already
+ if (pInstance->GetData(TYPE_MOROES) == DONE && pInstance->GetData(TYPE_OPERA) != DONE)
{
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
- }
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, OZ_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+
+ if (pPlayer->isGameMaster())
+ {
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
+ }
+
+ if (npc_barnesAI* pBarnesAI = CAST_AI(npc_barnesAI,pCreature->AI()))
+ {
+ if (!pBarnesAI->RaidWiped)
+ pPlayer->SEND_GOSSIP_MENU(8970, pCreature->GetGUID());
+ else
+ pPlayer->SEND_GOSSIP_MENU(8975, pCreature->GetGUID());
- if(!CAST_AI(npc_barnesAI, _Creature->AI())->RaidWiped)
- player->SEND_GOSSIP_MENU(8970, _Creature->GetGUID());
- else
- player->SEND_GOSSIP_MENU(8975, _Creature->GetGUID());
- }else player->SEND_GOSSIP_MENU(8978, _Creature->GetGUID());
+ return true;
+ }
+ }
+ }
+ pPlayer->SEND_GOSSIP_MENU(8978, pCreature->GetGUID());
return true;
}
bool GossipSelect_npc_barnes(Player *player, Creature *_Creature, uint32 sender, uint32 action)
{
+ npc_barnesAI* pBarnesAI = CAST_AI(npc_barnesAI,_Creature->AI());
+
switch(action)
{
case GOSSIP_ACTION_INFO_DEF+1:
@@ -402,21 +371,21 @@ bool GossipSelect_npc_barnes(Player *player, Creature *_Creature, uint32 sender,
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_barnesAI, _Creature->AI())->StartEvent();
+ pBarnesAI->StartEvent();
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_barnesAI, _Creature->AI())->Event = EVENT_OZ;
+ pBarnesAI->m_uiEventId = EVENT_OZ;
outstring_log("TSCR: player (GUID %i) manually set Opera event to EVENT_OZ",player->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_barnesAI, _Creature->AI())->Event = EVENT_HOOD;
+ pBarnesAI->m_uiEventId = EVENT_HOOD;
outstring_log("TSCR: player (GUID %i) manually set Opera event to EVENT_HOOD",player->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_barnesAI, _Creature->AI())->Event = EVENT_RAJ;
+ pBarnesAI->m_uiEventId = EVENT_RAJ;
outstring_log("TSCR: player (GUID %i) manually set Opera event to EVENT_RAJ",player->GetGUID());
break;
}
@@ -428,18 +397,23 @@ bool GossipSelect_npc_barnes(Player *player, Creature *_Creature, uint32 sender,
# npc_berthold
####*/
-#define SPELL_TELEPORT 39567
+enum
+{
+ SPELL_TELEPORT = 39567
+};
-#define GOSSIP_ITEM_TELEPORT "Teleport me to the Guardian's Library"
+#define GOSSIP_ITEM_TELEPORT "Teleport me to the Guardian's Library"
-bool GossipHello_npc_berthold(Player* player, Creature* _Creature)
+bool GossipHello_npc_berthold(Player* pPlayer, Creature* pCreature)
{
- ScriptedInstance* pInstance = (_Creature->GetInstanceData());
- // Check if Shade of Aran is dead or not
- if(pInstance && (pInstance->GetData(DATA_SHADEOFARAN_EVENT) >= DONE))
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELEPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+ if (ScriptedInstance* pInstance = (ScriptedInstance*)pCreature->GetInstanceData())
+ {
+ // Check if Shade of Aran event is done
+ if (pInstance->GetData(TYPE_ARAN) == DONE)
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELEPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+ }
- player->SEND_GOSSIP_MENU(_Creature->GetNpcTextId(), _Creature->GetGUID());
+ pPlayer->SEND_GOSSIP_MENU(pCreature->GetNpcTextId(), pCreature->GetGUID());
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp b/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp
index f50c6ef3d58..1b376fa7879 100644
--- a/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp
+++ b/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp
@@ -329,7 +329,7 @@ public:
AddWaypoint(i, Clintar_spirit_WP[i][0], Clintar_spirit_WP[i][1], Clintar_spirit_WP[i][2], (uint32)Clintar_spirit_WP[i][4]);
}
PlayerGUID = player->GetGUID();
- Start(true,true,false,PlayerGUID);
+ Start(true,false,PlayerGUID);
}
return;
}
diff --git a/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp b/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp
index 1a8a41649e0..1cbc5b37765 100644
--- a/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp
+++ b/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp
@@ -876,7 +876,7 @@ bool QuestAccept_npc_bessy(Player* player, Creature* creature, Quest const* ques
{
creature->setFaction(113);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp
index b8f4bae71a7..e7fba961340 100644
--- a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp
+++ b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp
@@ -131,7 +131,7 @@ bool QuestAccept_npc_willix(Player* player, Creature* creature, Quest const* que
{
if (quest->GetQuestId() == QUEST_WILLIX_THE_IMPORTER)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
DoScriptText(SAY_READY, creature, player);
creature->setFaction(113);
}
diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp
index 2531d3d6db6..b56a60c0a1e 100644
--- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp
+++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp
@@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL mob_scarlet_traineeAI : public npc_escortAI
{
if (Start_Timer < diff)
{
- Start(true,true,true);
+ Start(true,true);
Start_Timer = 0;
}else Start_Timer -= diff;
}
diff --git a/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp
index 23d5ccbb99b..a4a8f3532e0 100644
--- a/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp
+++ b/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp
@@ -126,7 +126,7 @@ bool GossipSelect_npc_shadowfang_prisoner(Player* pPlayer, Creature* pCreature,
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
pPlayer->CLOSE_GOSSIP_MENU();
- CAST_AI(npc_escortAI, (pCreature->AI()))->Start(false, true, false);
+ CAST_AI(npc_escortAI, (pCreature->AI()))->Start(false, false);
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
index e02d077f927..e6875d2dcc5 100644
--- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
+++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
@@ -1059,7 +1059,7 @@ bool QuestAccept_npc_earthmender_wilda(Player* player, Creature* creature, Quest
if (quest->GetQuestId() == QUEST_ESCAPE_FROM_COILSKAR_CISTERN)
{
creature->setFaction(113);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
}
diff --git a/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp b/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp
index 899e7f1eda4..53f9603542e 100644
--- a/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp
+++ b/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp
@@ -341,7 +341,7 @@ public:
float Radius = 10.0;
if( m_creature->IsWithinDistInMap(who, Radius) )
{
- Start(false, false, false, who->GetGUID());
+ Start(false, false, who->GetGUID());
}
}
}
diff --git a/src/bindings/scripts/scripts/zone/sholazar_basin/sholazar_basin.cpp b/src/bindings/scripts/scripts/zone/sholazar_basin/sholazar_basin.cpp
index d48f4377a09..7034f68ae5f 100644
--- a/src/bindings/scripts/scripts/zone/sholazar_basin/sholazar_basin.cpp
+++ b/src/bindings/scripts/scripts/zone/sholazar_basin/sholazar_basin.cpp
@@ -135,7 +135,7 @@ bool GossipSelect_npc_injured_rainspeaker_oracle(Player *player, Creature *_Crea
{
if( action == GOSSIP_ACTION_INFO_DEF+1 )
{
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(true, false, player->GetGUID());
CAST_AI(npc_escortAI, (_Creature->AI()))->SetMaxPlayerDistance(35.0f);
_Creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
DoScriptText(SAY_START_IRO,_Creature);
diff --git a/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp b/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp
index 4d60d2c4f9c..df81dfd51f9 100644
--- a/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp
+++ b/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp
@@ -171,7 +171,7 @@ bool QuestAccept_npc_deathstalker_erland(Player* player, Creature* creature, Que
if (quest->GetQuestId() == QUEST_ESCORTING)
{
DoScriptText(SAY_QUESTACCEPT, creature, player);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp b/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp
index adf846322d3..8a548a080f2 100644
--- a/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp
+++ b/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp
@@ -151,7 +151,7 @@ bool QuestAccept_npc_kaya_flathoof(Player* player, Creature* creature, Quest con
{
if (quest->GetQuestId() == QUEST_PROTECT_KAYA)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
DoScriptText(SAY_START, creature);
creature->setFaction(113);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
diff --git a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp
index ff9be652189..9d59062abcb 100644
--- a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp
+++ b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp
@@ -196,7 +196,7 @@ struct TRINITY_DLL_DECL npc_custodian_of_timeAI : public npc_escortAI
float Radius = 10.0;
if( m_creature->IsWithinDistInMap(who, Radius) )
{
- Start(false, false, false, who->GetGUID());
+ Start(false, false, who->GetGUID());
}
}
}
@@ -435,7 +435,7 @@ bool QuestAccept_npc_OOX17(Player* player, Creature* creature, Quest const* ques
creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
DoScriptText(SAY_CHICKEN_ACC, creature);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp
index 26cefa35289..f9c283b0224 100644
--- a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp
+++ b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp
@@ -205,7 +205,7 @@ public:
float Radius = 10.0;
if( m_creature->IsWithinDistInMap(who, Radius) )
{
- Start(false, false, false, who->GetGUID());
+ Start(false, false, who->GetGUID());
}
}
}
@@ -484,7 +484,7 @@ bool QuestAccept_npc_isla_starmane(Player* player, Creature* creature, Quest con
{
if (quest->GetQuestId() == QUEST_EFTW_H || quest->GetQuestId() == QUEST_EFTW_A)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
creature->setFaction(113);
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp b/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp
index a4d2f429b51..a5d2a9d12f3 100644
--- a/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp
+++ b/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp
@@ -101,7 +101,7 @@ bool QuestAccept_npc_swiftmountain(Player* player, Creature* creature, Quest con
{
if (quest->GetQuestId() == QUEST_HOMEWARD_BOUND)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
DoScriptText(SAY_READY, creature, player);
creature->setFaction(113);
}
diff --git a/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp b/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp
index f8e7976f541..751bea7b168 100644
--- a/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp
+++ b/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp
@@ -124,7 +124,7 @@ bool QuestAccept_npc_ame(Player* player, Creature* creature, Quest const* quest)
{
if (quest->GetQuestId() == QUEST_CHASING_AME)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(false, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(false, false, player->GetGUID());
DoScriptText(SAY_READY, creature, player);
creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
// Change faction so mobs attack
diff --git a/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp b/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp
index 8fae2895a07..e366d7c9fa8 100644
--- a/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp
+++ b/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp
@@ -193,7 +193,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI
eventProgress++;
DoScriptText(SAY_BANISH_THE_SPIRITS, m_creature);
DoCast(m_creature, SPELL_SERPENTINE_CLEANSING);
- CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(false);
+ //CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(false);
eventTimer = 30000;
m_creature->SummonCreature(NPC_DEVIATE_VIPER, -61.5261, 273.676, -92.8442, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
m_creature->SummonCreature(NPC_DEVIATE_VIPER, -58.4658, 280.799, -92.8393, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
@@ -202,7 +202,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI
else
if (eventProgress == 2)
{
- CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(true);
+ //CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(true);
DoScriptText(SAY_CAVERNS_PURIFIED, m_creature);
pInstance->SetData(TYPE_NARALEX_PART2, DONE);
if (m_creature->HasAura(SPELL_SERPENTINE_CLEANSING))
@@ -222,7 +222,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI
{
eventProgress++;
eventTimer = 15000;
- CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(false);
+ //CAST_AI(npc_escortAI, m_creature->AI())->SetCanDefend(false);
if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX)))
DoCast(naralex, SPELL_NARALEXS_AWAKENING, true);
DoScriptText(EMOTE_AWAKENING_RITUAL, m_creature);
@@ -395,7 +395,7 @@ bool GossipSelect_npc_disciple_of_naralex(Player *player, Creature *_Creature, u
_Creature->setFaction(250);
_Creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
- CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, false, player->GetGUID());
+ CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, false, player->GetGUID());
CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtFar(false);
CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtEnd(false);
}
diff --git a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp
index 3548e9ee089..083e41476ad 100644
--- a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp
+++ b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp
@@ -175,7 +175,7 @@ bool QuestAccept_npc_daphne_stilwell(Player* pPlayer, Creature* pCreature, const
if (pQuest->GetQuestId() == QUEST_TOME_VALOR)
{
DoScriptText(SAY_DS_START, pCreature);
- CAST_AI(npc_escortAI, (pCreature->AI()))->Start(true, true, true, pPlayer->GetGUID());
+ CAST_AI(npc_escortAI, (pCreature->AI()))->Start(true, true, pPlayer->GetGUID());
}
return true;
@@ -261,7 +261,7 @@ bool QuestAccept_npc_defias_traitor(Player* player, Creature* creature, Quest co
{
if (quest->GetQuestId() == QUEST_DEFIAS_BROTHERHOOD)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, player->GetGUID());
DoScriptText(SAY_START, creature, player);
}
diff --git a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp
index a24827dcd85..6646fc70cfc 100644
--- a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp
+++ b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp
@@ -338,7 +338,7 @@ bool QuestAccept_npc_kayra_longmane(Player* pPlayer, Creature* pCreature, Quest
if (pQuest->GetQuestId() == QUEST_ESCAPE_FROM)
{
DoScriptText(SAY_START, pCreature, pPlayer);
- CAST_AI(npc_escortAI, pCreature->AI())->Start(false, true, false, pPlayer->GetGUID());
+ CAST_AI(npc_escortAI, pCreature->AI())->Start(false, false, pPlayer->GetGUID());
}
return true;
}