aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKudlaty <none@none>2009-08-13 05:47:23 +0200
committerKudlaty <none@none>2009-08-13 05:47:23 +0200
commitf6ec531d4d467945d169aabbf86a3444a710117a (patch)
tree10107e20f22a9510f0d4400e24c9f1a5f0911b51 /src
parent32e960d5bc75fe8dfac2bb902c470d8904210924 (diff)
Merge [SD2]
r1221 Restore compile after changes to KilledMonster(). Remove no longer needed code where creature_template are expected to have definitions for KillCredit. Replace one creature script with areatrigger script and some related code cleanup. Requires Mangos 8190+ r1222 Move waypoints for Barnes to database. Also adjust code and simplify parts of pre-event. Some additional code cleanup r1223 Clean up labels for Kara instance. r1224 Replace use of MANGOS_DLL_SPEC with MANGOS_DLL_DECL as expected in script. Thanks Zor for notice. - skip r1225 Add new options for escortAI. For normal escorts, InstantRespawn can be set true (normal will despawn creature and use database spawntimesecs) For non-escorting scripts, option to loop path can be set. Creature will return to respawn coords and after, start path from beginning. r1226 Remove escortAI option to defend self. Creature must be able to enter combat with any attacking and then defend self by attacking back. If custom cases exist where creature must not be set in combat with attacking, then custom script is expected. r1227 Using _SECURE_SCL=0 to speedup iterators in Windows (release build, ref Mangos rev 8194). Patch by Vladimir - skip r1228 Clean up gruul instance + scripts, add instance save and apply sd2 code style. Some adjustment to hurtful strike. Minor adjustments to other spell abilities. Create own AI for adds, and avoid repetitive code being common for all adds. Patch by Abim - skip r1229 Move door code to instance script and simplify Set/GetData() code and aggro check. - skip r1230 Remove no longer needed call to Reset() in Council_Base_AI and correct typo. - skip --HG-- branch : trunk
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;
}