diff options
Diffstat (limited to 'src')
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; } |
