From 50f9acbefddae6d013a9559e582ba802d393e6fb Mon Sep 17 00:00:00 2001 From: "philipp.dallig" Date: Tue, 24 May 2011 16:10:17 +0000 Subject: [PATCH] =?UTF-8?q?gro=C3=9Fer=20svn=20merge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ScriptMgr.cpp | 72 + ScriptMgr.h | 1 + VC100/100ScriptDev2.vcxproj | 207 +-- VC100/100ScriptDev2.vcxproj.filters | 1547 +++++++---------- VC90/90ScriptDev2.vcproj | 78 +- addition/3_mangos_teleguy.sql | 2 +- addition/4_scriptdev2_arena_honor.sql | 8 +- addition/718_draktharon_mangos.sql | 2 +- addition/719_ankahet_mangos.sql | 2 +- addition/721_icecrown_mangos.sql | 3 +- addition/723_icecrown_down_mangos.sql | 2 +- addition/730_obsidian_sanctum_mangos.sql | 2 + addition/733_mangos_ulduar_raid.sql | 23 +- addition/735_eye_of_acherus_scriptdev2.sql | 8 +- addition/736_oculus_mangos.sql | 10 +- base/BSW_instance.cpp | 26 + base/BSW_instance.h | 2 + base/escort_ai.cpp | 12 +- base/escort_ai.h | 6 +- base/follower_ai.cpp | 12 +- base/follower_ai.h | 2 +- include/sc_creature.cpp | 2 +- include/sc_instance.cpp | 19 +- include/sc_instance.h | 4 +- scripts/eastern_kingdoms/arathi_highlands.cpp | 2 +- .../blackrock_depths/blackrock_depths.cpp | 32 +- .../blackrock_depths/boss_tomb_of_seven.cpp | 8 +- .../blackrock_spire/boss_drakkisath.cpp | 2 +- .../boss_pyroguard_emberseer.cpp | 13 +- .../blackwing_lair/boss_razorgore.cpp | 2 + .../blackwing_lair/boss_vaelastrasz.cpp | 4 +- .../blackwing_lair/boss_victor_nefarius.cpp | 18 +- scripts/eastern_kingdoms/blasted_lands.cpp | 24 +- scripts/eastern_kingdoms/burning_steppes.cpp | 26 +- .../eastern_kingdoms/eastern_plaguelands.cpp | 20 +- scripts/eastern_kingdoms/eversong_woods.cpp | 159 +- scripts/eastern_kingdoms/ghostlands.cpp | 41 +- .../gnomeregan/gnomeregan.cpp | 4 +- scripts/eastern_kingdoms/hinterlands.cpp | 4 +- scripts/eastern_kingdoms/ironforge.cpp | 14 +- .../karazhan/boss_midnight.cpp | 2 +- .../eastern_kingdoms/karazhan/boss_moroes.cpp | 3 +- .../karazhan/boss_prince_malchezaar.cpp | 4 +- .../karazhan/boss_shade_of_aran.cpp | 2 +- .../karazhan/bosses_opera.cpp | 2 +- .../eastern_kingdoms/karazhan/karazhan.cpp | 18 +- scripts/eastern_kingdoms/loch_modan.cpp | 18 +- .../boss_felblood_kaelthas.cpp | 8 +- .../magisters_terrace/boss_vexallus.cpp | 2 +- .../magisters_terrace/magisters_terrace.cpp | 14 +- .../molten_core/boss_majordomo_executus.cpp | 6 +- .../eastern_kingdoms/redridge_mountains.cpp | 2 +- .../scarlet_enclave/ebon_hold.cpp | 255 ++- .../boss_interrogator_vishas.cpp | 2 +- .../boss_mograine_and_whitemane.cpp | 12 +- .../instance_scarlet_monastery.cpp | 25 +- .../scarlet_monastery/scarlet_monastery.h | 9 +- .../scholomance/boss_darkmaster_gandling.cpp | 4 +- .../scholomance/scholomance.h | 2 +- scripts/eastern_kingdoms/searing_gorge.cpp | 20 +- .../instance_shadowfang_keep.cpp | 22 +- .../shadowfang_keep/shadowfang_keep.cpp | 8 +- .../shadowfang_keep/shadowfang_keep.h | 30 +- .../eastern_kingdoms/silverpine_forest.cpp | 125 +- scripts/eastern_kingdoms/stormwind_city.cpp | 14 +- .../sunken_temple/sunken_temple.h | 4 +- .../sunwell_plateau/boss_brutallus.cpp | 135 +- .../sunwell_plateau/boss_eredar_twins.cpp | 465 +---- .../sunwell_plateau/boss_felmyst.cpp | 560 +----- .../sunwell_plateau/boss_kalecgos.cpp | 16 +- .../sunwell_plateau/boss_kiljaeden.cpp | 1541 +--------------- .../instance_sunwell_plateau.cpp | 555 +++--- .../sunwell_plateau/sunwell_plateau.h | 122 +- scripts/eastern_kingdoms/swamp_of_sorrows.cpp | 19 +- scripts/eastern_kingdoms/tirisfal_glades.cpp | 8 +- scripts/eastern_kingdoms/uldaman/uldaman.cpp | 92 +- scripts/eastern_kingdoms/undercity.cpp | 14 +- .../eastern_kingdoms/western_plaguelands.cpp | 22 +- scripts/eastern_kingdoms/westfall.cpp | 4 +- scripts/eastern_kingdoms/wetlands.cpp | 2 +- .../eastern_kingdoms/zulaman/boss_janalai.cpp | 2 +- .../zulaman/boss_malacrass.cpp | 408 +---- .../eastern_kingdoms/zulaman/boss_zuljin.cpp | 327 +--- .../zulaman/instance_zulaman.cpp | 12 - scripts/eastern_kingdoms/zulaman/zulaman.cpp | 4 +- scripts/examples/example_creature.cpp | 2 +- scripts/examples/example_escort.cpp | 8 +- scripts/examples/example_gossip_codebox.cpp | 2 +- scripts/kalimdor/ashenvale.cpp | 6 +- scripts/kalimdor/azshara.cpp | 18 +- scripts/kalimdor/azuremyst_isle.cpp | 18 +- scripts/kalimdor/bloodmyst_isle.cpp | 16 +- scripts/kalimdor/boss_azuregos.cpp | 186 +- .../dark_portal/dark_portal.cpp | 10 +- .../caverns_of_time/dark_portal/dark_portal.h | 37 +- .../dark_portal/instance_dark_portal.cpp | 389 ++--- .../caverns_of_time/hyjal/boss_archimonde.cpp | 2 +- .../kalimdor/caverns_of_time/hyjal/hyjal.cpp | 6 +- .../old_hillsbrad/old_hillsbrad.cpp | 34 +- scripts/kalimdor/darkshore.cpp | 4 +- scripts/kalimdor/desolace.cpp | 6 +- scripts/kalimdor/dustwallow_marsh.cpp | 24 +- scripts/kalimdor/felwood.cpp | 24 +- scripts/kalimdor/feralas.cpp | 14 +- scripts/kalimdor/moonglade.cpp | 40 +- scripts/kalimdor/mulgore.cpp | 18 +- scripts/kalimdor/orgrimmar.cpp | 30 +- .../razorfen_downs/razorfen_downs.cpp | 287 ++- .../razorfen_kraul/razorfen_kraul.cpp | 2 +- scripts/kalimdor/silithus.cpp | 48 +- scripts/kalimdor/stonetalon_mountains.cpp | 8 +- scripts/kalimdor/tanaris.cpp | 38 +- .../temple_of_ahnqiraj/boss_cthun.cpp | 16 +- scripts/kalimdor/the_barrens.cpp | 46 +- scripts/kalimdor/thousand_needles.cpp | 10 +- scripts/kalimdor/thunder_bluff.cpp | 6 +- scripts/kalimdor/ungoro_crater.cpp | 2 +- .../wailing_caverns/wailing_caverns.cpp | 8 +- scripts/kalimdor/winterspring.cpp | 26 +- scripts/kalimdor/zulfarrak/zulfarrak.cpp | 12 +- scripts/northrend/borean_tundra.cpp | 71 +- scripts/northrend/dalaran.cpp | 4 +- scripts/northrend/dragonblight.cpp | 16 +- scripts/northrend/howling_fjord.cpp | 108 +- scripts/northrend/icecrown.cpp | 89 +- .../halls_of_reflection/boss_falric.cpp | 7 +- .../halls_of_reflection/boss_lich_king.cpp | 4 +- .../halls_of_reflection/boss_marwyn.cpp | 13 +- .../halls_of_reflection.cpp | 9 +- .../halls_of_reflection/halls_of_reflection.h | 138 +- .../instance_halls_of_reflection.cpp | 124 +- .../icecrown_citadel/boss_lord_marrowgar.cpp | 2 +- scripts/northrend/sholazar_basin.cpp | 18 +- scripts/northrend/storm_peaks.cpp | 42 +- .../ulduar/halls_of_lightning/boss_ionar.cpp | 2 +- .../ulduar/halls_of_lightning/boss_loken.cpp | 2 +- .../halls_of_lightning/boss_volkhan.cpp | 7 +- .../ulduar/halls_of_stone/halls_of_stone.cpp | 6 +- .../northrend/ulduar/ulduar/boss_thorim.cpp | 163 +- .../utgarde_pinnacle/utgarde_pinnacle.h | 4 +- scripts/northrend/zuldrak.cpp | 15 +- .../boss_ambassador_hellmaw.cpp | 2 +- scripts/outland/black_temple/black_temple.cpp | 2 +- scripts/outland/black_temple/boss_illidan.cpp | 28 +- .../black_temple/boss_shade_of_akama.cpp | 6 +- .../outland/black_temple/illidari_council.cpp | 2 +- scripts/outland/blades_edge_mountains.cpp | 16 +- .../boss_fathomlord_karathress.cpp | 48 +- .../serpent_shrine/boss_lady_vashj.cpp | 8 +- .../instance_serpent_shrine.cpp | 277 ++- .../serpent_shrine/serpent_shrine.h | 57 +- .../boss_mekgineer_steamrigger.cpp | 4 +- .../steam_vault/instance_steam_vault.cpp | 220 +-- .../steam_vault/steam_vault.h | 52 +- scripts/outland/gruuls_lair/boss_gruul.cpp | 4 +- .../gruuls_lair/boss_high_king_maulgar.cpp | 10 +- scripts/outland/gruuls_lair/gruuls_lair.h | 41 +- .../gruuls_lair/instance_gruuls_lair.cpp | 222 ++- .../blood_furnace/blood_furnace.h | 76 +- .../blood_furnace/boss_broggok.cpp | 2 +- .../blood_furnace/instance_blood_furnace.cpp | 351 ++-- .../boss_nazan_and_vazruden.cpp | 6 +- .../hellfire_ramparts/hellfire_ramparts.h | 36 +- .../instance_hellfire_ramparts.cpp | 131 +- .../shattered_halls/boss_nethekurse.cpp | 2 +- scripts/outland/hellfire_peninsula.cpp | 58 +- scripts/outland/nagrand.cpp | 169 +- scripts/outland/netherstorm.cpp | 151 +- scripts/outland/shadowmoon_valley.cpp | 455 +++-- scripts/outland/shattrath_city.cpp | 114 +- .../tempest_keep/arcatraz/arcatraz.cpp | 379 ++-- .../outland/tempest_keep/arcatraz/arcatraz.h | 35 +- .../arcatraz/boss_harbinger_skyriss.cpp | 263 +-- .../arcatraz/instance_arcatraz.cpp | 4 +- .../botanica/boss_warp_splinter.cpp | 2 +- .../tempest_keep/the_eye/boss_astromancer.cpp | 8 +- .../tempest_keep/the_eye/boss_kaelthas.cpp | 29 +- .../tempest_keep/the_eye/instance_the_eye.cpp | 186 +- .../outland/tempest_keep/the_eye/the_eye.h | 64 +- scripts/outland/terokkar_forest.cpp | 20 +- scripts/outland/zangarmarsh.cpp | 28 +- scripts/world/bosses_emerald_dragons.cpp | 180 +- scripts/world/go_scripts.cpp | 73 +- scripts/world/guards.cpp | 28 +- scripts/world/npc_professions.cpp | 80 +- scripts/world/npcs_special.cpp | 258 ++- sd2_revision_nr.h | 2 +- sql/Updates/r2057_scriptdev2.sql | 2 +- sql/Updates/r2092_mangos.sql | 1 + sql/Updates/r2092_scriptdev2.sql | 4 + sql/Updates/r2101_mangos.sql | 1 + sql/Updates/r2101_scriptdev2.sql | 3 + sql/Updates/r2107_scriptdev2.sql | 6 + sql/Updates/r2112_mangos.sql | 1 + sql/Updates/r2112_scriptdev2.sql | 38 + sql/Updates/r2113_scriptdev2.sql | 12 + sql/Updates/r2114_scriptdev2.sql | 7 + sql/Updates/r2116_scriptdev2.sql | 12 + sql/mangos_scriptname_full.sql | 3 + sql/scriptdev2_script_full.sql | 88 +- system/ScriptLoader.cpp | 14 +- 201 files changed, 5377 insertions(+), 8597 deletions(-) create mode 100644 sql/Updates/r2092_mangos.sql create mode 100644 sql/Updates/r2092_scriptdev2.sql create mode 100644 sql/Updates/r2101_mangos.sql create mode 100644 sql/Updates/r2101_scriptdev2.sql create mode 100644 sql/Updates/r2107_scriptdev2.sql create mode 100644 sql/Updates/r2112_mangos.sql create mode 100644 sql/Updates/r2112_scriptdev2.sql create mode 100644 sql/Updates/r2113_scriptdev2.sql create mode 100644 sql/Updates/r2114_scriptdev2.sql create mode 100644 sql/Updates/r2116_scriptdev2.sql diff --git a/ScriptMgr.cpp b/ScriptMgr.cpp index a8120b3..6f658c9 100644 --- a/ScriptMgr.cpp +++ b/ScriptMgr.cpp @@ -12,6 +12,7 @@ #include "../system/ScriptLoader.h" #include "../system/system.h" #include "../../../game/ScriptMgr.h" +#include "World.h" typedef std::vector SDScriptVec; int num_sc_scripts; @@ -19,6 +20,23 @@ SDScriptVec m_scripts; Config SD2Config; +/********************************************************************** ++additions for windows compiler +**********************************************************************/ +template<> bool MaNGOS::Singleton::si_destroyed; +template<> bool MaNGOS::Singleton::si_destroyed; +template<> World *MaNGOS::Singleton::si_instance; +World::World() +{ +} +World::~World() +{ +} +ObjectMgr::~ObjectMgr() +{ +} +/***********************************************************************/ + QueryResult* strSD2Pquery(char* str) { return SD2Database.Query(str); @@ -253,6 +271,9 @@ char const* GetScriptLibraryVersion() MANGOS_DLL_EXPORT bool GossipHello(Player* pPlayer, Creature* pCreature) { + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->pGossipHello) @@ -266,6 +287,9 @@ bool GossipHello(Player* pPlayer, Creature* pCreature) MANGOS_DLL_EXPORT bool GOGossipHello(Player *pPlayer, GameObject *pGo) { + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pGossipHelloGO) @@ -281,6 +305,9 @@ bool GossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 { debug_log("SD2: Gossip selection, sender: %u, action: %u", uiSender, uiAction); + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->pGossipSelect) @@ -298,6 +325,9 @@ bool GOGossipSelect(Player *pPlayer, GameObject *pGo, uint32 sender, uint32 acti { debug_log("SD2: GO Gossip selection, sender: %u, action: %u", sender, action); + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pGossipSelectGO) @@ -313,6 +343,9 @@ bool GossipSelectWithCode(Player* pPlayer, Creature* pCreature, uint32 uiSender, { debug_log("SD2: Gossip selection with code, sender: %u, action: %u", uiSender, uiAction); + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->pGossipSelectWithCode) @@ -328,6 +361,9 @@ bool GOGossipSelectWithCode(Player *pPlayer, GameObject *pGo, uint32 sender, uin { debug_log("SD2: GO Gossip selection with code, sender: %u, action: %u", sender, action); + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pGossipSelectGOWithCode) @@ -341,6 +377,9 @@ bool GOGossipSelectWithCode(Player *pPlayer, GameObject *pGo, uint32 sender, uin MANGOS_DLL_EXPORT bool QuestAccept(Player* pPlayer, Creature* pCreature, const Quest* pQuest) { + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->pQuestAcceptNPC) @@ -354,6 +393,9 @@ bool QuestAccept(Player* pPlayer, Creature* pCreature, const Quest* pQuest) MANGOS_DLL_EXPORT bool QuestRewarded(Player* pPlayer, Creature* pCreature, Quest const* pQuest) { + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->pQuestRewardedNPC) @@ -380,6 +422,9 @@ uint32 GetNPCDialogStatus(Player* pPlayer, Creature* pCreature) MANGOS_DLL_EXPORT uint32 GetGODialogStatus(Player* pPlayer, GameObject* pGo) { + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pDialogStatusGO) @@ -393,6 +438,9 @@ uint32 GetGODialogStatus(Player* pPlayer, GameObject* pGo) MANGOS_DLL_EXPORT bool ItemQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest) { + if (!pItem) + return false; + Script *tmpscript = m_scripts[pItem->GetProto()->ScriptId]; if (!tmpscript || !tmpscript->pQuestAcceptItem) @@ -406,6 +454,9 @@ bool ItemQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest) MANGOS_DLL_EXPORT bool GOUse(Player* pPlayer, GameObject* pGo) { + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pGOUse) @@ -417,6 +468,9 @@ bool GOUse(Player* pPlayer, GameObject* pGo) MANGOS_DLL_EXPORT bool GOQuestAccept(Player* pPlayer, GameObject* pGo, const Quest* pQuest) { + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pQuestAcceptGO) @@ -430,6 +484,9 @@ bool GOQuestAccept(Player* pPlayer, GameObject* pGo, const Quest* pQuest) MANGOS_DLL_EXPORT bool GOQuestRewarded(Player* pPlayer, GameObject* pGo, Quest const* pQuest) { + if (!pGo) + return false; + Script *tmpscript = m_scripts[pGo->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pQuestRewardedGO) @@ -466,6 +523,9 @@ bool ProcessEvent(uint32 uiEventId, Object* pSource, Object* pTarget, bool bIsSt MANGOS_DLL_EXPORT CreatureAI* GetCreatureAI(Creature* pCreature) { + if (!pCreature) + return false; + Script *tmpscript = m_scripts[pCreature->GetScriptId()]; if (!tmpscript || !tmpscript->GetAI) @@ -477,6 +537,9 @@ CreatureAI* GetCreatureAI(Creature* pCreature) MANGOS_DLL_EXPORT bool ItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets) { + if (!pItem) + return false; + Script *tmpscript = m_scripts[pItem->GetProto()->ScriptId]; if (!tmpscript || !tmpscript->pItemUse) @@ -488,6 +551,9 @@ bool ItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets) MANGOS_DLL_EXPORT bool EffectDummyCreature(Unit* pCaster, uint32 spellId, SpellEffectIndex effIndex, Creature* pTarget) { + if (!pTarget) + return false; + Script *tmpscript = m_scripts[pTarget->GetScriptId()]; if (!tmpscript || !tmpscript->pEffectDummyNPC) @@ -499,6 +565,9 @@ bool EffectDummyCreature(Unit* pCaster, uint32 spellId, SpellEffectIndex effInde MANGOS_DLL_EXPORT bool EffectDummyGameObject(Unit* pCaster, uint32 spellId, SpellEffectIndex effIndex, GameObject* pTarget) { + if (!pTarget) + return false; + Script *tmpscript = m_scripts[pTarget->GetGOInfo()->ScriptId]; if (!tmpscript || !tmpscript->pEffectDummyGO) @@ -510,6 +579,9 @@ bool EffectDummyGameObject(Unit* pCaster, uint32 spellId, SpellEffectIndex effIn MANGOS_DLL_EXPORT bool EffectDummyItem(Unit* pCaster, uint32 spellId, SpellEffectIndex effIndex, Item* pTarget) { + if (!pTarget) + return false; + Script *tmpscript = m_scripts[pTarget->GetProto()->ScriptId]; if (!tmpscript || !tmpscript->pEffectDummyItem) diff --git a/ScriptMgr.h b/ScriptMgr.h index 4e27f92..97bdba9 100644 --- a/ScriptMgr.h +++ b/ScriptMgr.h @@ -118,6 +118,7 @@ QueryResult* strSD2Pquery(char*); // Not registered scripts storage Script* GetScriptByName(std::string scriptName); + // ********************************************************* // **************** Internal hook mechanics **************** diff --git a/VC100/100ScriptDev2.vcxproj b/VC100/100ScriptDev2.vcxproj index 6c7eda5..c894053 100644 --- a/VC100/100ScriptDev2.vcxproj +++ b/VC100/100ScriptDev2.vcxproj @@ -153,7 +153,7 @@ - /MP %(AdditionalOptions) + /MP -Zm110 %(AdditionalOptions) ..\..\..\..\dep\include\;..\..\..\shared\;..\..\..\framework\;..\..\..\game\;..\include\;..\base\;..\..\..\..\dep\ACE_wrappers\;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;SCRIPT;_SECURE_SCL=0;%(PreprocessorDefinitions) false @@ -216,35 +216,15 @@ + + + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -280,11 +260,23 @@ + + + + + + + + + + + + @@ -294,10 +286,10 @@ - + @@ -316,6 +308,7 @@ + @@ -330,22 +323,20 @@ - - - - - - - + - + + + + + @@ -366,9 +357,15 @@ + + - + + + + + @@ -398,6 +395,7 @@ + @@ -405,28 +403,10 @@ - - - - - - - - - - - - - - - - - - - - + + @@ -441,17 +421,26 @@ + + + + + + + + + @@ -460,6 +449,10 @@ + + + + @@ -471,11 +464,17 @@ + + + + + + - + @@ -518,13 +517,12 @@ - - + @@ -543,7 +541,6 @@ - @@ -562,17 +559,18 @@ + - - - - + + + + @@ -593,19 +591,19 @@ + + + - - - - + @@ -625,32 +623,29 @@ + - - - - - - - - - - - + + + + + + + - + @@ -668,6 +663,9 @@ + + + @@ -698,33 +696,37 @@ + + + + + + - + + - - - - + - + Create @@ -732,9 +734,9 @@ Create Create - - - + + NotUsing + @@ -746,6 +748,13 @@ + + + + + + + @@ -765,7 +774,6 @@ - @@ -777,7 +785,6 @@ - @@ -785,6 +792,7 @@ + @@ -795,12 +803,19 @@ - - + + + + + + + + + @@ -814,14 +829,10 @@ - - - - - + + - Extracting revision cd "$(SolutionDir)" diff --git a/VC100/100ScriptDev2.vcxproj.filters b/VC100/100ScriptDev2.vcxproj.filters index 1b15e87..ef9a270 100644 --- a/VC100/100ScriptDev2.vcxproj.filters +++ b/VC100/100ScriptDev2.vcxproj.filters @@ -300,6 +300,12 @@ + + base + + + base + base @@ -312,85 +318,34 @@ base - - scripts\battlegrounds - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms - - - scripts\eastern_kingdoms + + include - - scripts\eastern_kingdoms + + include - - scripts\eastern_kingdoms + + include - - scripts\eastern_kingdoms + + include - - scripts\eastern_kingdoms + + include - - scripts\eastern_kingdoms + + scripts\battlegrounds - - scripts\eastern_kingdoms + + scripts\custom - - scripts\eastern_kingdoms + + scripts\custom - + scripts\eastern_kingdoms - + scripts\eastern_kingdoms @@ -498,12 +453,36 @@ scripts\eastern_kingdoms\blackwing_lair + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\deadmines scripts\eastern_kingdoms\deadmines + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\gnomeregan @@ -513,6 +492,18 @@ scripts\eastern_kingdoms\gnomeregan + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms\karazhan + scripts\eastern_kingdoms\karazhan @@ -540,9 +531,6 @@ scripts\eastern_kingdoms\karazhan - - scripts\eastern_kingdoms\karazhan - scripts\eastern_kingdoms\karazhan @@ -552,6 +540,9 @@ scripts\eastern_kingdoms\karazhan + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\magisters_terrace @@ -606,6 +597,9 @@ scripts\eastern_kingdoms\molten_core + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\scarlet_enclave @@ -648,39 +642,21 @@ scripts\eastern_kingdoms\scholomance - - scripts\eastern_kingdoms\scholomance - - - scripts\eastern_kingdoms\scholomance - - - scripts\eastern_kingdoms\scholomance - scripts\eastern_kingdoms\scholomance scripts\eastern_kingdoms\scholomance - - scripts\eastern_kingdoms\scholomance - - - scripts\eastern_kingdoms\scholomance - - - scripts\eastern_kingdoms\scholomance - - - scripts\eastern_kingdoms\scholomance - scripts\eastern_kingdoms\scholomance scripts\eastern_kingdoms\scholomance + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\shadowfang_keep @@ -690,12 +666,24 @@ scripts\eastern_kingdoms\shadowfang_keep - - scripts\eastern_kingdoms\stratholme + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms scripts\eastern_kingdoms\stratholme + + scripts\eastern_kingdoms\stratholme + scripts\eastern_kingdoms\stratholme @@ -756,15 +744,33 @@ scripts\eastern_kingdoms\sunwell_plateau + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\uldaman - + scripts\eastern_kingdoms\uldaman - + scripts\eastern_kingdoms\uldaman + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + + + scripts\eastern_kingdoms + scripts\eastern_kingdoms\zulaman @@ -852,89 +858,59 @@ scripts\kalimdor + + scripts\kalimdor\blackfathom_deeps + scripts\kalimdor scripts\kalimdor - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\culling_of_stratholme - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\dark_portal - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\dark_portal - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\dark_portal - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\dark_portal - - scripts\kalimdor + + scripts\kalimdor\caverns_of_time\dark_portal - - scripts\kalimdor - - - scripts\kalimdor - - - scripts\kalimdor - - - scripts\kalimdor\blackfathom_deeps - - - scripts\kalimdor\caverns_of_time\culling_of_stratholme - - - scripts\kalimdor\caverns_of_time\culling_of_stratholme - - - scripts\kalimdor\caverns_of_time\dark_portal - - - scripts\kalimdor\caverns_of_time\dark_portal - - - scripts\kalimdor\caverns_of_time\dark_portal - - - scripts\kalimdor\caverns_of_time\dark_portal - - - scripts\kalimdor\caverns_of_time\dark_portal - - - scripts\kalimdor\caverns_of_time\hyjal + + scripts\kalimdor\caverns_of_time\hyjal scripts\kalimdor\caverns_of_time\hyjal @@ -960,12 +936,27 @@ scripts\kalimdor\caverns_of_time\old_hillsbrad + + scripts\kalimdor + + + scripts\kalimdor + scripts\kalimdor\dire_maul scripts\kalimdor\dire_maul + + scripts\kalimdor + + + scripts\kalimdor + + + scripts\kalimdor + scripts\kalimdor\maraudon @@ -978,12 +969,21 @@ scripts\kalimdor\maraudon + + scripts\kalimdor + + + scripts\kalimdor + scripts\kalimdor\onyxias_lair scripts\kalimdor\onyxias_lair + + scripts\kalimdor + scripts\kalimdor\razorfen_downs @@ -992,6 +992,9 @@ scripts\kalimdor\razorfen_kraul + + + scripts\kalimdor\razorfen_kraul scripts\kalimdor\ruins_of_ahnqiraj @@ -1017,6 +1020,18 @@ scripts\kalimdor\ruins_of_ahnqiraj + + scripts\kalimdor + + + scripts\kalimdor + + + scripts\kalimdor + + + scripts\kalimdor + scripts\kalimdor\temple_of_ahnqiraj @@ -1050,9 +1065,27 @@ scripts\kalimdor\temple_of_ahnqiraj + + scripts\kalimdor + + + scripts\kalimdor + + + scripts\kalimdor + + + scripts\kalimdor + scripts\kalimdor\wailing_caverns + + scripts\kalimdor\wailing_caverns + + + scripts\kalimdor + scripts\kalimdor\zulfarrak @@ -1062,414 +1095,209 @@ scripts\kalimdor\zulfarrak - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\ahnkahet - - scripts\outland + + scripts\northrend\azjol-nerub\azjol-nerub - - scripts\outland + + scripts\northrend\azjol-nerub\azjol-nerub - - scripts\outland + + scripts\northrend\azjol-nerub\azjol-nerub - - scripts\outland + + scripts\northrend\azjol-nerub\azjol-nerub - - scripts\outland\auchindoun\auchenai_crypts + + scripts\northrend - - scripts\outland\auchindoun\mana_tombs + + scripts\northrend\crusaders_coliseum\trial_of_the_champion - - scripts\outland\auchindoun\mana_tombs + + scripts\northrend\crusaders_coliseum\trial_of_the_champion - - scripts\outland\auchindoun\sethekk_halls + + scripts\northrend\crusaders_coliseum\trial_of_the_champion - - scripts\outland\auchindoun\sethekk_halls + + scripts\northrend\crusaders_coliseum\trial_of_the_champion - - scripts\outland\auchindoun\sethekk_halls + + scripts\northrend\crusaders_coliseum\trial_of_the_champion - - scripts\outland\auchindoun\shadow_labyrinth + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\auchindoun\shadow_labyrinth + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\auchindoun\shadow_labyrinth + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\auchindoun\shadow_labyrinth + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\auchindoun\shadow_labyrinth + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\black_temple + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\black_temple + + scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - scripts\outland\black_temple + + scripts\northrend - - scripts\outland\black_temple + + scripts\northrend - - scripts\outland\black_temple + + scripts\northrend\draktharon_keep - - scripts\outland\black_temple + + scripts\northrend\draktharon_keep - - scripts\outland\black_temple + + scripts\northrend\draktharon_keep - - scripts\outland\black_temple + + scripts\northrend\draktharon_keep - - scripts\outland\black_temple + + scripts\northrend\draktharon_keep - - scripts\outland\black_temple + + scripts\northrend - - scripts\outland\black_temple + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend\gundrak - - scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\northrend - - scripts\outland\coilfang_reservoir\steam_vault + + scripts\northrend - - scripts\outland\coilfang_reservoir\steam_vault + + scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - scripts\outland\coilfang_reservoir\steam_vault + + scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - scripts\outland\coilfang_reservoir\steam_vault + + scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - scripts\outland\coilfang_reservoir\underbog - - - scripts\outland\gruuls_lair - - - scripts\outland\gruuls_lair - - - scripts\outland\gruuls_lair - - - scripts\outland\hellfire_citadel\blood_furnace - - - scripts\outland\hellfire_citadel\blood_furnace - - - scripts\outland\hellfire_citadel\blood_furnace - - - scripts\outland\hellfire_citadel\blood_furnace - - - scripts\outland\hellfire_citadel\hellfire_ramparts - - - scripts\outland\hellfire_citadel\hellfire_ramparts - - - scripts\outland\hellfire_citadel\hellfire_ramparts - - - scripts\outland\hellfire_citadel\hellfire_ramparts - - - scripts\outland\hellfire_citadel\magtheridons_lair - - - scripts\outland\hellfire_citadel\magtheridons_lair - - - scripts\outland\hellfire_citadel\shattered_halls - - - scripts\outland\hellfire_citadel\shattered_halls - - - scripts\outland\hellfire_citadel\shattered_halls - - - scripts\outland\hellfire_citadel\shattered_halls - - - scripts\outland\tempest_keep\arcatraz - - - scripts\outland\tempest_keep\arcatraz - - - scripts\outland\tempest_keep\arcatraz - - - scripts\outland\tempest_keep\botanica - - - scripts\outland\tempest_keep\botanica - - - scripts\outland\tempest_keep\botanica - - - scripts\outland\tempest_keep\the_eye - - - scripts\outland\tempest_keep\the_eye - - - scripts\outland\tempest_keep\the_eye - - - scripts\outland\tempest_keep\the_eye - - - scripts\outland\tempest_keep\the_eye - - - scripts\outland\tempest_keep\the_mechanar - - - scripts\outland\tempest_keep\the_mechanar - - - scripts\outland\tempest_keep\the_mechanar - - - scripts\outland\tempest_keep\the_mechanar - - - scripts\outland\tempest_keep\the_mechanar - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - scripts\world - - - include - - - include - - - include - - - include - - - system - - - system - - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\azjol-nerub - - - scripts\northrend\azjol-nerub\azjol-nerub + + scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - scripts\northrend\azjol-nerub\azjol-nerub + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - scripts\northrend\azjol-nerub\azjol-nerub + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - scripts\northrend\crusaders_coliseum\trial_of_the_champion + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - scripts\northrend\crusaders_coliseum\trial_of_the_champion + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - scripts\northrend\crusaders_coliseum\trial_of_the_champion + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - scripts\northrend\crusaders_coliseum\trial_of_the_champion + + scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - scripts\northrend\crusaders_coliseum\trial_of_the_champion + + scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\draktharon_keep + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\draktharon_keep + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\draktharon_keep + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\draktharon_keep + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\draktharon_keep + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel - - scripts\northrend\gundrak + + scripts\northrend\icecrown_citadel\icecrown_citadel scripts\northrend\naxxramas @@ -1522,6 +1350,9 @@ scripts\northrend\nexus\eye_of_eternity + + scripts\northrend\nexus\eye_of_eternity + scripts\northrend\nexus\nexus @@ -1537,12 +1368,54 @@ scripts\northrend\nexus\nexus + + scripts\northrend\nexus\oculus + + + scripts\northrend\nexus\oculus + + + scripts\northrend\nexus\oculus + + + scripts\northrend\nexus\oculus + + + scripts\northrend\nexus\oculus + + + scripts\northrend\nexus\oculus + scripts\northrend\obsidian_sanctum scripts\northrend\obsidian_sanctum + + scripts\northrend\ruby_sanctum + + + scripts\northrend\ruby_sanctum + + + scripts\northrend\ruby_sanctum + + + scripts\northrend\ruby_sanctum + + + scripts\northrend\ruby_sanctum + + + scripts\northrend\ruby_sanctum + + + scripts\northrend + + + scripts\northrend + scripts\northrend\ulduar\halls_of_lightning @@ -1558,6 +1431,9 @@ scripts\northrend\ulduar\halls_of_lightning + + scripts\northrend\ulduar\halls_of_stone + scripts\northrend\ulduar\halls_of_stone @@ -1615,38 +1491,41 @@ scripts\northrend\ulduar\ulduar - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls + + scripts\northrend\ulduar\ulduar - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls + + scripts\northrend\ulduar\ulduar - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls + + scripts\northrend\utgarde_keep\utgarde_keep - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls + + scripts\northrend\utgarde_keep\utgarde_keep - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + + scripts\northrend\utgarde_keep\utgarde_keep - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + + scripts\northrend\utgarde_keep\utgarde_keep - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + + scripts\northrend\utgarde_keep\utgarde_keep - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + + scripts\northrend\utgarde_keep\utgarde_pinnacle - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + + scripts\northrend\utgarde_keep\utgarde_pinnacle - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron + + scripts\northrend\utgarde_keep\utgarde_pinnacle - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron + + scripts\northrend\utgarde_keep\utgarde_pinnacle + + + scripts\northrend\utgarde_keep\utgarde_pinnacle scripts\northrend\vault_of_archavon @@ -1663,116 +1542,38 @@ scripts\northrend\vault_of_archavon - - scripts\northrend\violet_hold - - - scripts\northrend\violet_hold - - - scripts\northrend\violet_hold - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - - scripts\outland + + scripts\northrend\violet_hold - - scripts\northrend\icecrown_citadel\icecrown_citadel + + scripts\northrend\violet_hold - - scripts\northrend\icecrown_citadel\icecrown_citadel + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend\violet_hold - - scripts\northrend\naxxramas + + scripts\northrend - - scripts\northrend\naxxramas + + scripts\outland\auchindoun\auchenai_crypts scripts\outland\auchindoun\auchenai_crypts @@ -1780,8 +1581,8 @@ scripts\outland\auchindoun\mana_tombs - - scripts\northrend\naxxramas + + scripts\outland\auchindoun\mana_tombs scripts\outland\auchindoun\sethekk_halls @@ -1789,278 +1590,279 @@ scripts\outland\auchindoun\sethekk_halls - - scripts\northrend\naxxramas - - - scripts\northrend\naxxramas - - - scripts\northrend\naxxramas + + scripts\outland\auchindoun\sethekk_halls - - scripts\northrend\naxxramas + + scripts\outland\auchindoun\sethekk_halls - - scripts\northrend\naxxramas + + scripts\outland\auchindoun\shadow_labyrinth - - scripts\northrend\nexus\eye_of_eternity + + scripts\outland\auchindoun\shadow_labyrinth - - scripts\northrend\nexus\eye_of_eternity + + scripts\outland\auchindoun\shadow_labyrinth - - scripts\northrend\nexus\nexus + + scripts\outland\auchindoun\shadow_labyrinth - - scripts\northrend\nexus\nexus + + scripts\outland\auchindoun\shadow_labyrinth - - scripts\northrend\nexus\nexus + + scripts\outland\black_temple - - scripts\northrend\nexus\nexus + + scripts\outland\black_temple - - scripts\northrend\nexus\nexus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\nexus\oculus + + scripts\outland\black_temple - - scripts\northrend\obsidian_sanctum + + scripts\outland\black_temple - - scripts\northrend\obsidian_sanctum + + scripts\outland\black_temple - - scripts\northrend\ruby_sanctum + + scripts\outland - - scripts\northrend\ruby_sanctum + + scripts\outland - - scripts\northrend\ruby_sanctum + + scripts\outland - - scripts\northrend\ruby_sanctum + + scripts\outland\coilfang_reservoir\serpent_shrine - - scripts\northrend\ruby_sanctum + + scripts\outland\coilfang_reservoir\serpent_shrine - - scripts\northrend\ruby_sanctum + + scripts\outland\coilfang_reservoir\serpent_shrine - - scripts\northrend\ulduar\halls_of_lightning + + scripts\outland\coilfang_reservoir\serpent_shrine - - scripts\northrend\ulduar\halls_of_lightning + + scripts\outland\coilfang_reservoir\serpent_shrine scripts\outland\coilfang_reservoir\serpent_shrine + + scripts\outland\coilfang_reservoir\serpent_shrine + scripts\outland\coilfang_reservoir\slave_pens scripts\outland\coilfang_reservoir\steam_vault - - scripts\northrend\ulduar\halls_of_lightning - - - scripts\northrend\ulduar\halls_of_stone - - - scripts\northrend\ulduar\halls_of_stone - - - scripts\northrend\ulduar\halls_of_stone + + scripts\outland\coilfang_reservoir\steam_vault - - scripts\northrend\ulduar\halls_of_stone + + scripts\outland\coilfang_reservoir\steam_vault - - scripts\northrend\ulduar\halls_of_stone + + scripts\outland\coilfang_reservoir\steam_vault - - scripts\northrend\ulduar\ulduar + + scripts\outland\coilfang_reservoir\underbog - - scripts\northrend\ulduar\ulduar + + scripts\outland\gruuls_lair - - scripts\northrend\ulduar\ulduar + + scripts\outland\gruuls_lair - - scripts\northrend\ulduar\ulduar + + scripts\outland\gruuls_lair - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\blood_furnace - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\blood_furnace - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\blood_furnace - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\blood_furnace - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\hellfire_ramparts - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\hellfire_ramparts - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\hellfire_ramparts - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\hellfire_ramparts - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\magtheridons_lair - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\magtheridons_lair - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\shattered_halls - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\shattered_halls - - scripts\northrend\ulduar\ulduar + + scripts\outland\hellfire_citadel\shattered_halls - - scripts\northrend\utgarde_keep\utgarde_keep + + scripts\outland\hellfire_citadel\shattered_halls - - scripts\northrend\utgarde_keep\utgarde_keep + + scripts\outland - - scripts\northrend\utgarde_keep\utgarde_keep + + scripts\outland - - scripts\northrend\utgarde_keep\utgarde_keep + + scripts\outland - - scripts\northrend\utgarde_keep\utgarde_keep + + scripts\outland - - scripts\northrend\utgarde_keep\utgarde_pinnacle + + scripts\outland - - scripts\northrend\utgarde_keep\utgarde_pinnacle + + scripts\outland\tempest_keep\arcatraz - - scripts\northrend\utgarde_keep\utgarde_pinnacle + + scripts\outland\tempest_keep\arcatraz - - scripts\northrend\utgarde_keep\utgarde_pinnacle + + scripts\outland\tempest_keep\arcatraz - - scripts\northrend\utgarde_keep\utgarde_pinnacle + + scripts\outland\tempest_keep\botanica - - scripts\northrend\vault_of_archavon + + scripts\outland\tempest_keep\botanica - - scripts\northrend\vault_of_archavon + + scripts\outland\tempest_keep\botanica - - scripts\northrend\vault_of_archavon + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\vault_of_archavon + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\vault_of_archavon + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_eye - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_mechanar - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_mechanar - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_mechanar - - scripts\northrend\violet_hold + + scripts\outland\tempest_keep\the_mechanar - - scripts\northrend\violet_hold + + scripts\outland - - scripts\northrend\violet_hold + + scripts\outland - - base + + scripts\world - - base + + scripts\world - - scripts\custom + + scripts\world - - scripts\custom + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + scripts\world - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + system - - scripts\kalimdor\caverns_of_time\culling_of_stratholme + + system - - scripts\northrend\ruby_sanctum + + system + + + + + + + + + base + + + base + base @@ -2073,11 +1875,29 @@ base + + include + + + include + + + include + + + include + + + include + + + include + scripts\eastern_kingdoms\blackrock_depths - scripts\eastern_kingdoms\blackrock_depths + scripts\eastern_kingdoms\blackrock_spire scripts\eastern_kingdoms\blackwing_lair @@ -2181,24 +2001,33 @@ scripts\northrend\gundrak - - scripts\northrend\icecrown_citadel\icecrown_citadel - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls + + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection + scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron + + scripts\northrend\icecrown_citadel\icecrown_citadel + scripts\northrend\naxxramas + + scripts\northrend\nexus\eye_of_eternity + scripts\northrend\nexus\nexus + + scripts\northrend\nexus\oculus + scripts\northrend\obsidian_sanctum @@ -2265,21 +2094,6 @@ scripts\outland\tempest_keep\the_mechanar - - include - - - include - - - include - - - include - - - include - system @@ -2287,85 +2101,16 @@ system + + + + + + + + + - - scripts\northrend\azjol-nerub\ahnkahet - - - scripts\northrend\azjol-nerub\azjol-nerub - - - scripts\northrend\crusaders_coliseum\trial_of_the_champion - - - scripts\northrend\crusaders_coliseum\trial_of_the_crusader - - - scripts\northrend\draktharon_keep - - - scripts\northrend\gundrak - - - scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls - - - scripts\northrend\icecrown_citadel\frozen_halls\halls_of_reflection - - - scripts\northrend\icecrown_citadel\frozen_halls\pit_of_saron - - - scripts\northrend\icecrown_citadel\icecrown_citadel - - - scripts\northrend\naxxramas - - - scripts\northrend\nexus\eye_of_eternity - - - scripts\northrend\nexus\nexus - - - scripts\northrend\nexus\oculus - - - scripts\northrend\obsidian_sanctum - - - scripts\northrend\ruby_sanctum - - - scripts\northrend\ulduar\halls_of_lightning - - - scripts\northrend\ulduar\halls_of_stone - - - scripts\northrend\ulduar\ulduar - - - scripts\northrend\utgarde_keep\utgarde_keep - - - scripts\northrend\utgarde_keep\utgarde_pinnacle - - - scripts\northrend\vault_of_archavon - - - scripts\northrend\violet_hold - - - base - - - base - - - scripts\kalimdor\caverns_of_time\culling_of_stratholme - diff --git a/VC90/90ScriptDev2.vcproj b/VC90/90ScriptDev2.vcproj index 2159108..9d5aca5 100644 --- a/VC90/90ScriptDev2.vcproj +++ b/VC90/90ScriptDev2.vcproj @@ -356,6 +356,22 @@ + + + + + + + + @@ -1378,11 +1394,11 @@ > - - @@ -1886,10 +1898,6 @@ RelativePath="..\scripts\northrend\draktharon_keep\draktharon_keep.h" > - - @@ -2118,10 +2126,6 @@ RelativePath="..\scripts\northrend\ruby_sanctum\instance_ruby_sanctum.cpp" > - - @@ -2453,10 +2457,6 @@ RelativePath="..\scripts\northrend\icecrown_citadel\icecrown_citadel\boss_valithria_dreamwalker.cpp" > - - @@ -2497,15 +2497,15 @@ > @@ -2552,6 +2552,10 @@ RelativePath="..\scripts\northrend\icecrown_citadel\frozen_halls\forge_of_souls\forge_of_souls.cpp" > + + @@ -3127,27 +3131,19 @@ > + + + + - - - - - - - - @@ -3341,6 +3337,14 @@ RelativePath="..\ScriptMgr.h" > + + + + diff --git a/addition/3_mangos_teleguy.sql b/addition/3_mangos_teleguy.sql index 4a12b30..29f6b8f 100644 --- a/addition/3_mangos_teleguy.sql +++ b/addition/3_mangos_teleguy.sql @@ -1,3 +1,3 @@ DELETE FROM `creature_template` WHERE `entry`=99001; INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `PowerType`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `vehicle_id`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES -(99001, 0, 0, 0, 0, 0, 18, 0, 18, 0, 'Slappy McFry', 'The Teleport Guy', NULL, 0, 59, 61, 6700, 24000, 0, 5598, 5875, 4049, 35, 35, 1, 1.48, 1.14286, 1, 0, 98, 147, 0, 37, 1.4, 1400, 1400, 2, 0, 0, 0, 0, 0, 0, 0, 78, 118, 30, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'mob_teleguy'); +(99001, 0, 0, 0, 0, 0, 18, 0, 18, 0, 'Slappy McFry', 'The Teleport Guy', NULL, 0, 59, 61, 6700, 24000, 0, 5598, 5875, 4049, 35, 35, 1, 1.48, 1.14286, 1, 0, 98, 147, 0, 37, 1.4, 1400, 1400, 2, 0, 0, 0, 0, 0, 0, 0, 78, 118, 30, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'mob_teleguy'); \ No newline at end of file diff --git a/addition/4_scriptdev2_arena_honor.sql b/addition/4_scriptdev2_arena_honor.sql index 794b8f5..77bc9fd 100644 --- a/addition/4_scriptdev2_arena_honor.sql +++ b/addition/4_scriptdev2_arena_honor.sql @@ -1,9 +1,9 @@ -- npc arena-honor exchange -DELETE FROM `script_texts` WHERE `entry` in (-1001007, -1001008); -INSERT INTO `script_texts` (`entry`,`content_loc8`, `content_default`, `sound`, `type`, `language`, `emote`, `comment`) VALUES -('-1001007','Недостаточно ХонорПойнтов!','Your not has enough HonorPoints!','','0','0','0','Unsuccesfull - honorpoint.'), -('-1001008','Недостаточно АренаПойнтов!','Your not has enough AranaPoints!','','0','0','0','Unsuccesfull - arenapoint.'); +DELETE FROM script_texts WHERE entry in (-1001007, -1001008); +INSERT INTO script_texts (entry,content_loc8, content_default, sound, type, language, emote, comment) VALUES +('-1001007','Недостаточно ХонорПойнтов!','Your not has enough HonorPoints!','0','0','0','0','Unsuccesfull - honorpoint.'), +('-1001008','Недостаточно АренаПойнтов!','Your not has enough AranaPoints!','0','0','0','0','Unsuccesfull - arenapoint.'); -- Gossips DELETE FROM `gossip_texts` WHERE `entry` BETWEEN -3000774 AND -3000769; diff --git a/addition/718_draktharon_mangos.sql b/addition/718_draktharon_mangos.sql index 74c8d87..9138320 100644 --- a/addition/718_draktharon_mangos.sql +++ b/addition/718_draktharon_mangos.sql @@ -26,7 +26,7 @@ DELETE FROM `creature_template` WHERE (`entry`=26632); INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (26632, 31360, 0, 0, 0, 0, 27072, 0, 27072, 0, 'The Prophet Tharon\'ja', '', '', 76, 77, 275025, 275025, 0, 0, 0, 16, 16, 0, 1, 1, 1, 350, 450, 0, 400, 7.5, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 450, 75, 6, 72, 26632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'boss_tharonja'); DELETE FROM `creature_template` WHERE (`entry`=31360); -INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (31360, 0, 0, 0, 0, 0, 27072, 0, 27072, 0, 'The Prophet Tharon\'ja (1)', '', '', 82, 82, 512278, 512278, 4169, 4169, 0, 16, 16, 0, 1, 1, 1, 450, 650, 0, 750, 13, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 530, 100, 6, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 38, 1, 0, 43670, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, ''); +INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (31360, 0, 0, 0, 0, 0, 27072, 0, 27072, 0, 'The Prophet Tharon\'ja (1)', '', '', 82, 82, 512278, 512278, 4169, 4169, 0, 16, 16, 0, 1, 1, 1, 450, 650, 0, 750, 13, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 530, 100, 6, 72, 31360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 38, 1, 0, 43670, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, ''); DELETE FROM `spell_script_target` WHERE `entry` = 49555; INSERT INTO `spell_script_target` VALUES (49555, 2, 27753); diff --git a/addition/719_ankahet_mangos.sql b/addition/719_ankahet_mangos.sql index 883e006..40b7d6a 100644 --- a/addition/719_ankahet_mangos.sql +++ b/addition/719_ankahet_mangos.sql @@ -113,4 +113,4 @@ UPDATE `creature_template` SET `AIname`='EventAI' WHERE `entry` = 30176; DELETE FROM `creature_ai_scripts` WHERE `creature_id` = 30176; INSERT INTO `creature_ai_scripts` (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`) VALUES ('3017610', '30176', '11', '0', '100', '6', '0', '0', '0', '0', '11', '56151', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', ''), -('3017611', '30176', '8', '0', '100', '6', '56153', '0', '0', '0', '28', '0', '56153', '0', '0', '0', '0', '0', '0', '0', '0', '0', ''); +('3017611', '30176', '8', '0', '100', '6', '56153', '-1', '0', '0', '28', '0', '56153', '0', '0', '0', '0', '0', '0', '0', '0', '0', ''); diff --git a/addition/721_icecrown_mangos.sql b/addition/721_icecrown_mangos.sql index 21d33f5..67ca25f 100644 --- a/addition/721_icecrown_mangos.sql +++ b/addition/721_icecrown_mangos.sql @@ -181,6 +181,7 @@ UPDATE `creature_template` SET `faction_A` = 35, `faction_H` = 35 WHERE `entry`= UPDATE `creature_template` SET `faction_A` = 14, `faction_H` = 14, `ScriptName`='mob_nightmare_portal', `AIName`='' WHERE `entry`= 38429; UPDATE `creature_template` SET `ScriptName`='mob_mana_void', `AIName`='' WHERE `entry`= 38068; DELETE FROM `creature` WHERE `guid` = 47738 AND `id` = 38589; +DELETE FROM `pool_creature` WHERE `guid`=47738; UPDATE `gameobject_template` SET `faction` = '0',`data0` = '0' WHERE `gameobject_template`.`entry` IN (201375,201373); UPDATE `gameobject_template` SET `faction` = '114',`data0` = '0' WHERE `gameobject_template`.`entry` IN (201374); @@ -200,7 +201,7 @@ UPDATE `gameobject_template` SET `faction` = '114',`data0` = '0' WHERE `gameobje UPDATE `gameobject` SET `state` = '1' WHERE `id` IN (201369,201379); -- frost bomb target from Lordronn DELETE FROM `creature_template_addon` WHERE `entry` = 37186; -INSERT INTO `creature_template_addon` (`entry`, `auras`) VALUES (37186, '70022 0'); +INSERT INTO `creature_template_addon` (`entry`, `auras`) VALUES (37186, 70022); -- Lich King diff --git a/addition/723_icecrown_down_mangos.sql b/addition/723_icecrown_down_mangos.sql index 9d5d448..3bbfd43 100644 --- a/addition/723_icecrown_down_mangos.sql +++ b/addition/723_icecrown_down_mangos.sql @@ -13,7 +13,7 @@ UPDATE `creature_template` SET `AIName`='', `Scriptname`='npc_jaina_and_sylvana_ UPDATE `creature_template` SET `AIName`='', `Scriptname`='npc_jaina_and_sylvana_FSextro' where `entry` IN (38160, 38161); UPDATE `creature_template` SET `scale`='0.8', `equipment_id`='1221' where `entry` IN (37597, 38160, 36993, 38188, 37221, 36955); UPDATE `creature_template` SET `scale`='0.8' where `entry` IN (36658, 37225, 37223, 37226, 37554); -UPDATE `creature_template` SET `npcflag`='0' where `entry` IN (38160, 38161); +UPDATE `creature_template` SET `npcflag`='3' where `entry` IN (38160, 38161); UPDATE `creature_template` SET `npcflag`='3' where `entry` IN (37597, 37596, 36993, 36990); UPDATE `creature_template` SET `scale`='1' where `entry` IN (38161, 37596, 36990); UPDATE `creature_template` SET `scale`='1' where `entry` IN (37755); diff --git a/addition/730_obsidian_sanctum_mangos.sql b/addition/730_obsidian_sanctum_mangos.sql index f4f17db..4786bca 100644 --- a/addition/730_obsidian_sanctum_mangos.sql +++ b/addition/730_obsidian_sanctum_mangos.sql @@ -14,6 +14,8 @@ REPLACE INTO creature_template (entry, difficulty_entry_1, modelid_1, modelid_3, -- boss loot DELETE FROM creature_loot_template WHERE entry IN (30452, 30451, 30449, 28860, 288601, 288602, 288603, 31534, 31520, 31535, 31311, 313111, 313112, 313113); +-- for YTDB +DELETE FROM `reference_loot_template` WHERE `entry`=40630; -- Tenebron, Shadron, Vesperon UPDATE creature_template SET lootid=30449 WHERE entry IN (30452, 30451, 30449, 31534, 31520, 31535); INSERT INTO creature_loot_template (entry, item, ChanceOrQuestChance, groupid, mincountOrRef, maxcount, lootcondition, condition_value1, condition_value2) VALUES diff --git a/addition/733_mangos_ulduar_raid.sql b/addition/733_mangos_ulduar_raid.sql index a6fea5c..8b6ce97 100644 --- a/addition/733_mangos_ulduar_raid.sql +++ b/addition/733_mangos_ulduar_raid.sql @@ -25,7 +25,7 @@ UPDATE creature_template SET ScriptName = 'mob_dark_rune_watcher' WHERE entry = UPDATE creature_template SET ScriptName = 'mob_dark_rune_sentinel' WHERE entry = 33846; UPDATE creature_template SET ScriptName = 'mob_dark_rune_guardian' WHERE entry = 33388; UPDATE creature_template SET ScriptName = 'npc_expedition_commander' WHERE entry = 33210; -UPDATE creature_template SET ScriptName = 'mob_devouring_flame_target' WHERE entry IN (34189, 34188); +UPDATE creature_template SET ScriptName = 'mob_devouring_flame_target' WHERE entry = 34188; -- XT002 UPDATE creature_template SET mechanic_immune_mask=617299803, scriptname='boss_xt002' WHERE entry=33293; @@ -129,7 +129,7 @@ UPDATE creature_model_info SET bounding_radius=15, combat_reach=15 WHERE modelid UPDATE creature_template SET mechanic_immune_mask=617299803, unit_flags = 0, scriptname='boss_kologarn' WHERE entry=32930; UPDATE creature_template SET mechanic_immune_mask=652951551, scriptname='boss_right_arm' WHERE entry=32934; UPDATE creature_template SET mechanic_immune_mask=652951551, scriptname='boss_left_arm' WHERE entry=32933; -UPDATE creature_template SET ScriptName = 'mob_ulduar_rubble' WHERE entry IN (33768, 33809, 33908, 33942); +UPDATE creature_template SET ScriptName = 'mob_ulduar_rubble' WHERE entry IN (33768, 33809); UPDATE `gameobject` SET `position_y` = -35.6824, `position_x` = 1837.59 WHERE `id` IN (195047); UPDATE `creature_template` SET `RegenHealth` = 1 WHERE `entry` = 33910; UPDATE `creature_template` SET `RegenHealth` = 1 WHERE `entry` = 33911; @@ -219,7 +219,8 @@ UPDATE creature_template SET ScriptName = 'mob_flashFreeze' WHERE entry IN (3292 UPDATE `creature_template` SET `modelid_1` = 15880 WHERE `entry` = 33174; UPDATE `creature_template` SET `modelid_2` = 28470, ScriptName = 'mob_icicle' WHERE `entry` = 33169; -- flash freeze that will lock the npcs IN iceblock -UPDATE creature_template SET `modelid_1` = 25865, ScriptName = 'mob_npc_flashFreeze' WHERE entry IN (32938, 33353); +UPDATE creature_template SET `modelid_1` = 25865 WHERE entry IN (32938, 33353); +UPDATE creature_template SET ScriptName = 'mob_npc_flashFreeze' WHERE entry IN (32938); UPDATE creature SET spawnMask = 3 WHERE id IN (32938); UPDATE creature SET spawnMask = 2 WHERE id IN (32901, 32900, 32950, 32946,33333, 33330, 33326); UPDATE creature_template SET ScriptName = 'npc_hodir_priest' WHERE entry IN (32897, 33326, 32948, 33330); @@ -235,7 +236,7 @@ UPDATE creature SET position_x = 2000.9, position_y = -231.232 WHERE guid = 1319 -- priest UPDATE creature SET position_x = 2009.06, position_y = -244.058 WHERE guid = 131933; DELETE FROM creature WHERE guid IN (800005); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800005, 32897, 603, 3, 128,0,0, 2009.06, -244.058, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0); -- aly priest -- shaman UPDATE creature SET position_x = 1983.75, position_y = -243.358 WHERE id = 33328; @@ -247,23 +248,23 @@ UPDATE creature SET position_x = 2021.12, position_y = -236.648 WHERE id = 33325 -- druid UPDATE creature SET position_x = 2013.5, position_y = -240.338 WHERE id = 32901; DELETE FROM creature WHERE guid IN (800006); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800006, 32938, 603, 2, 1,0,0, 2013.5, -240.338, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0); -- shaman: UPDATE creature SET position_x = 2011.48, position_y = -232.79 WHERE id = 32900; UPDATE creature SET position_x = 2011.48, position_y = -232.79 WHERE id = 32950; DELETE FROM creature WHERE guid IN (800007); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800007, 32938, 603, 2, 1,0,0, 2011.48, -232.79, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0); -- mage: DELETE FROM creature WHERE guid IN (800008, 800010); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800008, 33327, 603, 2, 128,0,0, 1978.49, -241.476, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0), -- aly mage (800010, 32938, 603, 2, 1,0,0, 1978.49, -241.476, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0); -- priest UPDATE creature SET position_x = 1997.88, position_y = -239.394 WHERE id = 33330; DELETE FROM creature WHERE guid IN (800009); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800009, 32938, 603, 2, 1,0,0, 1997.88, -239.394, 432.687, 1.68485, 7200,0,0, 5647, 0, 0, 0); -- Mimiron @@ -380,7 +381,7 @@ REPLACE INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES ('625 -- Vezax UPDATE creature_template SET unit_flags = 0, ScriptName = 'boss_vezax' WHERE entry = 33271; -UPDATE creature_template SET MinHealth = 23009250, MaxHealth = 23009250, ScriptName = 'boss_vezax' WHERE entry = 33449; +UPDATE creature_template SET MinHealth = 23009250, MaxHealth = 23009250 WHERE entry = 33449; UPDATE `creature_template` SET `mechanic_immune_mask` = 619397115 WHERE `entry` IN (33271, 33449); UPDATE creature_template SET ScriptName = 'mob_saronite_animus' WHERE entry = 33524; UPDATE creature_template SET ScriptName = 'mob_saronite_vapor', movementType = 1 WHERE entry = 33488; @@ -416,7 +417,7 @@ INSERT INTO gameobject VALUES (110000,194635,603,3,65535,2022.490,-25.389,261.96 DELETE FROM gameobject WHERE guid = 110001; INSERT INTO gameobject VALUES (110001,194462,603,3,65535,2104.555, -25.635,242.646,0,0,0,0,0,604800,100,1); DELETE FROM creature WHERE id IN (33890); -INSERT INTO creature VALUES (800000,33890,603,3,65535,0,0,1981.422,-22.442,255.011,0,604800,0,0,1371428,0,0,0); +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800000,33890,603,3,65535,0,0,1981.422,-22.442,255.011,0,604800,0,0,1371428,0,0,0); -- Algalon UPDATE creature_template SET ScriptName = 'boss_algalon' WHERE entry = 32871; @@ -438,7 +439,7 @@ UPDATE creature_template SET `npcflag` = 1, `unit_flags` = 2, ScriptName = 'thor UPDATE creature_template SET `npcflag` = 1, `unit_flags` = 2, ScriptName = 'mimiron_image' WHERE entry = 33412; -- INSERT keepers imagees INTO the db DELETE FROM creature WHERE guid IN (800001, 800002, 800003, 800004); -INSERT INTO creature VALUES +INSERT INTO creature (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `DeathState`, `MovementType`) VALUES (800001, 33410, 603, 3, 65535,0,0, 2036.892, 25.621, 411.358, 3.83, 604800,0,0, 5647, 0, 0, 0), -- Freya (800002, 33412, 603, 3, 65535,0,0, 1939.215, 42.677, 411.355, 5.31, 604800,0,0, 5647, 0, 0, 0), -- Mimiron (800003, 33411, 603, 3, 65535,0,0, 1939.195, -90.662, 411.357, 1.06, 604800,0,0, 5647, 0, 0, 0), -- Hodir diff --git a/addition/735_eye_of_acherus_scriptdev2.sql b/addition/735_eye_of_acherus_scriptdev2.sql index d35ac7b..7716b08 100644 --- a/addition/735_eye_of_acherus_scriptdev2.sql +++ b/addition/735_eye_of_acherus_scriptdev2.sql @@ -1,5 +1,5 @@ -- Say's -DELETE FROM `script_texts` WHERE `entry` BETWEEN -1666453 AND -1666050; -INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc8`, `sound`, `type`, `language`, `emote`, `comment`) VALUES -('-1666451','The Eye of Acherus launches towards its destination','Око Акеруса вылетело в пункт назначения','','3','0','0','EOA_LAUNCH'), -('-1666452','The Eye of Acherus is in your control','Око Акеруса под вашим контролем','','3','0','0','EOA_CONTROL'); +DELETE FROM script_texts WHERE entry BETWEEN -1666453 AND -1666050; +INSERT INTO script_texts (entry, content_default, content_loc8, sound, type, language, emote, comment) VALUES +('-1666451','The Eye of Acherus launches towards its destination','Око Акеруса вылетело в пункт назначения','0','3','0','0','EOA_LAUNCH'), +('-1666452','The Eye of Acherus is in your control','Око Акеруса под вашим контролем','0','3','0','0','EOA_CONTROL'); \ No newline at end of file diff --git a/addition/736_oculus_mangos.sql b/addition/736_oculus_mangos.sql index 438f69a..fe277e3 100644 --- a/addition/736_oculus_mangos.sql +++ b/addition/736_oculus_mangos.sql @@ -55,13 +55,13 @@ UPDATE `spell_target_position` SET `id` = 49665 WHERE `id` = 49305; UPDATE `creature_template` SET `spell6` = 57403, `InhabitType` = 3 WHERE `entry` IN (27692,27755,27756); -DELETE FROM `gameobject_scripts` WHERE `id` IN +DELETE FROM gameobject_scripts WHERE id IN (40557,42275); -INSERT INTO `gameobject_scripts` -(`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`) +INSERT INTO gameobject_scripts +(id, delay, command, datalong, datalong2, dataint, x, y, z, o, comments) VALUES -(42275, 1, 6, 571, 0, '0', 3878.0, 6984.0, 106.0, 0), -(40557, 1, 6, 578, 0, '0', 1001.61, 1051.13, 359.48, 3.1); +(42275, 1, 6, 571, 0, '0', 3878.0, 6984.0, 106.0, 0, ''), +(40557, 1, 6, 578, 0, '0', 1001.61, 1051.13, 359.48, 3.1, ''); -- from lanc UPDATE `creature_template` SET diff --git a/base/BSW_instance.cpp b/base/BSW_instance.cpp index 1df76dc..23e7959 100644 --- a/base/BSW_instance.cpp +++ b/base/BSW_instance.cpp @@ -63,6 +63,32 @@ void BSWScriptedInstance::DoCloseDoor(uint64 guid) debug_log("BSW: DoCloseDoor attempt set data to object %u, but no this object", guid); } +void BSWScriptedInstance::DoOpenDoor(ObjectGuid guid) +{ + if (guid.IsEmpty()) + return; + + GameObject* pGo = instance->GetGameObject(guid); + + if (pGo) + pGo->SetGoState(GO_STATE_ACTIVE); + else + debug_log("BSW: DoOpenDoor attempt set data to object %u, but no this object", guid); +} + +void BSWScriptedInstance::DoCloseDoor(ObjectGuid guid) +{ + if (guid.IsEmpty()) + return; + + GameObject* pGo = instance->GetGameObject(guid); + + if (pGo) + pGo->SetGoState(GO_STATE_READY); + else + debug_log("BSW: DoCloseDoor attempt set data to object %u, but no this object", guid); +} + uint32 BSWScriptedInstance::GetEvent(uint32 creatureID) { if (m_auiEventLock || m_auiCreatureID != creatureID) diff --git a/base/BSW_instance.h b/base/BSW_instance.h index af643d5..3402ff3 100644 --- a/base/BSW_instance.h +++ b/base/BSW_instance.h @@ -18,6 +18,8 @@ class MANGOS_DLL_DECL BSWScriptedInstance : public ScriptedInstance void DoCompleteAchievement(uint32 uiAchievmentId); void DoOpenDoor(uint64 guid); void DoCloseDoor(uint64 guid); + void DoOpenDoor(ObjectGuid guid); + void DoCloseDoor(ObjectGuid guid); uint64 GetInstanceObjectGUID(uint32 entry); ObjectGuid const& GetInstanceObjectGuid(uint32 entry); diff --git a/base/escort_ai.cpp b/base/escort_ai.cpp index 762b07c..cdd1551 100644 --- a/base/escort_ai.cpp +++ b/base/escort_ai.cpp @@ -22,7 +22,7 @@ enum }; npc_escortAI::npc_escortAI(Creature* pCreature) : ScriptedAI(pCreature), - m_uiPlayerGUID(0), + m_playerGuid(), m_uiPlayerCheckTimer(1000), m_uiWPWaitTimer(2500), m_uiEscortState(STATE_ESCORT_NONE), @@ -149,7 +149,7 @@ void npc_escortAI::MoveInLineOfSight(Unit* pWho) void npc_escortAI::JustDied(Unit* pKiller) { - if (!HasEscortState(STATE_ESCORT_ESCORTING) || !m_uiPlayerGUID || !m_pQuestForEscort) + if (!HasEscortState(STATE_ESCORT_ESCORTING) || m_playerGuid.IsEmpty() || !m_pQuestForEscort) return; if (Player* pPlayer = GetPlayerForEscort()) @@ -295,7 +295,7 @@ void npc_escortAI::UpdateAI(const uint32 uiDiff) } //Check if player or any member of his group is within range - if (HasEscortState(STATE_ESCORT_ESCORTING) && m_uiPlayerGUID && !m_creature->getVictim() && !HasEscortState(STATE_ESCORT_RETURNING)) + if (HasEscortState(STATE_ESCORT_ESCORTING) && !m_playerGuid.IsEmpty() && !m_creature->getVictim() && !HasEscortState(STATE_ESCORT_RETURNING)) { if (m_uiPlayerCheckTimer < uiDiff) { @@ -448,7 +448,7 @@ void npc_escortAI::SetRun(bool bRun) } //TODO: get rid of this many variables passed in function. -void npc_escortAI::Start(bool bRun, uint64 uiPlayerGUID, const Quest* pQuest, bool bInstantRespawn, bool bCanLoopPath) +void npc_escortAI::Start(bool bRun, const Player* pPlayer, const Quest* pQuest, bool bInstantRespawn, bool bCanLoopPath) { if (m_creature->getVictim()) { @@ -476,7 +476,7 @@ void npc_escortAI::Start(bool bRun, uint64 uiPlayerGUID, const Quest* pQuest, bo //set variables m_bIsRunning = bRun; - m_uiPlayerGUID = uiPlayerGUID; + m_playerGuid = pPlayer ? pPlayer->GetObjectGuid() : ObjectGuid(); m_pQuestForEscort = pQuest; m_bCanInstantRespawn = bInstantRespawn; @@ -495,7 +495,7 @@ void npc_escortAI::Start(bool bRun, uint64 uiPlayerGUID, const Quest* pQuest, bo //disable npcflags m_creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); - debug_log("SD2: EscortAI started with " SIZEFMTD " waypoints. Run = %d, PlayerGUID = " UI64FMTD, WaypointList.size(), m_bIsRunning, m_uiPlayerGUID); + debug_log("SD2: EscortAI started with %u waypoints. Run = %d, PlayerGuid = %u", WaypointList.size(), m_bIsRunning, m_playerGuid.GetCounter()); CurrentWP = WaypointList.begin(); diff --git a/base/escort_ai.h b/base/escort_ai.h index dda20ba..ca49cf8 100644 --- a/base/escort_ai.h +++ b/base/escort_ai.h @@ -66,7 +66,7 @@ struct MANGOS_DLL_DECL npc_escortAI : public ScriptedAI virtual void WaypointReached(uint32 uiPointId) = 0; virtual void WaypointStart(uint32 uiPointId) {} - void Start(bool bRun = false, uint64 uiPlayerGUID = 0, const Quest* pQuest = NULL, bool bInstantRespawn = false, bool bCanLoopPath = false); + void Start(bool bRun = false, const Player* pPlayer = NULL, const Quest* pQuest = NULL, bool bInstantRespawn = false, bool bCanLoopPath = false); void SetRun(bool bRun = true); void SetEscortPaused(bool uPaused); @@ -77,7 +77,7 @@ struct MANGOS_DLL_DECL npc_escortAI : public ScriptedAI void SetCurrentWaypoint(uint32 uiPointId); protected: - Player* GetPlayerForEscort() { return m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); } + Player* GetPlayerForEscort() { return m_creature->GetMap()->GetPlayer(m_playerGuid); } virtual void JustStartedEscort() {} private: @@ -88,7 +88,7 @@ struct MANGOS_DLL_DECL npc_escortAI : public ScriptedAI void AddEscortState(uint32 uiEscortState) { m_uiEscortState |= uiEscortState; } void RemoveEscortState(uint32 uiEscortState) { m_uiEscortState &= ~uiEscortState; } - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiWPWaitTimer; uint32 m_uiPlayerCheckTimer; uint32 m_uiEscortState; diff --git a/base/follower_ai.cpp b/base/follower_ai.cpp index 7237ce0..a624836 100644 --- a/base/follower_ai.cpp +++ b/base/follower_ai.cpp @@ -20,7 +20,7 @@ enum }; FollowerAI::FollowerAI(Creature* pCreature) : ScriptedAI(pCreature), - m_uiLeaderGUID(0), + m_leaderGuid(), m_pQuestForFollow(NULL), m_uiUpdateFollowTimer(2500), m_uiFollowState(STATE_FOLLOW_NONE) @@ -121,7 +121,7 @@ void FollowerAI::MoveInLineOfSight(Unit* pWho) void FollowerAI::JustDied(Unit* pKiller) { - if (!HasFollowState(STATE_FOLLOW_INPROGRESS) || !m_uiLeaderGUID || !m_pQuestForFollow) + if (!HasFollowState(STATE_FOLLOW_INPROGRESS) || m_leaderGuid.IsEmpty() || !m_pQuestForFollow) return; //TODO: need a better check for quests with time limit. @@ -288,7 +288,7 @@ void FollowerAI::StartFollow(Player* pLeader, uint32 uiFactionForFollower, const } //set variables - m_uiLeaderGUID = pLeader->GetGUID(); + m_leaderGuid = pLeader->GetObjectGuid(); if (uiFactionForFollower) m_creature->setFaction(uiFactionForFollower); @@ -308,12 +308,12 @@ void FollowerAI::StartFollow(Player* pLeader, uint32 uiFactionForFollower, const m_creature->GetMotionMaster()->MoveFollow(pLeader, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); - debug_log("SD2: FollowerAI start follow %s (GUID " UI64FMTD ")", pLeader->GetName(), m_uiLeaderGUID); + debug_log("SD2: FollowerAI start follow %s (%u)", pLeader ? pLeader->GetName() : "", m_leaderGuid.GetCounter()); } Player* FollowerAI::GetLeaderForFollower() { - if (Player* pLeader = m_creature->GetMap()->GetPlayer(m_uiLeaderGUID)) + if (Player* pLeader = m_creature->GetMap()->GetPlayer(m_leaderGuid)) { if (pLeader->isAlive()) return pLeader; @@ -328,7 +328,7 @@ Player* FollowerAI::GetLeaderForFollower() if (pMember && pMember->isAlive() && m_creature->IsWithinDistInMap(pMember, MAX_PLAYER_DISTANCE)) { debug_log("SD2: FollowerAI GetLeader changed and returned new leader."); - m_uiLeaderGUID = pMember->GetGUID(); + m_leaderGuid = pMember->GetObjectGuid(); return pMember; break; } diff --git a/base/follower_ai.h b/base/follower_ai.h index 0f443a3..a5e7bc9 100644 --- a/base/follower_ai.h +++ b/base/follower_ai.h @@ -55,7 +55,7 @@ class MANGOS_DLL_DECL FollowerAI : public ScriptedAI bool AssistPlayerInCombat(Unit* pWho); - uint64 m_uiLeaderGUID; + ObjectGuid m_leaderGuid; uint32 m_uiUpdateFollowTimer; uint32 m_uiFollowState; diff --git a/include/sc_creature.cpp b/include/sc_creature.cpp index 8922359..c0db3cf 100644 --- a/include/sc_creature.cpp +++ b/include/sc_creature.cpp @@ -383,7 +383,7 @@ void ScriptedAI::DoTeleportPlayer(Unit* pUnit, float fX, float fY, float fZ, flo if (pUnit->GetTypeId() != TYPEID_PLAYER) { - error_log("SD2: Creature " UI64FMTD " (Entry: %u) Tried to teleport non-player unit (Type: %u GUID: " UI64FMTD ") to x: %f y:%f z: %f o: %f. Aborted.", m_creature->GetGUID(), m_creature->GetEntry(), pUnit->GetTypeId(), pUnit->GetGUID(), fX, fY, fZ, fO); + error_log("SD2: %s tried to teleport non-player (%s) to x: %f y:%f z: %f o: %f. Aborted.", m_creature->GetGuidStr().c_str(), pUnit->GetGuidStr().c_str(), fX, fY, fZ, fO); return; } diff --git a/include/sc_instance.cpp b/include/sc_instance.cpp index f73d6fe..1c44734 100644 --- a/include/sc_instance.cpp +++ b/include/sc_instance.cpp @@ -5,12 +5,12 @@ #include "precompiled.h" //Optional uiWithRestoreTime. If not defined, autoCloseTime will be used (if not 0 by default in *_template) -void ScriptedInstance::DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState) +void ScriptedInstance::DoUseDoorOrButton(ObjectGuid guid, uint32 uiWithRestoreTime, bool bUseAlternativeState) { - if (!uiGuid) + if (guid.IsEmpty()) return; - if (GameObject* pGo = instance->GetGameObject(uiGuid)) + if (GameObject* pGo = instance->GetGameObject(guid)) { if (pGo->GetGoType() == GAMEOBJECT_TYPE_DOOR || pGo->GetGoType() == GAMEOBJECT_TYPE_BUTTON) { @@ -20,17 +20,20 @@ void ScriptedInstance::DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime pGo->ResetDoorOrButton(); } else - error_log("SD2: Script call DoUseDoorOrButton, but gameobject entry %u is type %u.",pGo->GetEntry(),pGo->GetGoType()); + error_log("SD2: Script call DoUseDoorOrButton, but gameobject entry %u is type %u.", pGo->GetEntry(), pGo->GetGoType()); } } -void ScriptedInstance::DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn) +void ScriptedInstance::DoRespawnGameObject(ObjectGuid guid, uint32 uiTimeToDespawn) { - if (GameObject* pGo = instance->GetGameObject(uiGuid)) + if (guid.IsEmpty()) + return; + + if (GameObject* pGo = instance->GetGameObject(guid)) { //not expect any of these should ever be handled - if (pGo->GetGoType()==GAMEOBJECT_TYPE_FISHINGNODE || pGo->GetGoType()==GAMEOBJECT_TYPE_DOOR || - pGo->GetGoType()==GAMEOBJECT_TYPE_BUTTON || pGo->GetGoType()==GAMEOBJECT_TYPE_TRAP) + if (pGo->GetGoType() == GAMEOBJECT_TYPE_FISHINGNODE || pGo->GetGoType() == GAMEOBJECT_TYPE_DOOR || + pGo->GetGoType() == GAMEOBJECT_TYPE_BUTTON || pGo->GetGoType() == GAMEOBJECT_TYPE_TRAP) return; if (pGo->isSpawned()) diff --git a/include/sc_instance.h b/include/sc_instance.h index 5b8ba13..a50b98f 100644 --- a/include/sc_instance.h +++ b/include/sc_instance.h @@ -31,10 +31,10 @@ class MANGOS_DLL_DECL ScriptedInstance : public InstanceData ~ScriptedInstance() {} // Change active state of doors or buttons - void DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime = 0, bool bUseAlternativeState = false); + void DoUseDoorOrButton(ObjectGuid guid, uint32 uiWithRestoreTime = 0, bool bUseAlternativeState = false); // Respawns a GO having negative spawntimesecs in gameobject-table - void DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn = MINUTE); + void DoRespawnGameObject(ObjectGuid guid, uint32 uiTimeToDespawn = MINUTE); // Sends world state update to all players in instance void DoUpdateWorldState(uint32 uiStateId, uint32 uiStateData); diff --git a/scripts/eastern_kingdoms/arathi_highlands.cpp b/scripts/eastern_kingdoms/arathi_highlands.cpp index c631ecf..fc03a35 100644 --- a/scripts/eastern_kingdoms/arathi_highlands.cpp +++ b/scripts/eastern_kingdoms/arathi_highlands.cpp @@ -104,7 +104,7 @@ bool QuestAccept_npc_professor_phizzlethorpe(Player* pPlayer, Creature* pCreatur DoScriptText(SAY_PROGRESS_1, pCreature, pPlayer); if (npc_professor_phizzlethorpeAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); } return true; } diff --git a/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp b/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp index 904a62e..0b459f5 100644 --- a/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp +++ b/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp @@ -524,7 +524,7 @@ enum bool GossipHello_npc_kharan_mighthammer(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_WHAT_IS_GOING_ON) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); @@ -533,9 +533,9 @@ bool GossipHello_npc_kharan_mighthammer(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); if (pPlayer->GetTeam() == HORDE) - pPlayer->SEND_GOSSIP_MENU(2473, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2473, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(2474, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2474, pCreature->GetObjectGuid()); return true; } @@ -546,36 +546,36 @@ bool GossipSelect_npc_kharan_mighthammer(Player* pPlayer, Creature* pCreature, u { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(2475, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2475, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(2476, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2476, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(2477, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2477, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(2478, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2478, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(2479, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2479, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7); - pPlayer->SEND_GOSSIP_MENU(2480, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2480, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_9, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8); - pPlayer->SEND_GOSSIP_MENU(2481, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2481, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+8: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_10, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9); - pPlayer->SEND_GOSSIP_MENU(2482, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2482, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+9: pPlayer->CLOSE_GOSSIP_MENU(); @@ -610,7 +610,7 @@ enum bool GossipHello_npc_lokhtos_darkbargainer(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetReputationRank(FACTION_THORIUM_BROTHERHOOD) >= REP_FRIENDLY) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_ITEM_SHOW_ACCESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); @@ -623,9 +623,9 @@ bool GossipHello_npc_lokhtos_darkbargainer(Player* pPlayer, Creature* pCreature) } if (pPlayer->GetReputationRank(FACTION_THORIUM_BROTHERHOOD) < REP_FRIENDLY) - pPlayer->SEND_GOSSIP_MENU(3673, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3673, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(3677, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3677, pCreature->GetObjectGuid()); return true; } @@ -639,7 +639,7 @@ bool GossipSelect_npc_lokhtos_darkbargainer(Player* pPlayer, Creature* pCreature } if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -780,7 +780,7 @@ bool QuestRewarded_npc_rocknot(Player* pPlayer, Creature* pCreature, Quest const pCreature->CastSpell(pCreature, SPELL_DRUNKEN_RAGE, false); if (npc_rocknotAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, 0, NULL, true); + pEscortAI->Start(false, NULL, NULL, true); } } diff --git a/scripts/eastern_kingdoms/blackrock_depths/boss_tomb_of_seven.cpp b/scripts/eastern_kingdoms/blackrock_depths/boss_tomb_of_seven.cpp index 3682e47..91eecee 100644 --- a/scripts/eastern_kingdoms/blackrock_depths/boss_tomb_of_seven.cpp +++ b/scripts/eastern_kingdoms/blackrock_depths/boss_tomb_of_seven.cpp @@ -55,7 +55,7 @@ bool GossipHello_boss_gloomrel(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TRIBUTE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -65,7 +65,7 @@ bool GossipSelect_boss_gloomrel(Player* pPlayer, Creature* pCreature, uint32 uiS { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(2606, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2606, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+11: pPlayer->CLOSE_GOSSIP_MENU(); @@ -73,7 +73,7 @@ bool GossipSelect_boss_gloomrel(Player* pPlayer, Creature* pCreature, uint32 uiS break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] Continue...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22); - pPlayer->SEND_GOSSIP_MENU(2604, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2604, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+22: pPlayer->CLOSE_GOSSIP_MENU(); @@ -286,7 +286,7 @@ bool GossipHello_boss_doomrel(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_CHALLENGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); } - pPlayer->SEND_GOSSIP_MENU(2601, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2601, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/blackrock_spire/boss_drakkisath.cpp b/scripts/eastern_kingdoms/blackrock_spire/boss_drakkisath.cpp index 8fb2cfa..6dd7ff5 100644 --- a/scripts/eastern_kingdoms/blackrock_spire/boss_drakkisath.cpp +++ b/scripts/eastern_kingdoms/blackrock_spire/boss_drakkisath.cpp @@ -75,7 +75,7 @@ struct MANGOS_DLL_DECL boss_drakkisathAI : public ScriptedAI // Confliguration if (m_uiConfligurationTimer < uiDiff) { - DoCastSpellIfCan(m_creature->getVictim(), SPELL_CONFLIGURATION, 0, m_creature->getVictim()->GetGUID()); + DoCastSpellIfCan(m_creature->getVictim(), SPELL_CONFLIGURATION, 0, m_creature->getVictim()->GetObjectGuid()); m_uiConfligurationTimer = 18000; } else diff --git a/scripts/eastern_kingdoms/blackrock_spire/boss_pyroguard_emberseer.cpp b/scripts/eastern_kingdoms/blackrock_spire/boss_pyroguard_emberseer.cpp index b93ed18..927483a 100644 --- a/scripts/eastern_kingdoms/blackrock_spire/boss_pyroguard_emberseer.cpp +++ b/scripts/eastern_kingdoms/blackrock_spire/boss_pyroguard_emberseer.cpp @@ -16,7 +16,7 @@ /* ScriptData SDName: Boss_Pyroguard_Emberseer -SD%Complete: 100 +SD%Complete: 50 SDComment: Event to activate Emberseer NYI - 'aggro'-text missing SDCategory: Blackrock Spire EndScriptData */ @@ -26,6 +26,17 @@ EndScriptData */ enum { + // Intro emote/say + EMOTE_BEGIN = -1229000, + EMOTE_NEAR = -1229001, + EMOTE_FULL = -1229002, + SAY_FREE = -1229003, + + // Intro spells + SPELL_FREEZE_ANIM = 16245, + SPELL_EMBERSEER_GROWING = 16048, + SPELL_FULL_STRENGHT = 16047, + SPELL_FIRENOVA = 23462, SPELL_FLAMEBUFFET = 23341, SPELL_PYROBLAST = 20228 // guesswork, but best fitting in spells-area, was 17274 (has mana cost) diff --git a/scripts/eastern_kingdoms/blackwing_lair/boss_razorgore.cpp b/scripts/eastern_kingdoms/blackwing_lair/boss_razorgore.cpp index 9fae727..49814b0 100644 --- a/scripts/eastern_kingdoms/blackwing_lair/boss_razorgore.cpp +++ b/scripts/eastern_kingdoms/blackwing_lair/boss_razorgore.cpp @@ -32,6 +32,8 @@ enum SAY_EGGS_BROKEN_3 = -1469024, SAY_DEATH = -1469025, + EMOTE_TROOPS_FLEE = -1469033, // emote by Nefarian's Troops npc + SPELL_CLEAVE = 19632, SPELL_WARSTOMP = 24375, SPELL_FIREBALL_VOLLEY = 22425, diff --git a/scripts/eastern_kingdoms/blackwing_lair/boss_vaelastrasz.cpp b/scripts/eastern_kingdoms/blackwing_lair/boss_vaelastrasz.cpp index 9eb4292..12e2ab5 100644 --- a/scripts/eastern_kingdoms/blackwing_lair/boss_vaelastrasz.cpp +++ b/scripts/eastern_kingdoms/blackwing_lair/boss_vaelastrasz.cpp @@ -267,10 +267,10 @@ bool GossipSelect_boss_vaelastrasz(Player* pPlayer, Creature* pCreature, uint32 bool GossipHello_boss_vaelastrasz(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/blackwing_lair/boss_victor_nefarius.cpp b/scripts/eastern_kingdoms/blackwing_lair/boss_victor_nefarius.cpp index 15c4750..35eebc3 100644 --- a/scripts/eastern_kingdoms/blackwing_lair/boss_victor_nefarius.cpp +++ b/scripts/eastern_kingdoms/blackwing_lair/boss_victor_nefarius.cpp @@ -64,11 +64,11 @@ struct SpawnLocation static const SpawnLocation aNefarianLocs[5] = { - {-7591.151f, -1204.051f, 476.800f}, // adds 1 & 2 - {-7514.598f, -1150.448f, 476.796f}, - {-7445.0f, -1332.0f, 536.0f}, // nefarian - {-7592.0f, -1264.0f, 481.0f}, // hide pos - {-7493.377f, -1258.85f, 478.30f}, // nefarian fly pos + {-7599.32f, -1191.72f, 475.545f}, // opening where red/blue/black darknid spawner appear (ori 3.05433) + {-7526.27f, -1135.04f, 473.445f}, // same as above, closest to door (ori 5.75959) + {-7498.177f, -1273.277f, 481.649f}, // nefarian spawn location (ori 1.798) + {-7592.0f, -1264.0f, 481.0f}, // hide pos (useless; remove this) + {-7502.002f, -1256.503f, 476.758f}, // nefarian fly to this position }; static const uint32 aPossibleDrake[MAX_DRAKES] = {NPC_BRONZE_DRAKANOID, NPC_BLUE_DRAKANOID, NPC_RED_DRAKANOID, NPC_GREEN_DRAKANOID, NPC_BLACK_DRAKANOID}; @@ -82,6 +82,8 @@ static const uint32 aPossibleDrake[MAX_DRAKES] = {NPC_BRONZE_DRAKANOID, NPC_BLUE //If nefarian dies then he will kill himself then he will be despawned in Nefarian script //To prevent players from doing the event twice +// Dev note: Lord Victor Nefarius should despawn completely, then ~5 seconds later Nefarian should appear. + struct MANGOS_DLL_DECL boss_victor_nefariusAI : public ScriptedAI { boss_victor_nefariusAI(Creature* pCreature) : ScriptedAI(pCreature) @@ -270,7 +272,7 @@ CreatureAI* GetAI_boss_victor_nefarius(Creature* pCreature) bool GossipHello_boss_victor_nefarius(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NEFARIUS_1 , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_1, pCreature->GetObjectGuid()); return true; } @@ -280,11 +282,11 @@ bool GossipSelect_boss_victor_nefarius(Player* pPlayer, Creature* pCreature, uin { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NEFARIUS_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NEFARIUS_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_NEFARIUS_3, pCreature->GetObjectGuid()); DoScriptText(SAY_GAMESBEGIN_1, pCreature); break; case GOSSIP_ACTION_INFO_DEF+3: diff --git a/scripts/eastern_kingdoms/blasted_lands.cpp b/scripts/eastern_kingdoms/blasted_lands.cpp index 9949ca0..727d94b 100644 --- a/scripts/eastern_kingdoms/blasted_lands.cpp +++ b/scripts/eastern_kingdoms/blasted_lands.cpp @@ -43,7 +43,7 @@ bool GossipHello_npc_deathly_usher(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(3628) == QUEST_STATUS_INCOMPLETE && pPlayer->HasItemCount(10757, 1)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_USHER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -74,7 +74,7 @@ bool GossipSelect_npc_deathly_usher(Player* pPlayer, Creature* pCreature, uint32 bool GossipHello_npc_fallen_hero_of_horde(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(2784) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Why are you here?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); @@ -85,7 +85,7 @@ bool GossipHello_npc_fallen_hero_of_horde(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(2801) == QUEST_STATUS_INCOMPLETE && pPlayer->GetTeam() == ALLIANCE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Why are you here?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -96,42 +96,42 @@ bool GossipSelect_npc_fallen_hero_of_horde(Player* pPlayer, Creature* pCreature, { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(1392, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1392, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+11: - pPlayer->SEND_GOSSIP_MENU(1411, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1411, pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(2784) == QUEST_STATUS_INCOMPLETE) pPlayer->AreaExploredOrEventHappens(2784); if (pPlayer->GetTeam() == ALLIANCE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(1411, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1411, pCreature->GetObjectGuid()); } break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); - pPlayer->SEND_GOSSIP_MENU(1451, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1451, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+21: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22); - pPlayer->SEND_GOSSIP_MENU(1452, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1452, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+22: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23); - pPlayer->SEND_GOSSIP_MENU(1453, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1453, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+23: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24); - pPlayer->SEND_GOSSIP_MENU(1454, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1454, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+24: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25); - pPlayer->SEND_GOSSIP_MENU(1455, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1455, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+25: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FALLEN5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26); - pPlayer->SEND_GOSSIP_MENU(1456, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1456, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+26: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/burning_steppes.cpp b/scripts/eastern_kingdoms/burning_steppes.cpp index d5c2a83..6190e69 100644 --- a/scripts/eastern_kingdoms/burning_steppes.cpp +++ b/scripts/eastern_kingdoms/burning_steppes.cpp @@ -71,12 +71,12 @@ CreatureAI* GetAI_npc_ragged_john(Creature* pCreature) bool GossipHello_npc_ragged_john(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(4224) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Official buisness, John. I need some information about Marsha Windsor. Tell me about the last time you saw him.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(2713, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2713, pCreature->GetObjectGuid()); return true; } @@ -86,47 +86,47 @@ bool GossipSelect_npc_ragged_john(Player* pPlayer, Creature* pCreature, uint32 u { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "So what did you do?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(2714, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2714, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Start making sense, dwarf. I don't want to have anything to do with your cracker, your pappy, or any sort of 'discreditin'.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(2715, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2715, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ironfoe?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(2716, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2716, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Interesting... continue John.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(2717, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2717, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "So that's how Windsor died...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(2718, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2718, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "So how did he die?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(2719, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2719, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ok so where the hell is he? Wait a minute! Are you drunk?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(2720, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2720, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "WHY is he in Blackrock Depths?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8); - pPlayer->SEND_GOSSIP_MENU(2721, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2721, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+8: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "300? So the Dark Irons killed him and dragged him into the Depths?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); - pPlayer->SEND_GOSSIP_MENU(2722, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2722, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+9: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ahh... Ironfoe", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10); - pPlayer->SEND_GOSSIP_MENU(2723, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2723, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+10: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks, Ragged John. Your story was very uplifting and informative", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(2725, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2725, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+11: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/eastern_plaguelands.cpp b/scripts/eastern_kingdoms/eastern_plaguelands.cpp index cce894a..db19c76 100644 --- a/scripts/eastern_kingdoms/eastern_plaguelands.cpp +++ b/scripts/eastern_kingdoms/eastern_plaguelands.cpp @@ -60,19 +60,19 @@ CreatureAI* GetAI_mobs_ghoul_flayer(Creature* pCreature) bool GossipHello_npc_augustus_the_touched(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetQuestRewardStatus(6164)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } bool GossipSelect_npc_augustus_the_touched(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -100,8 +100,8 @@ CreatureAI* GetAI_npc_darrowshire_spirit(Creature* pCreature) bool GossipHello_npc_darrowshire_spirit(Player* pPlayer, Creature* pCreature) { - pPlayer->SEND_GOSSIP_MENU(3873, pCreature->GetGUID()); - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3873, pCreature->GetObjectGuid()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); return true; } @@ -113,12 +113,12 @@ bool GossipHello_npc_darrowshire_spirit(Player* pPlayer, Creature* pCreature) bool GossipHello_npc_tirion_fordring(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(5742) == QUEST_STATUS_INCOMPLETE && pPlayer->getStandState() == UNIT_STAND_STATE_SIT) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I am ready to hear your tale, Tirion.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -129,15 +129,15 @@ bool GossipSelect_npc_tirion_fordring(Player* pPlayer, Creature* pCreature, uint { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thank you, Tirion. What of your identity?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(4493, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4493, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "That is terrible.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(4494, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4494, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I will, Tirion.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(4495, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4495, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/eversong_woods.cpp b/scripts/eastern_kingdoms/eversong_woods.cpp index 16d0c61..05e92b2 100644 --- a/scripts/eastern_kingdoms/eversong_woods.cpp +++ b/scripts/eastern_kingdoms/eversong_woods.cpp @@ -31,6 +31,7 @@ EndContentData */ #include "precompiled.h" #include "escort_ai.h" +#include "TemporarySummon.h" /*###### ## npc_kelerun_bloodmourn @@ -76,8 +77,8 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI } uint32 m_uiNpcFlags; - uint64 m_uiPlayerGUID; - uint64 uiChallengerGUID[MAX_CHALLENGER]; + ObjectGuid m_playerGuid; + ObjectGuid m_aChallengerGuids[MAX_CHALLENGER]; uint8 m_uiChallengerCount; @@ -91,9 +92,10 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI { m_creature->SetUInt32Value(UNIT_NPC_FLAGS, m_uiNpcFlags); - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); - memset(&uiChallengerGUID, 0, sizeof(uiChallengerGUID)); + for (uint8 i = 0; i < MAX_CHALLENGER; ++i) + m_aChallengerGuids[i].Clear(); m_uiChallengerCount = 0; @@ -110,11 +112,11 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI m_bIsEventInProgress = true; } - bool CanProgressEvent(uint64 uiPlayer) + bool CanProgressEvent(Player* pPlayer) { if (m_bIsEventInProgress) { - m_uiPlayerGUID = uiPlayer; + m_playerGuid = pPlayer->GetObjectGuid(); DoSpawnChallengers(); m_uiEngageTimer = 15000; @@ -133,7 +135,7 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI fChallengerLoc[i][2], fChallengerLoc[i][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000)) { - uiChallengerGUID[i] = pCreature->GetGUID(); + m_aChallengerGuids[i] = pCreature->GetObjectGuid(); pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } } @@ -145,7 +147,7 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI { if (m_uiTimeOutTimer && m_uiTimeOutTimer < uiDiff) { - if (!m_uiPlayerGUID) + if (m_playerGuid.IsEmpty()) { //player are expected to use GO within a minute, if not, event will fail. Reset(); @@ -159,11 +161,11 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI if (m_uiCheckAliveStateTimer < uiDiff) { - if (Creature* pChallenger = m_creature->GetMap()->GetCreature(uiChallengerGUID[m_uiChallengerCount])) + if (Creature* pChallenger = m_creature->GetMap()->GetCreature(m_aChallengerGuids[m_uiChallengerCount])) { if (!pChallenger->isAlive()) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (pPlayer && !pPlayer->isAlive()) { @@ -193,11 +195,11 @@ struct MANGOS_DLL_DECL npc_kelerun_bloodmournAI : public ScriptedAI if (m_uiEngageTimer && m_uiEngageTimer < uiDiff) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (pPlayer && pPlayer->isAlive()) { - if (Creature* pCreature = m_creature->GetMap()->GetCreature(uiChallengerGUID[m_uiChallengerCount])) + if (Creature* pCreature = m_creature->GetMap()->GetCreature(m_aChallengerGuids[m_uiChallengerCount])) { DoScriptText(uiSayId[m_uiChallengerCount], m_creature, pPlayer); pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -236,9 +238,8 @@ bool GOUse_go_harbinger_second_trial(Player* pPlayer, GameObject* pGO) { if (Creature* pCreature = GetClosestCreatureWithEntry(pGO, NPC_KELERUN, 30.0f)) { - npc_kelerun_bloodmournAI* pKelrunAI = dynamic_cast(pCreature->AI()); - if (pKelrunAI && pKelrunAI->CanProgressEvent(pPlayer->GetGUID())) - return false; + if (npc_kelerun_bloodmournAI* pKelrunAI = dynamic_cast(pCreature->AI())) + pKelrunAI->CanProgressEvent(pPlayer); } } @@ -312,7 +313,7 @@ bool GossipHello_npc_prospector_anvilward(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_THE_DWARVEN_SPY) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MOMENT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(8239, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8239, pCreature->GetObjectGuid()); return true; } @@ -322,13 +323,13 @@ bool GossipSelect_npc_prospector_anvilward(Player* pPlayer, Creature* pCreature, { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SHOW, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(8240, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8240, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); if (npc_prospector_anvilwardAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID()); + pEscortAI->Start(false, pPlayer); break; } @@ -441,96 +442,98 @@ CreatureAI* GetAI_npc_apprentice_mirvedaAI(Creature* pCreature) enum { - NPC_ENRAGED_WRATH = 17086, - QUEST_POWERING_OUR_DEFENSES = 8490, - INFUSED_CRYSTAL_EMOTE = -1999811 + QUEST_POWERING_OUR_DEFENSES = 8490, + SAY_DEFENSE_FINISH = -1000668, + NPC_ENRAGED_WRAITH = 17086, }; -float fEnragedWrathPosition[3][4] = +static const float aSummonPos[6][4] = { - {8259.375977f, -7202.288574f, 139.287430f, 5.0f}, - {8255.425781f, -7222.026367f, 139.607162f, 5.0f}, - {8267.902344f, -7193.510742f, 139.430374f, 5.0f} + {8250.539f, -7239.028f, 139.7099f, 0.8975816f}, + {8263.437f, -7181.188f, 139.4102f, 5.237229f}, + {8317.124f, -7210.098f, 140.1064f, 3.022202f}, + {8293.848f, -7179.062f, 138.6693f, 4.153376f}, + {8239.229f, -7207.673f, 139.1196f, 0.06059111f}, + {8301.548f, -7247.548f, 139.974f, 1.828518f} }; -struct MANGOS_DLL_DECL npc_infused_crystalAI : public ScriptedAI +struct MANGOS_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI { - npc_infused_crystalAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_infused_crystalAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) { - SetCombatMovement(false); + m_bFirstWave = true; + m_uiWaveTimer = 1000; + m_uiKilledCount = 0; + m_uiFinishTimer = 60*IN_MILLISECONDS; Reset(); } - - uint32 m_uiQuestTimer; - uint32 m_uiSpawnTimer; - uint64 m_uiPlayerGUID; - bool bCompleted; - - void Reset() - { - m_uiQuestTimer = 60000; - m_uiSpawnTimer = 1000; - m_uiPlayerGUID = 0; - bCompleted = false; - } + bool m_bFirstWave; + uint32 m_uiWaveTimer; + uint8 m_uiKilledCount; + uint32 m_uiFinishTimer; - void MoveInLineOfSight(Unit* pWho) + void Reset() {} + + void JustSummoned(Creature* pSummoned) { - if (pWho->GetTypeId() != TYPEID_PLAYER) - return; - Player* pPlayer = (Player*)pWho; - - if (pPlayer->GetQuestStatus(QUEST_POWERING_OUR_DEFENSES) != QUEST_STATUS_INCOMPLETE) - return; - - m_uiPlayerGUID = pPlayer->GetGUID(); + pSummoned->AI()->AttackStart(m_creature); } - void Aggro(Unit* pWho){} - - void JustDied(Unit* pWho) + void SummonedCreatureJustDied(Creature* pSummoned) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) - if (pPlayer->GetQuestStatus(QUEST_POWERING_OUR_DEFENSES) == QUEST_STATUS_INCOMPLETE) - pPlayer->FailQuest(QUEST_POWERING_OUR_DEFENSES); + ++m_uiKilledCount; + + if (m_uiKilledCount == 3) + m_uiWaveTimer = std::min(m_uiWaveTimer, (uint32)10000); } void UpdateAI(const uint32 uiDiff) - { - if (bCompleted) - return; - - if (m_uiSpawnTimer < uiDiff) + { + if (m_uiWaveTimer) { - for (uint8 i = 0; i < 3; ++i) + if (m_uiWaveTimer <= uiDiff) { - if (Creature* pEnragedWrath = m_creature->SummonCreature(NPC_ENRAGED_WRATH, fEnragedWrathPosition[i][0], fEnragedWrathPosition[i][1], fEnragedWrathPosition[i][2], fEnragedWrathPosition[i][3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000)) + if (m_bFirstWave) { - pEnragedWrath->AI()->AttackStart(m_creature); + for (uint8 i = 0; i < 3; ++i) + m_creature->SummonCreature(NPC_ENRAGED_WRAITH, aSummonPos[i][0], aSummonPos[i][1], aSummonPos[i][2], aSummonPos[i][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5*MINUTE); + m_uiWaveTimer = 29000; + m_bFirstWave = false; + } + else + { + for (uint8 i = 3; i < 6; ++i) + m_creature->SummonCreature(NPC_ENRAGED_WRAITH, aSummonPos[i][0], aSummonPos[i][1], aSummonPos[i][2], aSummonPos[i][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 5*MINUTE); + m_uiWaveTimer = 0; } } - m_uiSpawnTimer = 40000; + else + m_uiWaveTimer -= uiDiff; } - else - m_uiSpawnTimer -= uiDiff; - if (m_uiQuestTimer < uiDiff) + if (m_uiFinishTimer) { - if(Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (m_uiFinishTimer <= uiDiff) { - pPlayer->KilledMonsterCredit(m_creature->GetEntry()); - DoScriptText(INFUSED_CRYSTAL_EMOTE , m_creature); - m_creature->ForcedDespawn(5000); + DoScriptText(SAY_DEFENSE_FINISH, m_creature); + if (m_creature->IsTemporarySummon()) + { + TemporarySummon* pTemporary = (TemporarySummon*)m_creature; + + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(pTemporary->GetSummonerGuid())) + pPlayer->KilledMonsterCredit(m_creature->GetEntry(), m_creature->GetObjectGuid()); + } + m_uiFinishTimer = 0; + m_creature->ForcedDespawn(1000); } - bCompleted = true; + else + m_uiFinishTimer -= uiDiff; } - else - m_uiQuestTimer -= uiDiff; } }; -CreatureAI* GetAI_npc_infused_crystal(Creature* pCreature) +CreatureAI* GetAI_npc_infused_crystalAI(Creature* pCreature) { return new npc_infused_crystalAI (pCreature); } @@ -564,7 +567,7 @@ void AddSC_eversong_woods() pNewScript->RegisterSelf(); pNewScript = new Script; - pNewScript->Name= "npc_infused_crystal"; - pNewScript->GetAI = &GetAI_npc_infused_crystal; + pNewScript->Name = "npc_infused_crystal"; + pNewScript->GetAI = &GetAI_npc_infused_crystalAI; pNewScript->RegisterSelf(); } diff --git a/scripts/eastern_kingdoms/ghostlands.cpp b/scripts/eastern_kingdoms/ghostlands.cpp index fed7e6e..16dd143 100644 --- a/scripts/eastern_kingdoms/ghostlands.cpp +++ b/scripts/eastern_kingdoms/ghostlands.cpp @@ -42,7 +42,7 @@ bool GossipHello_npc_blood_knight_dawnstar(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(9692) == QUEST_STATUS_INCOMPLETE && !pPlayer->HasItemCount(24226,1,true)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_ITEM_INSIGNIA,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -68,12 +68,12 @@ bool GossipSelect_npc_blood_knight_dawnstar(Player* pPlayer, Creature* pCreature bool GossipHello_npc_budd_nedreck(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(11166) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_ITEM_DISGUISE,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -109,24 +109,19 @@ enum struct MANGOS_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI { - npc_ranger_lilathaAI(Creature* pCreature) : npc_escortAI(pCreature) - { - m_uiGoCageGUID = 0; - m_uiHeliosGUID = 0; - Reset(); - } + npc_ranger_lilathaAI(Creature* pCreature) : npc_escortAI(pCreature) { Reset(); } - uint64 m_uiGoCageGUID; - uint64 m_uiHeliosGUID; + ObjectGuid m_goCageGuid; + ObjectGuid m_heliosGuid; void MoveInLineOfSight(Unit* pUnit) { if (HasEscortState(STATE_ESCORT_ESCORTING)) { - if (!m_uiHeliosGUID && pUnit->GetEntry() == NPC_CAPTAIN_HELIOS) + if (m_heliosGuid.IsEmpty() && pUnit->GetEntry() == NPC_CAPTAIN_HELIOS) { if (m_creature->IsWithinDistInMap(pUnit, 30.0f)) - m_uiHeliosGUID = pUnit->GetGUID(); + m_heliosGuid = pUnit->GetObjectGuid(); } } @@ -145,7 +140,7 @@ struct MANGOS_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI case 0: if (GameObject* pGoTemp = GetClosestGameObjectWithEntry(m_creature, GO_CAGE, 10.0f)) { - m_uiGoCageGUID = pGoTemp->GetGUID(); + m_goCageGuid = pGoTemp->GetObjectGuid(); pGoTemp->SetGoState(GO_STATE_ACTIVE); } @@ -154,7 +149,7 @@ struct MANGOS_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI DoScriptText(SAY_START, m_creature, pPlayer); break; case 1: - if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_uiGoCageGUID)) + if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_goCageGuid)) pGo->SetGoState(GO_STATE_READY); break; case 5: @@ -184,7 +179,7 @@ struct MANGOS_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI break; case 33: DoScriptText(SAY_END2, m_creature, pPlayer); - if (Creature* pHelios = m_creature->GetMap()->GetCreature(m_uiHeliosGUID)) + if (Creature* pHelios = m_creature->GetMap()->GetCreature(m_heliosGuid)) DoScriptText(CAPTAIN_ANSWER, pHelios, m_creature); break; } @@ -194,8 +189,8 @@ struct MANGOS_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI { if (!HasEscortState(STATE_ESCORT_ESCORTING)) { - m_uiGoCageGUID = 0; - m_uiHeliosGUID = 0; + m_goCageGuid.Clear(); + m_heliosGuid.Clear(); } } }; @@ -212,7 +207,7 @@ bool QuestAccept_npc_ranger_lilatha(Player* pPlayer, Creature* pCreature, const pCreature->setFaction(FACTION_SMOON_E); if (npc_ranger_lilathaAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -224,14 +219,14 @@ bool QuestAccept_npc_ranger_lilatha(Player* pPlayer, Creature* pCreature, const bool GossipHello_npc_rathis_tomber(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetQuestRewardStatus(9152)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(8432, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8432, pCreature->GetObjectGuid()); }else - pPlayer->SEND_GOSSIP_MENU(8431, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8431, pCreature->GetObjectGuid()); return true; } @@ -239,7 +234,7 @@ bool GossipHello_npc_rathis_tomber(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_rathis_tomber(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/gnomeregan/gnomeregan.cpp b/scripts/eastern_kingdoms/gnomeregan/gnomeregan.cpp index 5e2349a..b8e4e21 100644 --- a/scripts/eastern_kingdoms/gnomeregan/gnomeregan.cpp +++ b/scripts/eastern_kingdoms/gnomeregan/gnomeregan.cpp @@ -357,7 +357,7 @@ struct MANGOS_DLL_DECL npc_blastmaster_emi_shortfuseAI : public npc_escortAI m_uiPhaseTimer = 3500; // 6s delay, but 2500ms for escortstarting break; case 3: - Start(false, m_uiPlayerGUID, NULL, false, false); + Start(false, m_creature->GetMap()->GetPlayer(m_uiPlayerGUID), NULL, false, false); m_uiPhaseTimer = 0; break; @@ -601,7 +601,7 @@ bool GossipHello_npc_blastmaster_emi_shortfuse(Player* pPlayer, Creature* pCreat if (pInstance->GetData(TYPE_GRUBBIS) == NOT_STARTED || pInstance->GetData(TYPE_GRUBBIS) == FAIL) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_START, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } } return true; diff --git a/scripts/eastern_kingdoms/hinterlands.cpp b/scripts/eastern_kingdoms/hinterlands.cpp index 8cc2341..a5d4809 100644 --- a/scripts/eastern_kingdoms/hinterlands.cpp +++ b/scripts/eastern_kingdoms/hinterlands.cpp @@ -120,7 +120,7 @@ bool QuestAccept_npc_00x09hl(Player* pPlayer, Creature* pCreature, const Quest* DoScriptText(SAY_OOX_START, pCreature, pPlayer); if (npc_00x09hlAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -313,7 +313,7 @@ bool QuestAccept_npc_rinji(Player* pPlayer, Creature* pCreature, const Quest* pQ pGo->UseDoorOrButton(); if (npc_rinjiAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } diff --git a/scripts/eastern_kingdoms/ironforge.cpp b/scripts/eastern_kingdoms/ironforge.cpp index 8159d60..1dca0c6 100644 --- a/scripts/eastern_kingdoms/ironforge.cpp +++ b/scripts/eastern_kingdoms/ironforge.cpp @@ -40,15 +40,15 @@ EndContentData */ bool GossipHello_npc_royal_historian_archesonus(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(3702) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(2235, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2235, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -59,19 +59,19 @@ bool GossipSelect_npc_royal_historian_archesonus(Player* pPlayer, Creature* pCre { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(2236, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2236, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(2237, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2237, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(2238, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2238, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ROYAL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(2239, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2239, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/karazhan/boss_midnight.cpp b/scripts/eastern_kingdoms/karazhan/boss_midnight.cpp index 19e377b..e6e2588 100644 --- a/scripts/eastern_kingdoms/karazhan/boss_midnight.cpp +++ b/scripts/eastern_kingdoms/karazhan/boss_midnight.cpp @@ -156,7 +156,7 @@ struct MANGOS_DLL_DECL boss_midnightAI : public ScriptedAI if (pAttumen->getVictim()) { pAttumen->GetMotionMaster()->MoveChase(pAttumen->getVictim()); - pAttumen->SetUInt64Value(UNIT_FIELD_TARGET, pAttumen->getVictim()->GetGUID()); + pAttumen->SetTargetGuid(pAttumen->getVictim()->GetObjectGuid()); } pAttumen->SetFloatValue(OBJECT_FIELD_SCALE_X,1); } diff --git a/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp b/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp index 7533b1e..e8386ea 100644 --- a/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp +++ b/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp @@ -34,8 +34,7 @@ enum SAY_KILL_3 = -1532016, SAY_DEATH = -1532017, - SPELL_VANISH = 33735, //Klingenwirbel 33735 - //SPELL_VANISH = 29448, restartet das event + SPELL_VANISH = 29448, SPELL_GARROTE = 37066, SPELL_BLIND = 34694, SPELL_GOUGE = 29425, diff --git a/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp b/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp index e6de670..8633ca3 100644 --- a/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp +++ b/scripts/eastern_kingdoms/karazhan/boss_prince_malchezaar.cpp @@ -394,8 +394,8 @@ struct MANGOS_DLL_DECL boss_malchezaarAI : public ScriptedAI if (m_creature->hasUnitState(UNIT_STAT_STUNNED)) //While shifting to phase 2 malchezaar stuns himself return; - if (m_creature->GetUInt64Value(UNIT_FIELD_TARGET)!=m_creature->getVictim()->GetGUID()) - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->getVictim()->GetGUID()); + if (m_creature->GetTargetGuid() != m_creature->getVictim()->GetObjectGuid()) + m_creature->SetTargetGuid(m_creature->getVictim()->GetObjectGuid()); if (phase == 1) { diff --git a/scripts/eastern_kingdoms/karazhan/boss_shade_of_aran.cpp b/scripts/eastern_kingdoms/karazhan/boss_shade_of_aran.cpp index 9ca0079..a330f54 100644 --- a/scripts/eastern_kingdoms/karazhan/boss_shade_of_aran.cpp +++ b/scripts/eastern_kingdoms/karazhan/boss_shade_of_aran.cpp @@ -463,7 +463,7 @@ struct MANGOS_DLL_DECL boss_aranAI : public ScriptedAI if (pPlayer && !pPlayer->IsWithinDist2d(m_fFWTargPosX[i], m_fFWTargPosY[i], 3.0f)) { - pPlayer->CastSpell(pPlayer, SPELL_EXPLOSION, true, 0, 0, m_creature->GetGUID()); + pPlayer->CastSpell(pPlayer, SPELL_EXPLOSION, true, 0, 0, m_creature->GetObjectGuid()); pPlayer->CastSpell(pPlayer, SPELL_KNOCKBACK_500, true); m_uiFlameWreathTarget[i] = 0; } diff --git a/scripts/eastern_kingdoms/karazhan/bosses_opera.cpp b/scripts/eastern_kingdoms/karazhan/bosses_opera.cpp index 083d2ac..0d23352 100644 --- a/scripts/eastern_kingdoms/karazhan/bosses_opera.cpp +++ b/scripts/eastern_kingdoms/karazhan/bosses_opera.cpp @@ -729,7 +729,7 @@ CreatureAI* GetAI_mob_cyclone(Creature* pCreature) bool GossipHello_npc_grandmother(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_GRANDMA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(8990, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8990, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/karazhan/karazhan.cpp b/scripts/eastern_kingdoms/karazhan/karazhan.cpp index d725c4f..a282966 100644 --- a/scripts/eastern_kingdoms/karazhan/karazhan.cpp +++ b/scripts/eastern_kingdoms/karazhan/karazhan.cpp @@ -155,7 +155,7 @@ struct MANGOS_DLL_DECL npc_barnesAI : public npc_escortAI if (m_uiEventId == EVENT_OZ) m_pInstance->SetData(DATA_OPERA_OZ_DEATHCOUNT, IN_PROGRESS); - Start(false, 0, NULL, true); + Start(false, NULL, NULL, true); } void WaypointReached(uint32 uiPointId) @@ -330,16 +330,16 @@ bool GossipHello_npc_barnes(Player* pPlayer, Creature* pCreature) if (npc_barnesAI* pBarnesAI = dynamic_cast(pCreature->AI())) { if (!pBarnesAI->m_bRaidWiped) - pPlayer->SEND_GOSSIP_MENU(8970, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8970, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(8975, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8975, pCreature->GetObjectGuid()); return true; } } } - pPlayer->SEND_GOSSIP_MENU(8978, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8978, pCreature->GetObjectGuid()); return true; } @@ -351,7 +351,7 @@ bool GossipSelect_npc_barnes(Player* pPlayer, Creature* pCreature, uint32 uiSend { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, OZ_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(8971, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(8971, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); @@ -362,19 +362,19 @@ bool GossipSelect_npc_barnes(Player* pPlayer, Creature* pCreature, uint32 uiSend pPlayer->CLOSE_GOSSIP_MENU(); if (pBarnesAI && pPlayer->isGameMaster()) pBarnesAI->m_uiEventId = EVENT_OZ; - outstring_log("SD2: pPlayer (GUID " UI64FMTD ") manually set Opera event to EVENT_OZ", pPlayer->GetGUID()); + outstring_log("SD2: %s manually set Opera event to EVENT_OZ", pPlayer->GetGuidStr().c_str()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->CLOSE_GOSSIP_MENU(); if (pBarnesAI && pPlayer->isGameMaster()) pBarnesAI->m_uiEventId = EVENT_HOOD; - outstring_log("SD2: pPlayer (GUID " UI64FMTD ") manually set Opera event to EVENT_HOOD", pPlayer->GetGUID()); + outstring_log("SD2: %s manually set Opera event to EVENT_HOOD", pPlayer->GetGuidStr().c_str()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->CLOSE_GOSSIP_MENU(); if (pBarnesAI && pPlayer->isGameMaster()) pBarnesAI->m_uiEventId = EVENT_RAJ; - outstring_log("SD2: pPlayer (GUID " UI64FMTD ") manually set Opera event to EVENT_RAJ", pPlayer->GetGUID()); + outstring_log("SD2: %s manually set Opera event to EVENT_RAJ", pPlayer->GetGuidStr().c_str()); break; } @@ -401,7 +401,7 @@ bool GossipHello_npc_berthold(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELEPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/loch_modan.cpp b/scripts/eastern_kingdoms/loch_modan.cpp index 7b1ccc9..d0fecd5 100644 --- a/scripts/eastern_kingdoms/loch_modan.cpp +++ b/scripts/eastern_kingdoms/loch_modan.cpp @@ -36,12 +36,12 @@ EndContentData */ bool GossipHello_npc_mountaineer_pebblebitty(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (!pPlayer->GetQuestRewardStatus(3181) == 1) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Open the gate please, i need to get to Searing Gorge", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -52,27 +52,27 @@ bool GossipSelect_npc_mountaineer_pebblebitty(Player* pPlayer, Creature* pCreatu { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "But i need to get there, now open the gate!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(1833, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1833, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ok, so what is this other way?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(1834, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1834, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Doesn't matter, i'm invulnerable.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(1835, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1835, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Yes...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(1836, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1836, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ok, i'll try to remember that.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(1837, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1837, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "A key? Ok!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(1838, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1838, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->CLOSE_GOSSIP_MENU(); @@ -167,7 +167,7 @@ bool QuestAccept_npc_miran(Player* pPlayer, Creature* pCreature, const Quest* pQ if (pQuest->GetQuestId() == QUEST_PROTECTING_THE_SHIPMENT) { if (npc_miranAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } diff --git a/scripts/eastern_kingdoms/magisters_terrace/boss_felblood_kaelthas.cpp b/scripts/eastern_kingdoms/magisters_terrace/boss_felblood_kaelthas.cpp index e13c2f9..c297a22 100644 --- a/scripts/eastern_kingdoms/magisters_terrace/boss_felblood_kaelthas.cpp +++ b/scripts/eastern_kingdoms/magisters_terrace/boss_felblood_kaelthas.cpp @@ -170,7 +170,7 @@ struct MANGOS_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI void JustSummoned(Creature* pSummoned) { if (pSummoned->GetEntry() == NPC_FLAME_STRIKE_TRIGGER) - pSummoned->CastSpell(pSummoned, SPELL_FLAME_STRIKE_DUMMY, false, NULL, NULL, m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, SPELL_FLAME_STRIKE_DUMMY, false, NULL, NULL, m_creature->GetObjectGuid()); } void SetThreatList(Creature* SummonedUnit) @@ -217,7 +217,7 @@ struct MANGOS_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI // Knockback into the air if (pUnit && pUnit->GetTypeId() == TYPEID_PLAYER) - pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, m_creature->GetGUID()); + pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, m_creature->GetObjectGuid()); } } @@ -232,7 +232,7 @@ struct MANGOS_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI // Also needs an exception in spell system. if (pUnit && pUnit->GetTypeId() == TYPEID_PLAYER) - pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, m_creature->GetGUID()); + pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, m_creature->GetObjectGuid()); } } @@ -460,7 +460,7 @@ struct MANGOS_DLL_DECL mob_felkael_phoenixAI : public ScriptedAI m_creature->ModifyAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, false); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->ClearAllReactives(); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET,0); + m_creature->SetTargetGuid(ObjectGuid()); m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->MoveIdle(); m_creature->SetStandState(UNIT_STAND_STATE_DEAD); diff --git a/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp b/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp index eed9492..6c54a3d 100644 --- a/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp +++ b/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp @@ -112,7 +112,7 @@ struct MANGOS_DLL_DECL boss_vexallusAI : public ScriptedAI if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) pSummoned->GetMotionMaster()->MoveFollow(pTarget, 0.0f, 0.0f); - pSummoned->CastSpell(pSummoned, SPELL_ENERGY_BOLT, false, NULL, NULL, m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, SPELL_ENERGY_BOLT, false, NULL, NULL, m_creature->GetObjectGuid()); } void UpdateAI(const uint32 diff) diff --git a/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp b/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp index a641811..628ed2d 100644 --- a/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp +++ b/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp @@ -125,10 +125,10 @@ CreatureAI* GetAI_npc_kalecgos(Creature* pCreature) bool GossipHello_npc_kalecgos(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(12498, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12498, pCreature->GetObjectGuid()); return true; } @@ -139,22 +139,22 @@ bool GossipSelect_npc_kalecgos(Player* pPlayer, Creature* pCreature, uint32 uiSe { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(12500, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12500, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(12502, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12502, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(12606, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12606, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(12607, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12607, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: - pPlayer->SEND_GOSSIP_MENU(12608, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(12608, pCreature->GetObjectGuid()); break; } diff --git a/scripts/eastern_kingdoms/molten_core/boss_majordomo_executus.cpp b/scripts/eastern_kingdoms/molten_core/boss_majordomo_executus.cpp index 960a064..3f3f891 100644 --- a/scripts/eastern_kingdoms/molten_core/boss_majordomo_executus.cpp +++ b/scripts/eastern_kingdoms/molten_core/boss_majordomo_executus.cpp @@ -430,7 +430,7 @@ bool GossipHello_boss_majordomo(Player* pPlayer, Creature* pCreature) if (pInstance->GetData(TYPE_RAGNAROS) == NOT_STARTED || pInstance->GetData(TYPE_RAGNAROS) == FAIL) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SUMMON_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_1, pCreature->GetObjectGuid()); } } return true; @@ -442,11 +442,11 @@ bool GossipSelect_boss_majordomo(Player* pPlayer, Creature* pCreature, uint32 se { case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SUMMON_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SUMMON_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SUMMON_3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/redridge_mountains.cpp b/scripts/eastern_kingdoms/redridge_mountains.cpp index 3b2aa11..dcbc50e 100644 --- a/scripts/eastern_kingdoms/redridge_mountains.cpp +++ b/scripts/eastern_kingdoms/redridge_mountains.cpp @@ -126,7 +126,7 @@ bool QuestAccept_npc_corporal_keeshan(Player* pPlayer, Creature* pCreature, cons if (npc_corporal_keeshan_escortAI* pEscortAI = dynamic_cast(pCreature->AI())) { DoScriptText(SAY_CORPORAL_KEESHAN_1, pCreature); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } diff --git a/scripts/eastern_kingdoms/scarlet_enclave/ebon_hold.cpp b/scripts/eastern_kingdoms/scarlet_enclave/ebon_hold.cpp index 22b5abf..d56aea9 100644 --- a/scripts/eastern_kingdoms/scarlet_enclave/ebon_hold.cpp +++ b/scripts/eastern_kingdoms/scarlet_enclave/ebon_hold.cpp @@ -104,13 +104,13 @@ struct MANGOS_DLL_DECL npc_a_special_surpriseAI : public ScriptedAI uint32 m_uiExecuteSpeech_Timer; uint32 m_uiExecuteSpeech_Counter; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; void Reset() { m_uiExecuteSpeech_Timer = 0; m_uiExecuteSpeech_Counter = 0; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); } bool MeetQuestCondition(Player* pPlayer) @@ -164,20 +164,20 @@ struct MANGOS_DLL_DECL npc_a_special_surpriseAI : public ScriptedAI void MoveInLineOfSight(Unit* pWho) { - if (m_uiPlayerGUID || pWho->GetTypeId() != TYPEID_PLAYER || !pWho->IsWithinDist(m_creature, INTERACTION_DISTANCE)) + if (!m_playerGuid.IsEmpty() || pWho->GetTypeId() != TYPEID_PLAYER || !pWho->IsWithinDist(m_creature, INTERACTION_DISTANCE)) return; if (MeetQuestCondition((Player*)pWho)) - m_uiPlayerGUID = pWho->GetGUID(); + m_playerGuid = pWho->GetObjectGuid(); } void UpdateAI(const uint32 uiDiff) { - if (m_uiPlayerGUID && !m_creature->getVictim() && m_creature->isAlive()) + if (!m_playerGuid.IsEmpty() && !m_creature->getVictim() && m_creature->isAlive()) { if (m_uiExecuteSpeech_Timer < uiDiff) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer) { @@ -505,11 +505,6 @@ enum SAY_DUEL_H = -1609023, SAY_DUEL_I = -1609024, - SPELL_BLOOD_STRIKE = 52374, - SPELL_DEATH_COIL = 52375, - SPELL_ICY_TOUCH = 52372, - SPELL_PLAGUE_STRIKE = 52373, - SPELL_DUEL = 52996, SPELL_DUEL_TRIGGERED = 52990, SPELL_DUEL_VICTORY = 52994, @@ -530,12 +525,8 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI { npc_death_knight_initiateAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - uint64 m_uiDuelerGUID; + ObjectGuid m_duelerGuid; uint32 m_uiDuelTimer; - uint32 m_uiBloodStrike_Timer; - uint32 m_uiDeathCoil_Timer; - uint32 m_uiIcyTouch_Timer; - uint32 m_uiPlagueStrike_Timer; bool m_bIsDuelInProgress; void Reset() @@ -545,12 +536,8 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15); - m_uiDuelerGUID = 0; + m_duelerGuid.Clear(); m_uiDuelTimer = 5000; - m_uiBloodStrike_Timer = 4000; - m_uiDeathCoil_Timer = 5000; - m_uiIcyTouch_Timer = 2000; - m_uiPlagueStrike_Timer = 3000; m_bIsDuelInProgress = false; } @@ -569,7 +556,7 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI { if (!m_bIsDuelInProgress && pSpell->Id == SPELL_DUEL_TRIGGERED && pCaster->GetTypeId() == TYPEID_PLAYER) { - m_uiDuelerGUID = pCaster->GetGUID(); + m_duelerGuid = pCaster->GetObjectGuid(); m_bIsDuelInProgress = true; } } @@ -580,7 +567,7 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI { uiDamage = 0; - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiDuelerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_duelerGuid)) m_creature->CastSpell(pPlayer, SPELL_DUEL_VICTORY, true); //possibly not evade, but instead have end sequenze @@ -598,7 +585,7 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI { m_creature->setFaction(FACTION_HOSTILE); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiDuelerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_duelerGuid)) AttackStart(pPlayer); } else @@ -607,37 +594,7 @@ struct MANGOS_DLL_DECL npc_death_knight_initiateAI : public ScriptedAI return; } - if (m_uiIcyTouch_Timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_ICY_TOUCH); - m_uiIcyTouch_Timer = 8000; - } - else - m_uiIcyTouch_Timer -= uiDiff; - - if (m_uiPlagueStrike_Timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_PLAGUE_STRIKE); - m_uiPlagueStrike_Timer = 8000; - } - else - m_uiPlagueStrike_Timer -= uiDiff; - - if (m_uiBloodStrike_Timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_BLOOD_STRIKE); - m_uiBloodStrike_Timer = 8000; - } - else - m_uiBloodStrike_Timer -= uiDiff; - - if (m_uiDeathCoil_Timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_DEATH_COIL); - m_uiDeathCoil_Timer = 8000; - } - else - m_uiDeathCoil_Timer -= uiDiff; + // TODO: spells DoMeleeAttackIfReady(); } @@ -653,7 +610,7 @@ bool GossipHello_npc_death_knight_initiate(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_DEATH_CHALLENGE) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ACCEPT_DUEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(13433, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(13433, pCreature->GetObjectGuid()); return true; } return false; @@ -719,7 +676,7 @@ struct MANGOS_DLL_DECL npc_koltira_deathweaverAI : public npc_escortAI uint32 m_uiWave; uint32 m_uiWave_Timer; - uint64 m_uiValrothGUID; + ObjectGuid m_valrothGuid; void Reset() { @@ -727,7 +684,7 @@ struct MANGOS_DLL_DECL npc_koltira_deathweaverAI : public npc_escortAI { m_uiWave = 0; m_uiWave_Timer = 3000; - m_uiValrothGUID = 0; + m_valrothGuid.Clear(); } } @@ -767,13 +724,10 @@ struct MANGOS_DLL_DECL npc_koltira_deathweaverAI : public npc_escortAI void JustSummoned(Creature* pSummoned) { if (Player* pPlayer = GetPlayerForEscort()) - { pSummoned->AI()->AttackStart(pPlayer); - pSummoned->AddThreat(m_creature); - } if (pSummoned->GetEntry() == NPC_HIGH_INQUISITOR_VALROTH) - m_uiValrothGUID = pSummoned->GetGUID(); + m_valrothGuid = pSummoned->GetObjectGuid(); } void SummonAcolyte(uint32 uiAmount) @@ -812,7 +766,7 @@ struct MANGOS_DLL_DECL npc_koltira_deathweaverAI : public npc_escortAI break; case 4: { - Creature* pTemp = m_creature->GetMap()->GetCreature(m_uiValrothGUID); + Creature* pTemp = m_creature->GetMap()->GetCreature(m_valrothGuid); if (!pTemp || !pTemp->isAlive()) { @@ -862,7 +816,7 @@ bool QuestAccept_npc_koltira_deathweaver(Player* pPlayer, Creature* pCreature, c pCreature->SetStandState(UNIT_STAND_STATE_STAND); if (npc_koltira_deathweaverAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -882,6 +836,11 @@ enum SPELL_CHAINED_PESANT_BREATH = 54613, SPELL_INITIATE_VISUAL = 51519, + SPELL_BLOOD_STRIKE = 52374, + SPELL_DEATH_COIL = 52375, + SPELL_ICY_TOUCH = 52372, + SPELL_PLAGUE_STRIKE = 52373, + NPC_ANCHOR = 29521, FACTION_MONSTER = 16, @@ -926,21 +885,17 @@ DisplayToSpell m_aDisplayToSpell[] = struct MANGOS_DLL_DECL npc_unworthy_initiate_anchorAI : public ScriptedAI { - npc_unworthy_initiate_anchorAI(Creature* pCreature) : ScriptedAI(pCreature) - { - m_uiMyInitiate = 0; - Reset(); - } + npc_unworthy_initiate_anchorAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - uint64 m_uiMyInitiate; - uint64 m_uiMyPrisonGUID; + ObjectGuid m_myInitiateGuid; + ObjectGuid m_myPrisonGuid; - void Reset() { } + void Reset() {} - void NotifyMe(Unit* pSource, uint64 uiPrisonGuid) + void NotifyMe(Unit* pSource, GameObject* pGo) { - m_uiMyPrisonGUID = uiPrisonGuid; - Creature* pInitiate = m_creature->GetMap()->GetCreature(m_uiMyInitiate); + m_myPrisonGuid = pGo->GetObjectGuid(); + Creature* pInitiate = m_creature->GetMap()->GetCreature(m_myInitiateGuid); if (pInitiate && pSource) { @@ -949,14 +904,14 @@ struct MANGOS_DLL_DECL npc_unworthy_initiate_anchorAI : public ScriptedAI } } - void RegisterCloseInitiate(uint64 uiGuid) + void RegisterCloseInitiate(Creature* pCreature) { - m_uiMyInitiate = uiGuid; + m_myInitiateGuid = pCreature->GetObjectGuid(); } void ResetPrison() { - if (GameObject* pPrison = m_creature->GetMap()->GetGameObject(m_uiMyPrisonGUID)) + if (GameObject* pPrison = m_creature->GetMap()->GetGameObject(m_myPrisonGuid)) pPrison->ResetDoorOrButton(); } }; @@ -994,7 +949,7 @@ struct MANGOS_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI DisplayToSpell* m_pToTransform; - uint64 m_uiMyAnchorGUID; + ObjectGuid m_myAnchorGuid; uint32 m_uiNormFaction; uint32 m_uiAnchorCheckTimer; uint32 m_uiPhase; @@ -1009,7 +964,7 @@ struct MANGOS_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI if (m_creature->getFaction() != m_uiNormFaction) m_creature->setFaction(m_uiNormFaction); - m_uiMyAnchorGUID = 0; + m_myAnchorGuid.Clear(); m_uiAnchorCheckTimer = 5000; m_uiPhase = PHASE_INACTIVE_OR_COMBAT; m_uiPhaseTimer = 7500; @@ -1042,8 +997,8 @@ struct MANGOS_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI Creature* GetAnchor() { - if (m_uiMyAnchorGUID) - return m_creature->GetMap()->GetCreature(m_uiMyAnchorGUID); + if (!m_myAnchorGuid.IsEmpty()) + return m_creature->GetMap()->GetCreature(m_myAnchorGuid); else return GetClosestCreatureWithEntry(m_creature, NPC_ANCHOR, INTERACTION_DISTANCE*2); } @@ -1053,9 +1008,10 @@ struct MANGOS_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI if (Creature* pAnchor = GetAnchor()) { if (npc_unworthy_initiate_anchorAI* pAnchorAI = dynamic_cast(pAnchor->AI())) - pAnchorAI->RegisterCloseInitiate(m_creature->GetGUID()); + pAnchorAI->RegisterCloseInitiate(m_creature); pAnchor->CastSpell(m_creature, SPELL_CHAINED_PESANT_CHEST, false); + m_myAnchorGuid = pAnchor->GetObjectGuid(); m_uiAnchorCheckTimer = 0; return; @@ -1178,7 +1134,7 @@ bool GOUse_go_acherus_soul_prison(Player* pPlayer, GameObject* pGo) if (Creature* pAnchor = GetClosestCreatureWithEntry(pGo, NPC_ANCHOR, INTERACTION_DISTANCE)) { if (npc_unworthy_initiate_anchorAI* pAnchorAI = dynamic_cast(pAnchor->AI())) - pAnchorAI->NotifyMe(pPlayer, pGo->GetGUID()); + pAnchorAI->NotifyMe(pPlayer, pGo); } return false; @@ -1188,6 +1144,21 @@ bool GOUse_go_acherus_soul_prison(Player* pPlayer, GameObject* pGo) ## npc_eye_of_acherus ######*/ +enum eEyeOfAcherus +{ + DISPLAYID_EYE_HUGE = 26320, + DISPLAYID_EYE_SMALL = 25499, + + SPELL_EYE_PHASEMASK = 70889, + SPELL_EYE_VISUAL = 51892, + //SPELL_EYE_FL_BOOST_RUN = 51923, + SPELL_EYE_FL_BOOST_FLY = 51890, + SPELL_EYE_CONTROL = 51852, + + TEXT_EYE_UNDER_CONTROL = -1666452, + TEXT_EYE_LAUNCHED = -1666451, +}; + struct MANGOS_DLL_DECL npc_eye_of_acherusAI : public ScriptedAI { npc_eye_of_acherusAI(Creature *pCreature) : ScriptedAI(pCreature) @@ -1195,80 +1166,64 @@ struct MANGOS_DLL_DECL npc_eye_of_acherusAI : public ScriptedAI Reset(); } - int32 StartTimer; - bool Active; - ObjectGuid ownerGuid; + bool m_isActive; void Reset() { - m_creature->SetDisplayId(26320); - StartTimer = 2000; - Active = false; + m_creature->SetDisplayId(DISPLAYID_EYE_HUGE); + m_isActive = false; } - void AttackStart(Unit *) {} - void MoveInLineOfSight(Unit*) {} - - void JustDied(Unit* killer) + void AttackStart(Unit *) { - if(!m_creature || m_creature->GetTypeId() != TYPEID_UNIT) - return; - - m_creature->RemoveAurasDueToSpell(530); - - Player* owner = m_creature->GetMap()->GetPlayer(ownerGuid); + } - if(!owner) - return; + void MoveInLineOfSight(Unit *) + { + } - owner->RemoveAurasDueToSpell(51923); - owner->RemoveAurasDueToSpell(51852); + void JustDied(Unit *) + { + if (Unit* charmer = m_creature->GetCharmer()) + charmer->RemoveAurasDueToSpell(SPELL_EYE_CONTROL); } void MovementInform(uint32 uiType, uint32 uiPointId) { - if (uiType != POINT_MOTION_TYPE && uiPointId == 0) + if (uiType != POINT_MOTION_TYPE || uiPointId != 0) return; - DoScriptText(-1666452, m_creature); - m_creature->SetDisplayId(25499); -// m_creature->SetDisplayId(26320); - m_creature->RemoveAurasDueToSpell(51923); - m_creature->CastSpell(m_creature, 51890, true); + DoScriptText(TEXT_EYE_UNDER_CONTROL, m_creature); + m_creature->SetDisplayId(DISPLAYID_EYE_SMALL); + m_creature->CastSpell(m_creature, SPELL_EYE_FL_BOOST_FLY, true); } - void UpdateAI(const uint32 uiDiff) + void AttackedBy(Unit * attacker) { - if(m_creature->isCharmed()) + // called on remove SPELL_AURA_MOD_POSSESS + if (!m_creature->isCharmed() && attacker->GetTypeId() == TYPEID_PLAYER) { - if (ownerGuid.IsEmpty()) - ownerGuid = m_creature->GetCharmerOrOwner()->GetObjectGuid(); - - if (StartTimer < uiDiff && !Active) - { - m_creature->CastSpell(m_creature, 70889, true); - m_creature->CastSpell(m_creature, 51892, true); - m_creature->CastSpell(m_creature, 51923, true); - m_creature->SetSpeedRate(MOVE_FLIGHT, 4.0f,true); - DoScriptText(-1666451, m_creature); - m_creature->GetMotionMaster()->MovePoint(0, 1750.8276f, -5873.788f, 147.2266f); - Active = true; - } - else - StartTimer -= uiDiff; + attacker->RemoveAurasDueToSpell(SPELL_EYE_CONTROL); +// m_creature->ForcedDespawn(); } - else + } + + void UpdateAI(const uint32 uiDiff) + { + if (m_creature->isCharmed()) { - if (StartTimer < uiDiff) + if (!m_isActive) { - m_creature->ForcedDespawn(); - if (Player* owner = m_creature->GetMap()->GetPlayer(ownerGuid)) - { - owner->RemoveAurasDueToSpell(51852); - owner->RemoveAurasDueToSpell(51923); - } + m_creature->CastSpell(m_creature, SPELL_EYE_PHASEMASK, true); + m_creature->CastSpell(m_creature, SPELL_EYE_VISUAL, true); + m_creature->CastSpell(m_creature, SPELL_EYE_FL_BOOST_FLY, true); + DoScriptText(TEXT_EYE_LAUNCHED, m_creature); + m_creature->GetMotionMaster()->MovePoint(0,1750.8276f, -5873.788f, 147.2266f); + m_isActive = true; } } + else + m_creature->ForcedDespawn(); } }; @@ -1286,18 +1241,18 @@ enum SPELL_HARVESTER_PING_DUMMY = 52514, ENTRY_GOTHIK = 28658, - SAY_SCARLET_GHOUL_SPAWN1 = -1609286, - SAY_SCARLET_GHOUL_SPAWN2 = -1609285, - SAY_SCARLET_GHOUL_SPAWN3 = -1609284, - SAY_SCARLET_GHOUL_SPAWN4 = -1609283, - SAY_SCARLET_GHOUL_SPAWN5 = -1609282, - SAY_SCARLET_GHOUL_SPAWN6 = -1609281, - - SAY_SCARLET_GOTHIK1 = -1609280, - SAY_SCARLET_GOTHIK2 = -1609279, - SAY_SCARLET_GOTHIK3 = -1609278, - SAY_SCARLET_GOTHIK4 = -1609277, - SAY_SCARLET_GOTHIK5 = -1609276, + SAY_SCARLET_GHOUL_SPAWN1 = -1609300, + SAY_SCARLET_GHOUL_SPAWN2 = -1609301, + SAY_SCARLET_GHOUL_SPAWN3 = -1609302, + SAY_SCARLET_GHOUL_SPAWN4 = -1609303, + SAY_SCARLET_GHOUL_SPAWN5 = -1609304, + SAY_SCARLET_GHOUL_SPAWN6 = -1609305, + + SAY_SCARLET_GOTHIK1 = -1609306, + SAY_SCARLET_GOTHIK2 = -1609307, + SAY_SCARLET_GOTHIK3 = -1609308, + SAY_SCARLET_GOTHIK4 = -1609309, + SAY_SCARLET_GOTHIK5 = -1609310, }; struct MANGOS_DLL_DECL mob_scarlet_ghoulAI : public ScriptedAI @@ -1362,7 +1317,7 @@ struct MANGOS_DLL_DECL mob_scarlet_ghoulAI : public ScriptedAI { if (!m_bIsSpawned) { - DoScriptText(SAY_SCARLET_GHOUL_SPAWN1 + urand(0, 5), m_creature); + DoScriptText(SAY_SCARLET_GHOUL_SPAWN1 - urand(0, 5), m_creature); m_bIsSpawned = true; } @@ -1373,7 +1328,7 @@ struct MANGOS_DLL_DECL mob_scarlet_ghoulAI : public ScriptedAI if (Creature* pGothik = m_creature->GetMap()->GetCreature(m_uiHarvesterGUID) ) { if (pGothik->AI()->DoCastSpellIfCan(m_creature, roll_chance_i(50) ? 52519 : 52521) == CAST_OK) - DoScriptText(SAY_SCARLET_GOTHIK1 + urand(0, 4), pGothik); + DoScriptText(SAY_SCARLET_GOTHIK1 - urand(0, 4), pGothik); m_uiWaitForThrowTimer = 5000; m_creature->KnockBackFrom(pGothik, 15.0, 5.0); @@ -3021,7 +2976,7 @@ bool GossipSelect_npc_highlord_darion_mograine(Player* pPlayer, Creature* pCreat case GOSSIP_ACTION_INFO_DEF+1: pPlayer->CLOSE_GOSSIP_MENU(); ((npc_highlord_darion_mograineAI*)pCreature->AI())->uiStep = 1; - ((npc_highlord_darion_mograineAI*)pCreature->AI())->Start(false, pPlayer->GetGUID()); + ((npc_highlord_darion_mograineAI*)pCreature->AI())->Start(false, pPlayer); break; } return true; diff --git a/scripts/eastern_kingdoms/scarlet_monastery/boss_interrogator_vishas.cpp b/scripts/eastern_kingdoms/scarlet_monastery/boss_interrogator_vishas.cpp index 5f4b1e9..7198b7e 100644 --- a/scripts/eastern_kingdoms/scarlet_monastery/boss_interrogator_vishas.cpp +++ b/scripts/eastern_kingdoms/scarlet_monastery/boss_interrogator_vishas.cpp @@ -72,7 +72,7 @@ struct MANGOS_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI return; //Any other actions to do with vorrel? setStandState? - if (Creature *vorrel = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_VORREL))) + if (Creature *vorrel = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_VORREL))) DoScriptText(SAY_TRIGGER_VORREL, vorrel); } diff --git a/scripts/eastern_kingdoms/scarlet_monastery/boss_mograine_and_whitemane.cpp b/scripts/eastern_kingdoms/scarlet_monastery/boss_mograine_and_whitemane.cpp index efcc529..ab2b81b 100644 --- a/scripts/eastern_kingdoms/scarlet_monastery/boss_mograine_and_whitemane.cpp +++ b/scripts/eastern_kingdoms/scarlet_monastery/boss_mograine_and_whitemane.cpp @@ -85,7 +85,7 @@ struct MANGOS_DLL_DECL boss_scarlet_commander_mograineAI : public ScriptedAI if (!m_pInstance) return; - if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_WHITEMANE))) + if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_WHITEMANE))) { if (m_creature->isAlive() && !pWhitemane->isAlive()) pWhitemane->Respawn(); @@ -114,7 +114,7 @@ struct MANGOS_DLL_DECL boss_scarlet_commander_mograineAI : public ScriptedAI return; //On first death, fake death and open door, as well as initiate whitemane if exist - if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_WHITEMANE))) + if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_WHITEMANE))) { m_pInstance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, IN_PROGRESS); @@ -163,7 +163,7 @@ struct MANGOS_DLL_DECL boss_scarlet_commander_mograineAI : public ScriptedAI if (m_bHasDied && !m_bHeal && m_pInstance && m_pInstance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == SPECIAL) { //On ressurection, stop fake death and heal whitemane and resume fight - if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_WHITEMANE))) + if (Creature* pWhitemane = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_WHITEMANE))) { m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetStandState(UNIT_STAND_STATE_STAND); @@ -236,7 +236,7 @@ struct MANGOS_DLL_DECL boss_high_inquisitor_whitemaneAI : public ScriptedAI if (!m_pInstance) return; - if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_MOGRAINE))) + if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_MOGRAINE))) { if (m_creature->isAlive() && !pMograine->isAlive()) pMograine->Respawn(); @@ -298,7 +298,7 @@ struct MANGOS_DLL_DECL boss_high_inquisitor_whitemaneAI : public ScriptedAI //When casting resuruction make sure to delay so on rez when reinstate battle deepsleep runs out if (m_pInstance && m_uiWait_Timer < uiDiff) { - if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_MOGRAINE))) + if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_MOGRAINE))) { DoCastSpellIfCan(pMograine, SPELL_SCARLETRESURRECTION); DoScriptText(SAY_WH_RESSURECT, m_creature); @@ -335,7 +335,7 @@ struct MANGOS_DLL_DECL boss_high_inquisitor_whitemaneAI : public ScriptedAI if (m_pInstance) { - if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_MOGRAINE))) + if (Creature* pMograine = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_MOGRAINE))) { if (pMograine->isAlive() && pMograine->GetHealthPercent() <= 75.0f) pTarget = pMograine; diff --git a/scripts/eastern_kingdoms/scarlet_monastery/instance_scarlet_monastery.cpp b/scripts/eastern_kingdoms/scarlet_monastery/instance_scarlet_monastery.cpp index 864b756..845d4cb 100644 --- a/scripts/eastern_kingdoms/scarlet_monastery/instance_scarlet_monastery.cpp +++ b/scripts/eastern_kingdoms/scarlet_monastery/instance_scarlet_monastery.cpp @@ -49,15 +49,15 @@ struct MANGOS_DLL_DECL instance_scarlet_monastery : public ScriptedInstance { switch(pCreature->GetEntry()) { - case 3976: m_uiMograineGUID = pCreature->GetGUID(); break; - case 3977: m_uiWhitemaneGUID = pCreature->GetGUID(); break; - case 3981: m_uiVorrelGUID = pCreature->GetGUID(); break; + case NPC_MOGRAINE: m_uiMograineGUID = pCreature->GetGUID(); break; + case NPC_WHITEMANE: m_uiWhitemaneGUID = pCreature->GetGUID(); break; + case NPC_VORREL: m_uiVorrelGUID = pCreature->GetGUID(); break; } } void OnObjectCreate(GameObject* pGo) { - if (pGo->GetEntry() == 104600) + if (pGo->GetEntry() == GO_WHITEMANE_DOOR) m_uiDoorHighInquisitorGUID = pGo->GetGUID(); } @@ -65,17 +65,14 @@ struct MANGOS_DLL_DECL instance_scarlet_monastery : public ScriptedInstance { switch(data) { - case DATA_MOGRAINE: - return m_uiMograineGUID; - case DATA_WHITEMANE: - return m_uiWhitemaneGUID; - case DATA_VORREL: - return m_uiVorrelGUID; - case DATA_DOOR_WHITEMANE: - return m_uiDoorHighInquisitorGUID; - } + case NPC_MOGRAINE: return m_uiMograineGUID; + case NPC_WHITEMANE: return m_uiWhitemaneGUID; + case NPC_VORREL: return m_uiVorrelGUID; + case GO_WHITEMANE_DOOR: return m_uiDoorHighInquisitorGUID; - return 0; + default: + return 0; + } } void SetData(uint32 uiType, uint32 uiData) diff --git a/scripts/eastern_kingdoms/scarlet_monastery/scarlet_monastery.h b/scripts/eastern_kingdoms/scarlet_monastery/scarlet_monastery.h index 25a7735..87c56d9 100644 --- a/scripts/eastern_kingdoms/scarlet_monastery/scarlet_monastery.h +++ b/scripts/eastern_kingdoms/scarlet_monastery/scarlet_monastery.h @@ -11,10 +11,11 @@ enum TYPE_MOGRAINE_AND_WHITE_EVENT = 1, - DATA_MOGRAINE = 2, - DATA_WHITEMANE = 3, - DATA_DOOR_WHITEMANE = 4, - DATA_VORREL = 5 + NPC_MOGRAINE = 3976, + NPC_WHITEMANE = 3977, + NPC_VORREL = 3981, + + GO_WHITEMANE_DOOR = 104600, }; #endif diff --git a/scripts/eastern_kingdoms/scholomance/boss_darkmaster_gandling.cpp b/scripts/eastern_kingdoms/scholomance/boss_darkmaster_gandling.cpp index 243d092..7bc0b5b 100644 --- a/scripts/eastern_kingdoms/scholomance/boss_darkmaster_gandling.cpp +++ b/scripts/eastern_kingdoms/scholomance/boss_darkmaster_gandling.cpp @@ -26,8 +26,8 @@ EndScriptData */ enum { - SPELL_ARCANE_MISSILES = 15790, // SpellId not sure, original was 22272 - SPELL_SHADOW_SHIELD = 12040, // SpellID not sure, original was 22417 stated as "wrong, but 12040 is wrong either." + SPELL_ARCANE_MISSILES = 15790, + SPELL_SHADOW_SHIELD = 12040, SPELL_CURSE = 18702, SPELL_SHADOW_PORTAL = 17950 }; diff --git a/scripts/eastern_kingdoms/scholomance/scholomance.h b/scripts/eastern_kingdoms/scholomance/scholomance.h index d0fe4c7..739fac0 100644 --- a/scripts/eastern_kingdoms/scholomance/scholomance.h +++ b/scripts/eastern_kingdoms/scholomance/scholomance.h @@ -63,7 +63,7 @@ struct SpawnLocation static const SpawnLocation aGandlingSpawnLocs[1] = { - {180.73f, -9.43856f, 75.507f, 1.61399f} + {180.771f, -5.4286f, 75.5702f, 1.29154f} }; struct GandlingEventData diff --git a/scripts/eastern_kingdoms/searing_gorge.cpp b/scripts/eastern_kingdoms/searing_gorge.cpp index 427da62..9aeecb3 100644 --- a/scripts/eastern_kingdoms/searing_gorge.cpp +++ b/scripts/eastern_kingdoms/searing_gorge.cpp @@ -36,12 +36,12 @@ EndContentData */ bool GossipHello_npc_kalaran_windblade(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(3441) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Tell me what drives this vengance?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -52,11 +52,11 @@ bool GossipSelect_npc_kalaran_windblade(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Continue please", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(1954, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1954, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let me confer with my colleagues", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(1955, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1955, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); @@ -73,12 +73,12 @@ bool GossipSelect_npc_kalaran_windblade(Player* pPlayer, Creature* pCreature, ui bool GossipHello_npc_lothos_riftwaker(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestRewardStatus(7487) || pPlayer->GetQuestRewardStatus(7848)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport me to the Molten Core", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -101,12 +101,12 @@ bool GossipSelect_npc_lothos_riftwaker(Player* pPlayer, Creature* pCreature, uin bool GossipHello_npc_zamael_lunthistle(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(3377) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Tell me your story", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(1920, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1920, pCreature->GetObjectGuid()); return true; } @@ -117,11 +117,11 @@ bool GossipSelect_npc_zamael_lunthistle(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Please continue...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(1921, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1921, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Goodbye", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(1922, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1922, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/shadowfang_keep/instance_shadowfang_keep.cpp b/scripts/eastern_kingdoms/shadowfang_keep/instance_shadowfang_keep.cpp index a3a4990..8c7fc6a 100644 --- a/scripts/eastern_kingdoms/shadowfang_keep/instance_shadowfang_keep.cpp +++ b/scripts/eastern_kingdoms/shadowfang_keep/instance_shadowfang_keep.cpp @@ -24,26 +24,6 @@ EndScriptData */ #include "precompiled.h" #include "shadowfang_keep.h" -enum -{ - MAX_ENCOUNTER = 6, - - SAY_BOSS_DIE_AD = -1033007, - SAY_BOSS_DIE_AS = -1033008, - - NPC_ASH = 3850, - NPC_ADA = 3849, -// NPC_ARUGAL = 10000, //"Arugal" says intro text, not used - NPC_ARCHMAGE_ARUGAL = 4275, //"Archmage Arugal" does Fenrus event - NPC_FENRUS = 4274, //used to summon Arugal in Fenrus event - NPC_VINCENT = 4444, //Vincent should be "dead" is Arugal is done the intro already - - GO_COURTYARD_DOOR = 18895, //door to open when talking to NPC's - GO_SORCERER_DOOR = 18972, //door to open when Fenrus the Devourer - GO_ARUGAL_DOOR = 18971, //door to open when Wolf Master Nandos - GO_ARUGAL_FOCUS = 18973 //this generates the lightning visual in the Fenrus event -}; - struct MANGOS_DLL_DECL instance_shadowfang_keep : public ScriptedInstance { instance_shadowfang_keep(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; @@ -210,7 +190,7 @@ struct MANGOS_DLL_DECL instance_shadowfang_keep : public ScriptedInstance { switch(uiType) { - case DATA_LIGHTNING: + case GO_ARUGAL_FOCUS: return m_uiArugalFocusGUID; } return 0; diff --git a/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.cpp b/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.cpp index 8096cf2..63814b5 100644 --- a/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.cpp +++ b/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.cpp @@ -51,8 +51,6 @@ enum SPELL_UNLOCK = 6421, SPELL_FIRE = 6422, - NPC_ASH = 3850, - NPC_ADA = 3849 }; #define GOSSIP_ITEM_DOOR "Please unlock the courtyard door." @@ -148,7 +146,7 @@ bool GossipHello_npc_shadowfang_prisoner(Player* pPlayer, Creature* pCreature) if (pInstance && pInstance->GetData(TYPE_FREE_NPC) != DONE && pInstance->GetData(TYPE_RETHILGORE) == DONE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DOOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -502,7 +500,7 @@ struct MANGOS_DLL_DECL boss_arugalAI : public ScriptedAI break; case 3: if (m_pInstance) - if (GameObject* pLightning = m_creature->GetMap()->GetGameObject(m_pInstance->GetData64(DATA_LIGHTNING))) + if (GameObject* pLightning = m_creature->GetMap()->GetGameObject(m_pInstance->GetData64(GO_ARUGAL_FOCUS))) pLightning->Use(m_creature); m_uiSpeechTimer = 5000; @@ -719,8 +717,6 @@ enum SAY_INTRO_4 = -1033012, SPELL_SPAWN = 7741, - - NPC_VINCENT = 4444 }; struct MANGOS_DLL_DECL npc_arugalAI : public ScriptedAI diff --git a/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.h b/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.h index 8f3b175..0b63b05 100644 --- a/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.h +++ b/scripts/eastern_kingdoms/shadowfang_keep/shadowfang_keep.h @@ -7,13 +7,29 @@ enum { - TYPE_FREE_NPC = 1, - TYPE_RETHILGORE = 2, - TYPE_FENRUS = 3, - TYPE_NANDOS = 4, - TYPE_INTRO = 5, - TYPE_VOIDWALKER = 6, - DATA_LIGHTNING = 7 + MAX_ENCOUNTER = 6, + + TYPE_FREE_NPC = 1, + TYPE_RETHILGORE = 2, + TYPE_FENRUS = 3, + TYPE_NANDOS = 4, + TYPE_INTRO = 5, + TYPE_VOIDWALKER = 6, + + SAY_BOSS_DIE_AD = -1033007, + SAY_BOSS_DIE_AS = -1033008, + + NPC_ASH = 3850, + NPC_ADA = 3849, + // NPC_ARUGAL = 10000, //"Arugal" says intro text, not used + NPC_ARCHMAGE_ARUGAL = 4275, //"Archmage Arugal" does Fenrus event + NPC_FENRUS = 4274, //used to summon Arugal in Fenrus event + NPC_VINCENT = 4444, //Vincent should be "dead" is Arugal is done the intro already + + GO_COURTYARD_DOOR = 18895, //door to open when talking to NPC's + GO_SORCERER_DOOR = 18972, //door to open when Fenrus the Devourer + GO_ARUGAL_DOOR = 18971, //door to open when Wolf Master Nandos + GO_ARUGAL_FOCUS = 18973, //this generates the lightning visual in the Fenrus event }; #endif diff --git a/scripts/eastern_kingdoms/silverpine_forest.cpp b/scripts/eastern_kingdoms/silverpine_forest.cpp index c3a7a13..04faaea 100644 --- a/scripts/eastern_kingdoms/silverpine_forest.cpp +++ b/scripts/eastern_kingdoms/silverpine_forest.cpp @@ -17,12 +17,11 @@ /* ScriptData SDName: Silverpine_Forest SD%Complete: 100 -SDComment: Quest support: 435, 452, 1886 +SDComment: Quest support: 435, 452 SDCategory: Silverpine Forest EndScriptData */ /* ContentData -npc_astor_hadren npc_deathstalker_erland npc_deathstalker_faerleia EndContentData */ @@ -30,57 +29,6 @@ EndContentData */ #include "precompiled.h" #include "escort_ai.h" -/*###### -## npc_astor_hadren -######*/ - -struct MANGOS_DLL_DECL npc_astor_hadrenAI : public ScriptedAI -{ - npc_astor_hadrenAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - - void Reset() - { - m_creature->setFaction(68); - } - - void JustDied(Unit *who) - { - m_creature->setFaction(68); - } -}; - -CreatureAI* GetAI_npc_astor_hadren(Creature *_creature) -{ - return new npc_astor_hadrenAI(_creature); -} - -bool GossipHello_npc_astor_hadren(Player* pPlayer, Creature* pCreature) -{ - if (pPlayer->GetQuestStatus(1886) == QUEST_STATUS_INCOMPLETE) - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "You're Astor Hadren, right?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - - pPlayer->SEND_GOSSIP_MENU(623, pCreature->GetGUID()); - - return true; -} - -bool GossipSelect_npc_astor_hadren(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) -{ - switch(uiAction) - { - case GOSSIP_ACTION_INFO_DEF + 1: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "You've got something I need, Astor. And I'll be taking it now.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(624, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF + 2: - pPlayer->CLOSE_GOSSIP_MENU(); - pCreature->setFaction(21); - pCreature->AI()->AttackStart(pPlayer); - break; - } - return true; -} - /*##### ## npc_deathstalker_erland #####*/ @@ -108,34 +56,7 @@ enum struct MANGOS_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI { - npc_deathstalker_erlandAI(Creature* pCreature) : npc_escortAI(pCreature) - { - uiRaneGUID = 0; - uiQuinnGUID = 0; - Reset(); - } - - uint64 uiRaneGUID; - uint64 uiQuinnGUID; - - void MoveInLineOfSight(Unit* pUnit) - { - if (HasEscortState(STATE_ESCORT_ESCORTING)) - { - if (!uiRaneGUID && pUnit->GetEntry() == NPC_RANE) - { - if (m_creature->IsWithinDistInMap(pUnit, 30.0f)) - uiRaneGUID = pUnit->GetGUID(); - } - if (!uiQuinnGUID && pUnit->GetEntry() == NPC_QUINN) - { - if (m_creature->IsWithinDistInMap(pUnit, 30.0f)) - uiQuinnGUID = pUnit->GetGUID(); - } - } - - npc_escortAI::MoveInLineOfSight(pUnit); - } + npc_deathstalker_erlandAI(Creature* pCreature) : npc_escortAI(pCreature) { Reset(); } void WaypointReached(uint32 i) { @@ -154,7 +75,7 @@ struct MANGOS_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI pPlayer->GroupEventHappens(QUEST_ERLAND, m_creature); break; case 14: - if (Creature* pRane = m_creature->GetMap()->GetCreature(uiRaneGUID)) + if (Creature* pRane = GetClosestCreatureWithEntry(m_creature, NPC_RANE, 45.0f)) DoScriptText(SAY_RANE, pRane, m_creature); break; case 15: @@ -167,7 +88,7 @@ struct MANGOS_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI DoScriptText(SAY_QUINN, m_creature); break; case 25: - if (Creature* pQuinn = m_creature->GetMap()->GetCreature(uiQuinnGUID)) + if (Creature* pQuinn = GetClosestCreatureWithEntry(m_creature, NPC_QUINN, 45.0f)) DoScriptText(SAY_QUINN_REPLY, pQuinn, m_creature); break; case 26: @@ -176,14 +97,7 @@ struct MANGOS_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI } } - void Reset() - { - if (!HasEscortState(STATE_ESCORT_ESCORTING)) - { - uiRaneGUID = 0; - uiQuinnGUID = 0; - } - } + void Reset() {} void Aggro(Unit* who) { @@ -203,7 +117,7 @@ bool QuestAccept_npc_deathstalker_erland(Player* pPlayer, Creature* pCreature, c DoScriptText(SAY_START_1, pCreature); if (npc_deathstalker_erlandAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -261,23 +175,21 @@ static float m_afMoveCoords[] = {-410.69f, 1498.04f, 19.77f}; struct MANGOS_DLL_DECL npc_deathstalker_faerleiaAI : public ScriptedAI { - npc_deathstalker_faerleiaAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} + npc_deathstalker_faerleiaAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - void Reset() - { - } + void Reset() {} - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiWaveTimer; uint32 m_uiSummonCount; uint8 m_uiWaveCount; bool m_bEventStarted; - void StartEvent(uint64 uiPlayerGUID) + void StartEvent(Player* pPlayer) { m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - m_uiPlayerGUID = uiPlayerGUID; + m_playerGuid = pPlayer->GetObjectGuid(); m_bEventStarted = true; m_uiWaveTimer = 10000; m_uiSummonCount = 0; @@ -286,14 +198,14 @@ struct MANGOS_DLL_DECL npc_deathstalker_faerleiaAI : public ScriptedAI void FinishEvent() { - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_bEventStarted = false; m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); } void JustDied(Unit* pKiller) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->SendQuestFailed(QUEST_PYREWOOD_AMBUSH); FinishEvent(); @@ -322,7 +234,7 @@ struct MANGOS_DLL_DECL npc_deathstalker_faerleiaAI : public ScriptedAI { DoScriptText(SAY_COMPLETED, m_creature); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->GroupEventHappens(QUEST_PYREWOOD_AMBUSH, m_creature); FinishEvent(); @@ -380,7 +292,7 @@ bool QuestAccept_npc_deathstalker_faerleia(Player* pPlayer, Creature* pCreature, DoScriptText(SAY_START, pCreature, pPlayer); if (npc_deathstalker_faerleiaAI* pFaerleiaAI = dynamic_cast(pCreature->AI())) - pFaerleiaAI->StartEvent(pPlayer->GetGUID()); + pFaerleiaAI->StartEvent(pPlayer); } return true; } @@ -394,13 +306,6 @@ void AddSC_silverpine_forest() { Script* newscript; - newscript = new Script; - newscript->Name = "npc_astor_hadren"; - newscript->pGossipHello = &GossipHello_npc_astor_hadren; - newscript->pGossipSelect = &GossipSelect_npc_astor_hadren; - newscript->GetAI = &GetAI_npc_astor_hadren; - newscript->RegisterSelf(); - newscript = new Script; newscript->Name = "npc_deathstalker_erland"; newscript->GetAI = &GetAI_npc_deathstalker_erland; diff --git a/scripts/eastern_kingdoms/stormwind_city.cpp b/scripts/eastern_kingdoms/stormwind_city.cpp index 943bc1d..3b8b479 100644 --- a/scripts/eastern_kingdoms/stormwind_city.cpp +++ b/scripts/eastern_kingdoms/stormwind_city.cpp @@ -39,12 +39,12 @@ EndContentData */ bool GossipHello_npc_archmage_malin(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(11223) == QUEST_STATUS_COMPLETE && !pPlayer->GetQuestRewardStatus(11223)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MALIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -204,12 +204,12 @@ CreatureAI* GetAI_npc_dashel_stonefist(Creature* pCreature) bool GossipHello_npc_lady_katrana_prestor(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(4185) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(2693, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2693, pCreature->GetObjectGuid()); return true; } @@ -220,15 +220,15 @@ bool GossipSelect_npc_lady_katrana_prestor(Player* pPlayer, Creature* pCreature, { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(2694, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2694, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(2695, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2695, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(2696, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2696, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/eastern_kingdoms/sunken_temple/sunken_temple.h b/scripts/eastern_kingdoms/sunken_temple/sunken_temple.h index 816ef85..e4031b1 100644 --- a/scripts/eastern_kingdoms/sunken_temple/sunken_temple.h +++ b/scripts/eastern_kingdoms/sunken_temple/sunken_temple.h @@ -75,8 +75,8 @@ struct SummonLocations static const SummonLocations aSunkenTempleLocation[] = { - {-480.3991f, 96.5668f, -189.7297f, 6.1947f}, // Atalarion summon loc - {-466.7165f, 273.0253f, -90.4509f, 3.1338f}, // Avatar and shade of hakkar summon + {-466.5130f, 95.19820f, -189.646f, 0.0349f}, // Atalarion summon loc + {-466.8673f,272.31204f, -90.7441f, 3.5255f}, // Shade of hakkar summon loc {-660.5277f, -16.7117f, -90.8357f, 1.6055f} // Malfurion summon loc }; diff --git a/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp b/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp index 6de7c5e..04cedc8 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp @@ -52,15 +52,7 @@ enum Brutallus SPELL_BURN = 45141, SPELL_BURN_AURA_EFFECT = 46394, SPELL_STOMP = 45185, - SPELL_BERSERK = 26662, - - //Madrigosa - SPELL_FROST_BLAST = 45203, - SPELL_ENCAPSULATE = 44883, - NPC_MADRIGOSA = 25160, - SPELL_BREAK_ICE = 46650, // related to the door - SPELL_OPEN_DOOR = 46652, - SPELL_FELMYST_SUMMON = 45069, + SPELL_BERSERK = 26662 }; struct MANGOS_DLL_DECL boss_brutallusAI : public ScriptedAI @@ -68,7 +60,6 @@ struct MANGOS_DLL_DECL boss_brutallusAI : public ScriptedAI boss_brutallusAI(Creature* pCreature) : ScriptedAI(pCreature) { m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); - m_bIsIntroNow = true; Reset(); } @@ -79,10 +70,6 @@ struct MANGOS_DLL_DECL boss_brutallusAI : public ScriptedAI uint32 m_uiStompTimer; uint32 m_uiBerserkTimer; uint32 m_uiLoveTimer; - uint32 m_uiIntroCount; - uint32 m_uiIntroTimer; - bool m_bIsIntroNow; - uint64 m_uiMadrigosaGuid; void Reset() { @@ -91,22 +78,14 @@ struct MANGOS_DLL_DECL boss_brutallusAI : public ScriptedAI m_uiBurnTimer = 60000; m_uiBerserkTimer = 360000; m_uiLoveTimer = urand(10000, 17000); - m_uiIntroTimer = 5000; - m_uiIntroCount = 0; - m_uiMadrigosaGuid = 0; - } - void JustReachedHome() - { - if (m_pInstance) + //TODO: correct me when pre-event implemented + if (m_pInstance) m_pInstance->SetData(TYPE_BRUTALLUS, NOT_STARTED); - } + } void Aggro(Unit* pWho) { - if(pWho->GetTypeId() != TYPEID_PLAYER) - return; - DoScriptText(YELL_AGGRO, m_creature); if (m_pInstance) @@ -134,115 +113,11 @@ struct MANGOS_DLL_DECL boss_brutallusAI : public ScriptedAI void SpellHitTarget(Unit* pCaster, const SpellEntry* pSpell) { if (pSpell->Id == SPELL_BURN) - pCaster->CastSpell(pCaster, SPELL_BURN_AURA_EFFECT, true, NULL, NULL, m_creature->GetGUID()); + pCaster->CastSpell(pCaster, SPELL_BURN_AURA_EFFECT, true, NULL, NULL, m_creature->GetObjectGuid()); } void UpdateAI(const uint32 uiDiff) { - if(m_pInstance->GetData(TYPE_BRUTALLUS) == SPECIAL && m_bIsIntroNow) - { - if(m_uiIntroTimer < uiDiff) - { - switch(m_uiIntroCount) - { - case 0: - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - if(Creature* Madrigosa = m_creature->SummonCreature(NPC_MADRIGOSA, 1465.831f, 647.065f, m_creature->GetPositionZ(), 4.729f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000)) - m_uiMadrigosaGuid = Madrigosa->GetGUID(); - m_uiIntroTimer = 3000; - break; - case 1: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - { - DoScriptText(YELL_MADR_ICE_BARRIER, pMadrigosa); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, pMadrigosa->GetGUID()); - } - m_uiIntroTimer = 6000; - break; - case 2: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - DoScriptText(YELL_MADR_INTRO, pMadrigosa); - m_uiIntroTimer = 5000; - break; - case 3: - DoScriptText(YELL_INTRO, m_creature); - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - { - //m_creature->SetInCombatWith(pMadrigosa); - //m_creature->AI()->AttackStart(pMadrigosa); - //m_creature->AddThreat(pMadrigosa, 10000.0f); - //pMadrigosa->SetInCombatWith(m_creature); - //pMadrigosa->AI()->AttackStart(m_creature); - //pMadrigosa->AddThreat(m_creature, 10000.0f); - } - m_uiIntroTimer = 10000; - break; - case 4: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - { - DoScriptText(YELL_MADR_ICE_BLOCK, pMadrigosa); - pMadrigosa->CastSpell(m_creature, SPELL_FROST_BLAST, true); - } - m_uiIntroTimer = 2000; - break; - case 5: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - pMadrigosa->CastSpell(m_creature, SPELL_FROST_BLAST, true); - m_uiIntroTimer = 2000; - break; - case 6: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - pMadrigosa->CastSpell(m_creature, SPELL_FROST_BLAST, true); - m_uiIntroTimer = 2000; - break; - case 7: - DoScriptText(YELL_INTRO_BREAK_ICE, m_creature); - m_uiIntroTimer = 5000; - break; - case 8: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - { - pMadrigosa->CastSpell(m_creature, SPELL_ENCAPSULATE, true); - DoScriptText(YELL_MADR_TRAP, pMadrigosa); - } - m_uiIntroTimer = 15000; - break; - case 9: - DoScriptText(YELL_INTRO_CHARGE, m_creature); - //if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - // m_creature->GetMotionMaster()->MoveChase(pMadrigosa); - m_uiIntroTimer = 3000; - break; - case 10: - if(Creature* pMadrigosa = m_pInstance->instance->GetCreature(m_uiMadrigosaGuid)) - { - DoScriptText(YELL_MADR_DEATH, pMadrigosa); - pMadrigosa->DealDamage(pMadrigosa, pMadrigosa->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - } - m_uiIntroTimer = 5000; - break; - case 11: - DoScriptText(YELL_INTRO_KILL_MADRIGOSA, m_creature); - m_uiIntroTimer = 6000; - break; - case 12: - DoScriptText(YELL_INTRO_TAUNT, m_creature); - if(GameObject* pIce = m_creature->GetMap()->GetGameObject(m_pInstance->GetData64(DATA_GO_ICE_BARRIER))) - pIce->SetGoState(GO_STATE_ACTIVE); - m_creature->GetMotionMaster()->Clear(); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_bIsIntroNow = false; - break; - } - ++m_uiIntroCount; - } - else m_uiIntroTimer -= uiDiff; - - DoMeleeAttackIfReady(); - - return; - } - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; diff --git a/scripts/eastern_kingdoms/sunwell_plateau/boss_eredar_twins.cpp b/scripts/eastern_kingdoms/sunwell_plateau/boss_eredar_twins.cpp index 01c1786..4ba4fe2 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/boss_eredar_twins.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/boss_eredar_twins.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2008 ScriptDev2 +/* Copyright (C) 2006 - 2011 ScriptDev2 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -15,471 +15,14 @@ */ /* ScriptData -SDName: Boss_eredar_twins +SDName: boss_eredar_twins SD%Complete: -SDComment: -SDAuthor: +SDComment: +SDCategory: Sunwell Plateau EndScriptData */ #include "precompiled.h" -#include "sunwell_plateau.h" - -enum -{ - // texts - // Lady Sacrolash - SAY_INTRO = -1580044, - SAY_SACROLASH_SHADOW_NOVA = -1580045, //only if Alythess is not dead - SAY_SACROLASH_SISTER_DEAD = -1580046, - SAY_SACROLASH_KILL_1 = -1580047, - SAY_SACROLASH_KILL_2 = -1580048, - SAY_SACROLASH_DEAD = -1580049, - SAY_SACROLASH_ENRAGE = -1580055, - - //Grand Warlock Alythess - SAY_ALYTHESS_CANFLAGRATION = -1580050, //only if Sacrolash is not dead - SAY_ALYTHESS_SISTER_DEAD = -1580051, - SAY_ALYTHESS_KILL_1 = -1580052, - SAY_ALYTHESS_KILL_2 = -1580053, - SAY_ALYTHESS_DEAD = -1580054, - SAY_ALYTHESS_BERSERK = -1580055, - - //Lady Sacrolash - SPELL_DARK_TOUCHED = 45347, - SPELL_SHADOW_BLADES = 45248, //10 secs - SPELL_DARK_STRIKE = 45271, - SPELL_SHADOW_NOVA = 45329, //30-35 secs - SPELL_CONFOUNDING_BLOW = 45256, //25 secs - - //Shadow Image spells - NPC_SHADOW_IMAGE = 25214, - SPELL_SHADOWFURY = 45270, - SPELL_IMAGE_VISUAL = 45263, - - //Grand Warlock Alythess spells - SPELL_PYROGENICS = 45230, //15secs - SPELL_FLAME_TOUCHED = 45348, - SPELL_CONFLAGRATION = 45342, //30-35 secs - SPELL_BLAZE = 45235, //on main target every 3 secs - SPELL_FLAME_SEAR = 46771, - - //Misc spells - SPELL_TWINS_ENRAGE = 46587, - SPELL_EMPOWER = 45366, - SPELL_DARK_FLAME = 45345, -}; - -/*###### -## mob_alythess -######*/ -struct MANGOS_DLL_DECL boss_alythessAI : public ScriptedAI -{ - boss_alythessAI(Creature* pCreature) : ScriptedAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - Reset(); - } - - ScriptedInstance* m_pInstance; - - uint32 m_uiPyrogenicsTimer; - uint32 m_uiFlameTouchedTimer; - uint32 m_uiConflagrationTimer; - uint32 m_uiBlazeTimer; - uint32 m_uiFlameSearTimer; - uint32 m_uiEnrageTimer; - - void Reset() - { - m_uiPyrogenicsTimer = 15000; - m_uiFlameTouchedTimer = 30000; - m_uiConflagrationTimer = 25000 + rand()%15000; - m_uiBlazeTimer = 1000; - m_uiFlameSearTimer = 15000; - m_uiEnrageTimer = 360000; // 6 min - } - - void JustReachedHome() - { - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_EREDAR_TWINS) != NOT_STARTED) - m_pInstance->SetData(TYPE_EREDAR_TWINS, NOT_STARTED); - - if(Creature* pSister = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_SACROLASH))) - { - if(!pSister->isAlive()) - pSister->Respawn(); - } - } - } - - void Aggro(Unit* pWho) - { - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_EREDAR_TWINS) != IN_PROGRESS) - m_pInstance->SetData(TYPE_EREDAR_TWINS, IN_PROGRESS); - } - - if(Creature* pSister = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_SACROLASH))) - pSister->AI()->AttackStart(pWho); - - DoCast(m_creature, SPELL_PYROGENICS); - DoScriptText(SAY_INTRO, m_creature); - } - - void AttackStart(Unit* pWho) - { - if(!pWho) - return; - - if (m_creature->Attack(pWho, true)) - { - m_creature->AddThreat(pWho); - m_creature->SetInCombatWith(pWho); - pWho->SetInCombatWith(m_creature); - DoStartMovement(pWho, 20); - } - } - - void KilledUnit(Unit* pVictim) - { - switch(rand()%2) - { - case 0: DoScriptText(SAY_ALYTHESS_KILL_1, m_creature); break; - case 1: DoScriptText(SAY_ALYTHESS_KILL_2, m_creature); break; - } - } - - void JustDied(Unit* pKiller) - { - DoScriptText(SAY_ALYTHESS_DEAD, m_creature); - - if (m_pInstance) - { - if(Creature* pSacrolash = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_SACROLASH))) - { - if(!pSacrolash->isAlive()) - m_pInstance->SetData(TYPE_EREDAR_TWINS, DONE); - else - { - m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - DoScriptText(SAY_SACROLASH_SISTER_DEAD, pSacrolash); - pSacrolash->InterruptNonMeleeSpells(true); - pSacrolash->CastSpell(pSacrolash, SPELL_EMPOWER, false); - } - } - } - } - - void DamageDeal(Unit* pDoneTo, uint32 &uiDamage) - { - if(pDoneTo->HasAura(SPELL_DARK_TOUCHED,EFFECT_INDEX_0)) - { - pDoneTo->RemoveAurasDueToSpell(SPELL_DARK_TOUCHED,0); - pDoneTo->CastSpell(pDoneTo, SPELL_DARK_FLAME, false); - } - } - - void UpdateAI(const uint32 uiDiff) - { - if(!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - if(m_uiEnrageTimer < uiDiff) - { - DoScriptText(SAY_ALYTHESS_BERSERK, m_creature); - DoCast(m_creature, SPELL_TWINS_ENRAGE); - m_uiEnrageTimer = 60000; - } - else m_uiEnrageTimer -= uiDiff; - - if(m_uiPyrogenicsTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoCast(m_creature, SPELL_PYROGENICS); - m_uiPyrogenicsTimer = 15000; - } - else m_uiPyrogenicsTimer -= uiDiff; - - if(m_uiFlameTouchedTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - pTarget->CastSpell(pTarget, SPELL_FLAME_TOUCHED, false); - m_uiFlameTouchedTimer = urand(10000, 13000); - } - else m_uiFlameTouchedTimer -= uiDiff; - - if(m_uiConflagrationTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoScriptText(SAY_ALYTHESS_CANFLAGRATION, m_creature); - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - DoCast(pTarget, SPELL_CONFLAGRATION); - m_uiConflagrationTimer = 20000 + rand()%5000; - } - else m_uiConflagrationTimer -= uiDiff; - - if(m_uiBlazeTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_TOPAGGRO, 0)) - DoCast(pTarget, SPELL_BLAZE); - m_uiBlazeTimer = urand(3000,4000); - } - else m_uiBlazeTimer -= uiDiff; - - if(m_uiFlameSearTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoCast(m_creature, SPELL_FLAME_SEAR); - m_uiFlameSearTimer = 30000; - } - else m_uiFlameSearTimer -= uiDiff; - - DoMeleeAttackIfReady(); - } -}; - -/*###### -## boss_sacrolash -######*/ -struct MANGOS_DLL_DECL boss_sacrolashAI : public ScriptedAI -{ - boss_sacrolashAI(Creature* pCreature) : ScriptedAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - Reset(); - } - - ScriptedInstance* m_pInstance; - - uint32 m_uiEnrageTimer; - uint32 m_uiDarkTouchedTimer; - uint32 m_uiShadowNovaTimer; - uint32 m_uiConfoundingBlowTimer; - uint32 m_uiShadowBladesTimer; - uint32 m_uiSummonShadowImage; - uint64 m_uiTargetGUID[3]; - - void Reset() - { - m_uiEnrageTimer = 360000; - m_uiDarkTouchedTimer = 30000; - m_uiShadowNovaTimer = 15000; - m_uiConfoundingBlowTimer = 3000; - m_uiShadowBladesTimer = 10000; - m_uiSummonShadowImage = 30000; - } - - void JustReachedHome() - { - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_EREDAR_TWINS) != NOT_STARTED) - m_pInstance->SetData(TYPE_EREDAR_TWINS, NOT_STARTED); - - if(Creature* pSister = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ALYTHESS))) - { - if(!pSister->isAlive()) - pSister->Respawn(); - } - } - } - - void DamageDeal(Unit* pDoneTo, uint32 &uiDamage) - { - if(pDoneTo->HasAura(SPELL_FLAME_TOUCHED,EFFECT_INDEX_0)) - { - pDoneTo->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED,0); - pDoneTo->CastSpell(pDoneTo, SPELL_DARK_FLAME, false); - } - } - - void Aggro(Unit* pWho) - { - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_EREDAR_TWINS) != IN_PROGRESS) - m_pInstance->SetData(TYPE_EREDAR_TWINS, IN_PROGRESS); - } - - if(Creature* pSister = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ALYTHESS))) - pSister->AI()->AttackStart(pWho); - } - - void KilledUnit(Unit* pVictim) - { - switch(rand()%2) - { - case 0: DoScriptText(SAY_SACROLASH_KILL_1, m_creature); break; - case 1: DoScriptText(SAY_SACROLASH_KILL_2, m_creature); break; - } - } - - void JustDied(Unit* pKiller) - { - DoScriptText(SAY_SACROLASH_DEAD, m_creature); - - if (m_pInstance) - { - if(Creature* pAlythess = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ALYTHESS))) - { - if(!pAlythess->isAlive()) - m_pInstance->SetData(TYPE_EREDAR_TWINS, DONE); - else - { - m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - DoScriptText(SAY_ALYTHESS_SISTER_DEAD, pAlythess); - pAlythess->InterruptNonMeleeSpells(true); - pAlythess->CastSpell(pAlythess, SPELL_EMPOWER, false); - } - } - } - } - - void UpdateAI(const uint32 uiDiff) - { - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - if(m_uiEnrageTimer < uiDiff) - { - DoScriptText(SAY_SACROLASH_ENRAGE, m_creature); - DoCast(m_creature, SPELL_TWINS_ENRAGE); - m_uiEnrageTimer = 60000; - } - else m_uiEnrageTimer -= uiDiff; - - if(m_uiDarkTouchedTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - pTarget->CastSpell(pTarget, SPELL_DARK_TOUCHED, false); - m_uiDarkTouchedTimer = urand(10000,13000); - } - else m_uiDarkTouchedTimer -= uiDiff; - - if(m_uiShadowBladesTimer < uiDiff) - { - DoCast(m_creature->getVictim(), SPELL_SHADOW_BLADES, true); - m_uiShadowBladesTimer = urand(10000,13000); - } - else m_uiShadowBladesTimer -= uiDiff; - - if(m_uiShadowNovaTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoScriptText(SAY_SACROLASH_SHADOW_NOVA, m_creature); - DoCast(m_creature, SPELL_SHADOW_NOVA); - m_uiShadowNovaTimer = urand(30000,35000); - } - else m_uiShadowNovaTimer -= uiDiff; - - if(m_uiConfoundingBlowTimer < uiDiff) - { - DoCast(m_creature->getVictim(), SPELL_CONFOUNDING_BLOW); - m_uiConfoundingBlowTimer = urand(25000,30000); - } - else m_uiConfoundingBlowTimer -= uiDiff; - - if (m_uiSummonShadowImage < uiDiff) - { - for(uint8 i = 0; i < 3; ++i) - { - float angle = (float) rand()*360/RAND_MAX + 1; - float homeX = m_creature->GetPositionX() + 10*cos(angle*(M_PI/180)); - float homeY = m_creature->GetPositionY() + 10*sin(angle*(M_PI/180)); - if(Creature* pImage = m_creature->SummonCreature(NPC_SHADOW_IMAGE, homeX, homeY, m_creature->GetPositionZ(), 0.0, TEMPSUMMON_TIMED_DESPAWN, 10000)) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - pImage->AI()->AttackStart(pTarget); - } - } - m_uiSummonShadowImage = urand(30000,40000); - } - else m_uiSummonShadowImage -= uiDiff; - - DoMeleeAttackIfReady(); - } -}; - -/*###### -## mob_shadow_image -######*/ -struct MANGOS_DLL_DECL npc_shadow_imageAI : public ScriptedAI -{ - npc_shadow_imageAI(Creature* pCreature) : ScriptedAI(pCreature) - { - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pCreature->setFaction(14); - Reset(); - } - - ScriptedInstance* pInstance; - - uint32 m_uiDarkStrikeTimer; - uint32 m_uiShadowfuryTimer; - - void Reset() - { - DoCast(m_creature, SPELL_IMAGE_VISUAL); - m_uiDarkStrikeTimer = 1000; - m_uiShadowfuryTimer = 9000; - } - - void UpdateAI(const uint32 diff) - { - if(m_uiDarkStrikeTimer < diff) - { - DoCast(m_creature->getVictim(), SPELL_DARK_STRIKE); - m_uiDarkStrikeTimer = 2000; - } - else m_uiDarkStrikeTimer -= diff; - - if(m_uiShadowfuryTimer < diff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - m_creature->CastSpell(pTarget, SPELL_SHADOWFURY, false); - m_uiShadowfuryTimer = 8000; - } - else m_uiShadowfuryTimer -= diff; - - DoMeleeAttackIfReady(); - } -}; - -CreatureAI* GetAI_npc_shadow_image(Creature* pCreature) -{ - return new npc_shadow_imageAI (pCreature); -} - -CreatureAI* GetAI_boss_alythess(Creature* pCreature) -{ - return new boss_alythessAI (pCreature); -} - -CreatureAI* GetAI_boss_sacrolash(Creature* pCreature) -{ - return new boss_sacrolashAI (pCreature); -} void AddSC_boss_eredar_twins() { - Script* newscript; - - newscript = new Script; - newscript->Name = "npc_shadow_image"; - newscript->GetAI = &GetAI_npc_shadow_image; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name = "boss_alythess"; - newscript->GetAI = &GetAI_boss_alythess; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name = "boss_sacrolash"; - newscript->GetAI = &GetAI_boss_sacrolash; - newscript->RegisterSelf(); } diff --git a/scripts/eastern_kingdoms/sunwell_plateau/boss_felmyst.cpp b/scripts/eastern_kingdoms/sunwell_plateau/boss_felmyst.cpp index 75154f5..2fd1b1e 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/boss_felmyst.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/boss_felmyst.cpp @@ -1,554 +1,28 @@ -/* Copyright (C) 2006 - 2008 ScriptDev2 -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - +/* Copyright (C) 2006 - 2011 ScriptDev2 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + /* ScriptData -SDName: Boss_Felmyst +SDName: boss_felmyst SD%Complete: SDComment: SDCategory: Sunwell Plateau EndScriptData */ #include "precompiled.h" -#include "sunwell_plateau.h" - -enum -{ - YELL_REBIRTH = -1580036, - YELL_SLAY1 = -1580037, - YELL_SLAY2 = -1580038, - YELL_DEATH = -1580042, - YELL_TAKEOFF = -1580040, - YELL_BREATH = -1580039, - YELL_BERSERK = -1580041, - YELL_KALECGOS = -1580043, - - NPC_KALECGOS = 25319, - - //Mics - SPELL_NOXIOUSFUMES = 47002, - SPELL_ENRAGE = 26662, - - //Land Phase - SPELL_CLEAVE = 19983, - SPELL_CORROSION = 45866, - SPELL_GASNOVA = 45855, - SPELL_ENCAPSULATE = 45665, - SPELL_ENCAPSULATE_CHANNEL = 45661, - - //Flight Phase - SPELL_DEMONIC_VAPOR_TRIGG = 45399, - SPELL_FOG_OF_CORRUPTION = 45582, - SPELL_FOG_CHARM = 45717, - SPELL_SOUL_SEVER = 45917, - SPELL_SUMMON_VAPOR = 45391, - SPELL_SUMMON_VAPOR_TRIAL = 45410, - SPELL_VAPOR_BEAM = 45389, - - // npcs - NPC_UNYELDING_DEAD = 25268, - - NPC_FELMYST_VISUAL = 25041, - NPC_FLIGHT_LEFT = 25357, - NPC_FLIGHT_RIGHT = 25358, - - // vapors - NPC_VAPOR = 25265, - NPC_VAPOR_TRAIL = 25267, - - // fog - SPELL_DEATH_COULD_VISUAL = 45212, // not used - SPELL_SUMMON_DEATH_CLOUD = 45884, - NPC_DEATH_CLOUD = 25703, - - // transforms - SPELL_TRANSFORM_TRIGGER = 44885, // madrigosa to self, trigger 46350 - SPELL_TRANSFORM_FELMYST = 45068, // become fel - - // phases - PHASE_IDLE = 0, - PHASE_GROUND = 1, - PHASE_AIR = 2, -}; - -//Positional defines -struct LocationsXY -{ - float x, y, z; - uint32 id; -}; - -// Movement coordinates -static LocationsXY MoveLoc[]= -{ - {1489.307f, 701.451f, 40.5f}, // right - 0 - {1447.672f, 649.917f, 40.5f}, - {1430.092f, 604.318f, 40.5f}, // center - 2 - {1462.899f, 536.334f, 40.5f}, - {1537.197f, 522.199f, 40.5f}, // left - 4 -}; - -/*###### -## boss_felmyst -######*/ -struct MANGOS_DLL_DECL boss_felmystAI : public ScriptedAI -{ - boss_felmystAI(Creature *pCreature) : ScriptedAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - m_bHasChecked = false; - Reset(); - } - - ScriptedInstance* m_pInstance; - - uint32 m_uiPhase; - uint32 m_uiEnrageTimer; - uint32 m_uiMovemetnTimer; - - //Ground Phase - uint32 m_uiFlyPhaseTimer; - uint32 m_uiCorrosionTimer; - uint32 m_uiCleaveTimer; - uint32 m_uiEncapsulateTimer; - uint32 m_uiGasNovaTimer; - - //FlyPhase Timers - uint32 m_uiBreathCount; - uint32 m_uiLastPointId; - uint32 m_uiDemonicVaporTimer; - uint64 m_uiVaporTargetGUID; - uint32 m_uiVaporSummonTimer; - uint32 m_uiVaporCount; - uint32 m_uiFogOfCorruptionTimer; - uint32 m_uiFogSummonTimer; - bool m_bIsBreath; - - uint32 m_uiEncounterCheckTimer; - uint32 m_bHasChecked; - - void Reset() - { - m_uiPhase = PHASE_IDLE; - m_uiEnrageTimer = 600000; - m_uiMovemetnTimer = 11000; - - //Ground Phase - m_uiCorrosionTimer = 10000; - m_uiCleaveTimer = 4000; - m_uiGasNovaTimer = 20000; - m_uiEncapsulateTimer = 15000; - m_uiFlyPhaseTimer = 60000; - - //FlyPhase Timers - m_uiFogOfCorruptionTimer= 30000; - m_uiFogSummonTimer = 1000; - m_bIsBreath = false; - m_uiDemonicVaporTimer = 10000; - m_uiVaporTargetGUID = 0; - m_uiVaporSummonTimer = 1000; - m_uiVaporCount = 0; - m_uiBreathCount = 0; - - m_uiEncounterCheckTimer = 10000; - } - - void JustReachedHome() - { - if(m_pInstance) - m_pInstance->SetData(TYPE_FELMYST, NOT_STARTED); - } - - void Aggro(Unit *who) - { - m_uiPhase = PHASE_GROUND; - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 0); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - m_creature->RemoveSplineFlag(SPLINEFLAG_FLYING); - DoCast(m_creature, SPELL_NOXIOUSFUMES); - if (m_pInstance) - m_pInstance->SetData(TYPE_FELMYST, IN_PROGRESS); - } - - void AttackStart(Unit* pWho) - { - if(m_pInstance->GetData(TYPE_BRUTALLUS) != DONE) - return; - - if(!pWho) - return; - - if (m_creature->Attack(pWho, true)) - { - m_creature->AddThreat(pWho); - m_creature->SetInCombatWith(pWho); - pWho->SetInCombatWith(m_creature); - DoStartMovement(pWho); - } - } - - void KilledUnit(Unit* victim) - { - switch(rand()%2) - { - case 0: DoScriptText(YELL_SLAY1, m_creature); break; - case 1: DoScriptText(YELL_SLAY2, m_creature); break; - } - } - - void JustDied(Unit* Killer) - { - DoScriptText(YELL_DEATH, m_creature); - - if(Creature* pKalecgos = m_creature->SummonCreature(NPC_KALECGOS, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ() + 30, m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 20000)) - DoScriptText(YELL_KALECGOS, pKalecgos); - - if(m_pInstance) - m_pInstance->SetData(TYPE_FELMYST, DONE); - } - - void MovementInform(uint32 uiType, uint32 uiPointId) - { - if(uiType != POINT_MOTION_TYPE) - return; - - if(uiPointId == 1 && m_uiPhase == PHASE_IDLE) - m_uiMovemetnTimer = 300; - - if(uiPointId == 1 && m_uiPhase == PHASE_AIR) - { - m_bIsBreath = false; - m_uiFogOfCorruptionTimer = 5000; - } - } - - void UpdateAI(const uint32 uiDiff) - { - if(m_uiPhase == PHASE_IDLE) - { - // make boss visible after brutallus is defeated - if(m_pInstance && m_pInstance->GetData(TYPE_BRUTALLUS) == DONE && m_pInstance->GetData(TYPE_FELMYST) == NOT_STARTED) - { - if(m_uiEncounterCheckTimer < uiDiff && !m_bHasChecked) - { - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - DoScriptText(YELL_REBIRTH, m_creature); - DoCast(m_creature, SPELL_TRANSFORM_FELMYST); - m_bHasChecked = true; - // start flying - m_creature->SetSplineFlags(SPLINEFLAG_FLYING); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 50331648); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 50331648); - m_uiLastPointId = urand(0, 4); - m_creature->GetMotionMaster()->MovePoint(1, MoveLoc[m_uiLastPointId].x, MoveLoc[m_uiLastPointId].y, MoveLoc[m_uiLastPointId].z); - m_uiMovemetnTimer = 60000; - } - else m_uiEncounterCheckTimer -= uiDiff; - } - if(m_uiMovemetnTimer < uiDiff && m_bHasChecked) - { - m_creature->SetSplineFlags(SPLINEFLAG_FLYING); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 50331648); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 50331648); - // movement - if(m_uiLastPointId < 2) - m_uiLastPointId = urand(2, 4); - else if(m_uiLastPointId > 2) - m_uiLastPointId = urand(0, 2); - else while(m_uiLastPointId == 2) - m_uiLastPointId = urand(0, 4); - m_creature->GetMotionMaster()->MovePoint(1, MoveLoc[m_uiLastPointId].x, MoveLoc[m_uiLastPointId].y, MoveLoc[m_uiLastPointId].z); - m_uiMovemetnTimer = 60000; - } - else m_uiMovemetnTimer -= uiDiff; - } - - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - if(m_uiEnrageTimer < uiDiff) - { - DoScriptText(YELL_BERSERK, m_creature); - DoCast(m_creature, SPELL_ENRAGE); - m_uiEnrageTimer = 30000; - } - else m_uiEnrageTimer -= uiDiff; - - // Ground - if(m_uiPhase == PHASE_GROUND) - { - if(m_uiCleaveTimer < uiDiff) - { - DoCast(m_creature->getVictim(), SPELL_CLEAVE); - m_uiCleaveTimer = urand(4000, 6000); - } - else m_uiCleaveTimer -= uiDiff; - - if(m_uiCorrosionTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_TOPAGGRO, 0)) - DoCast(pTarget, SPELL_CORROSION); - m_uiCorrosionTimer = urand(15000, 20000); - } - else m_uiCorrosionTimer -= uiDiff; - - if(m_uiGasNovaTimer < uiDiff) - { - DoCast(m_creature, SPELL_GASNOVA); - m_uiGasNovaTimer = urand(3000, 35000); - } - else m_uiGasNovaTimer -= uiDiff; - - if(m_uiEncapsulateTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1)) - { - pTarget->CastSpell(pTarget, SPELL_ENCAPSULATE, false); - DoCast(pTarget, SPELL_ENCAPSULATE_CHANNEL); - } - m_uiEncapsulateTimer = urand(30000,40000); - } - else m_uiEncapsulateTimer -= uiDiff; - - if(m_uiFlyPhaseTimer < uiDiff) - { - m_creature->GetMotionMaster()->Clear(); - SetCombatMovement(false); - m_creature->SetSplineFlags(SPLINEFLAG_FLYING); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 50331648); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 50331648); - m_uiLastPointId = urand(0, 4); - m_creature->GetMotionMaster()->MovePoint(0, MoveLoc[m_uiLastPointId].x, MoveLoc[m_uiLastPointId].y, MoveLoc[m_uiLastPointId].z); - DoScriptText(YELL_TAKEOFF, m_creature); - m_uiPhase = PHASE_AIR; - m_uiDemonicVaporTimer = 10000; - m_uiFogOfCorruptionTimer = 35000; - m_uiBreathCount = 0; - m_uiVaporCount = 0; - } - else m_uiFlyPhaseTimer -= uiDiff; - - DoMeleeAttackIfReady(); - } - // Air phase - else if(m_uiPhase == PHASE_AIR) - { - if(m_uiFogOfCorruptionTimer < uiDiff) - { - ++m_uiBreathCount; - if(m_uiBreathCount == 4) - { - SetCombatMovement(true); - m_creature->GetMotionMaster()->Clear(); - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); - m_creature->RemoveSplineFlag(SPLINEFLAG_FLYING); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_0, 0); - m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - m_uiPhase = PHASE_GROUND; - m_uiFlyPhaseTimer = 60000; - return; - } - else - { - DoScriptText(YELL_BREATH, m_creature); - m_uiFogSummonTimer = 1000; - m_uiFogOfCorruptionTimer = 60000; - m_bIsBreath = true; - // movement - if(m_uiLastPointId < 2) - m_uiLastPointId = urand(2, 4); - else if(m_uiLastPointId > 2) - m_uiLastPointId = urand(0, 2); - else while(m_uiLastPointId == 2) - m_uiLastPointId = urand(0, 4); - m_creature->GetMotionMaster()->MovePoint(1, MoveLoc[m_uiLastPointId].x, MoveLoc[m_uiLastPointId].y, MoveLoc[m_uiLastPointId].z); - } - } - else m_uiFogOfCorruptionTimer -= uiDiff; - - if(m_uiFogSummonTimer < uiDiff && m_bIsBreath) - { - m_creature->SummonCreature(NPC_DEATH_CLOUD, m_creature->GetPositionX(), m_creature->GetPositionY(), 25.5f, 0, TEMPSUMMON_TIMED_DESPAWN, 10000); - m_uiFogSummonTimer = 2000; - } - else m_uiFogSummonTimer -= uiDiff; - - if(m_uiDemonicVaporTimer < uiDiff && m_uiVaporCount < 3) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - m_uiVaporTargetGUID = pTarget->GetGUID(); - m_creature->SummonCreature(NPC_VAPOR, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 20000); - } - m_uiVaporSummonTimer = 2000; - m_uiDemonicVaporTimer = 7000; - ++m_uiVaporCount; - } - else m_uiDemonicVaporTimer -= uiDiff; - - if(m_uiVaporSummonTimer < uiDiff && m_uiVaporCount < 3) - { - if(Unit* pTarget = m_creature->GetMap()->GetUnit(m_uiVaporTargetGUID)) - m_creature->SummonCreature(NPC_VAPOR, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 20000); - m_uiVaporSummonTimer = 2000; - } - else m_uiVaporSummonTimer -= uiDiff; - } - } -}; - -/*###### -## mob_fog_of_corruption -######*/ -struct MANGOS_DLL_DECL mob_fog_of_corruptionAI : public Scripted_NoMovementAI -{ - mob_fog_of_corruptionAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pCreature->SetDisplayId(11686); // make invisible - SetCombatMovement(false); - pCreature->setFaction(14); - Reset(); - } - - ScriptedInstance* m_pInstance; - - void Reset() - { - DoCast(m_creature, SPELL_FOG_OF_CORRUPTION); - } - - void AttackStart(Unit* pWho) - { - return; - } - - void MoveInLineOfSight(Unit* pWho) - { - if(pWho->GetTypeId() == TYPEID_PLAYER && !pWho->HasAura(SPELL_FOG_CHARM, EFFECT_INDEX_0) && pWho->IsWithinDist2d(m_creature->GetPositionX(), m_creature->GetPositionY(), 20.0f)) - { - pWho->CastSpell(pWho, SPELL_FOG_CHARM, false); - pWho->CastSpell(pWho, SPELL_SOUL_SEVER, false); - } - } - - void UpdateAI(const uint32 diff) - { - } -}; - -/*###### -## mob_felmyst_vapor -######*/ -struct MANGOS_DLL_DECL mob_felmyst_vaporAI : public Scripted_NoMovementAI -{ - mob_felmyst_vaporAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pCreature->SetDisplayId(11686); // make invisible - SetCombatMovement(false); - pCreature->setFaction(14); - Reset(); - } - - ScriptedInstance* m_pInstance; - uint32 m_uiCheckTimer; - uint32 m_uiSummonDelayTimer; - bool m_bCanSummon; - - void Reset() - { - DoCast(m_creature, SPELL_DEMONIC_VAPOR_TRIGG); - m_uiCheckTimer = 5000; - m_uiSummonDelayTimer = 5000; - m_bCanSummon = false; - } - - void MoveInLineOfSight(Unit* pWho) - { - if(pWho->GetTypeId() == TYPEID_PLAYER && pWho->IsWithinDist2d(m_creature->GetPositionX(), m_creature->GetPositionY(), 2.0f) && m_bCanSummon) - { - m_creature->SummonCreature(NPC_UNYELDING_DEAD, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - m_uiSummonDelayTimer = 1000; - m_bCanSummon = false; - } - } - - void AttackStart(Unit* pWho) - { - return; - } - - void JustSummoned(Creature* pSummon) - { - pSummon->SetInCombatWithZone(); - } - - void UpdateAI(const uint32 uiDiff) - { - if(m_uiCheckTimer < uiDiff) - { - for(uint8 i = 0; i < 3; i++) - m_creature->SummonCreature(NPC_UNYELDING_DEAD, m_creature->GetPositionX() + urand(0, 5), m_creature->GetPositionY() + urand(0, 5), 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - m_bCanSummon = true; - m_uiCheckTimer = 60000; - } - else m_uiCheckTimer -= uiDiff; - - if(m_uiSummonDelayTimer < uiDiff && !m_bCanSummon) - m_bCanSummon = true; - else m_uiSummonDelayTimer -= uiDiff; - } -}; - -CreatureAI* GetAI_mob_fog_of_corruption(Creature* pCreature) -{ - return new mob_fog_of_corruptionAI(pCreature); -} - -CreatureAI* GetAI_mob_felmyst_vapor(Creature* pCreature) -{ - return new mob_felmyst_vaporAI(pCreature); -} - -CreatureAI* GetAI_boss_felmyst(Creature *pCreature) -{ - return new boss_felmystAI(pCreature); -} - void AddSC_boss_felmyst() { - Script *newscript; - - newscript = new Script; - newscript->Name = "boss_felmyst"; - newscript->GetAI = &GetAI_boss_felmyst; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_felmyst_vapor"; - newscript->GetAI = &GetAI_mob_felmyst_vapor; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name = "mob_fog_of_corruption"; - newscript->GetAI = &GetAI_mob_fog_of_corruption; - newscript->RegisterSelf(); } diff --git a/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp b/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp index 384b121..6e1d0ff 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2011 ScriptDev2 +/* Copyright (C) 2006 - 2011 ScriptDev2 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -126,7 +126,7 @@ struct MANGOS_DLL_DECL boss_kalecgosAI : public ScriptedAI if (m_pInstance) { // Reset Sathrovarr too - if (Creature* pSath = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_SATHROVARR))) + if (Creature* pSath = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_SATHROVARR))) { if (pSath->isAlive() && pSath->getVictim()) pSath->AI()->EnterEvadeMode(); @@ -209,7 +209,7 @@ struct MANGOS_DLL_DECL boss_kalecgosAI : public ScriptedAI if (!m_pInstance) return; - if (Creature* pSathrovarr = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_SATHROVARR))) + if (Creature* pSathrovarr = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_SATHROVARR))) { if (pSathrovarr->isAlive()) { @@ -218,7 +218,7 @@ struct MANGOS_DLL_DECL boss_kalecgosAI : public ScriptedAI } } - if (Creature* pKalec = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_KALECGOS_HUMAN))) + if (Creature* pKalec = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_KALECGOS_HUMAN))) { pKalec->DeleteThreatList(); pKalec->SetVisibility(VISIBILITY_OFF); @@ -252,7 +252,7 @@ struct MANGOS_DLL_DECL boss_kalecgosAI : public ScriptedAI if (!m_bEnraged && m_creature->GetHealthPercent() < 10.0f) { - if (Creature* pSathrovarr = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_SATHROVARR))) + if (Creature* pSathrovarr = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_SATHROVARR))) { if (pSathrovarr->isAlive()) pSathrovarr->CastSpell(pSathrovarr, SPELL_CRAZED_RAGE, true); @@ -378,7 +378,7 @@ struct MANGOS_DLL_DECL boss_sathrovarrAI : public ScriptedAI if (!m_pInstance) return; - if (Creature* pKalec = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KALECGOS_HUMAN))) + if (Creature* pKalec = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_KALECGOS_HUMAN))) { m_creature->AddThreat(pKalec, 10000000.0f); pKalec->AddThreat(m_creature, 10000000.0f); @@ -400,7 +400,7 @@ struct MANGOS_DLL_DECL boss_sathrovarrAI : public ScriptedAI m_pInstance->SetData(DATA_SET_SPECTRAL_CHECK, 5000); - if (Creature* pKalecgos = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_KALECGOS_DRAGON))) + if (Creature* pKalecgos = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_KALECGOS_DRAGON))) { if (boss_kalecgosAI* pKalecgosAI = dynamic_cast(pKalecgos->AI())) { @@ -423,7 +423,7 @@ struct MANGOS_DLL_DECL boss_sathrovarrAI : public ScriptedAI if (!m_bEnraged && m_creature->GetHealthPercent() < 10.0f) { - if (Creature* pKalecgos = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KALECGOS_DRAGON))) + if (Creature* pKalecgos = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_KALECGOS_DRAGON))) { if (pKalecgos->isAlive()) pKalecgos->CastSpell(pKalecgos, SPELL_CRAZED_RAGE, true); diff --git a/scripts/eastern_kingdoms/sunwell_plateau/boss_kiljaeden.cpp b/scripts/eastern_kingdoms/sunwell_plateau/boss_kiljaeden.cpp index cfafece..e14d4f1 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/boss_kiljaeden.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/boss_kiljaeden.cpp @@ -1,1527 +1,28 @@ -/* Copyright 2006,2007 ScriptDev2 -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - +/* Copyright (C) 2006 - 2011 ScriptDev2 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + /* ScriptData -SDName: boss_kiljaden -SD%Complete: 90% -SDComment: +SDName: boss_kiljaeden +SD%Complete: +SDComment: +SDCategory: Sunwell Plateau EndScriptData */ #include "precompiled.h" -#include "sunwell_plateau.h" - -enum Speeches -{ - /*** Speech and sounds***/ - // These are used throughout Sunwell and Magisters(?). Players can hear this while running through the instances. - SAY_OFFCOMBAT1 = -1580056, - SAY_OFFCOMBAT2 = -1580057, - SAY_OFFCOMBAT3 = -1580058, - SAY_OFFCOMBAT4 = -1580059, - SAY_OFFCOMBAT5 = -1580060, - - // Encounter speech and sounds - SAY_EMERGE = -1580061, - SAY_SLAY1 = -1580062, - SAY_SLAY2 = -1580063, - SAY_REFLECTION1 = -1580064, - SAY_REFLECTION2 = -1580065, - SAY_DARKNESS1 = -1580066, - SAY_DARKNESS2 = -1580067, - SAY_DARKNESS3 = -1580068, - SAY_PHASE_FOUR = -1580070, - SAY_PHASE_THREE = -1580069, - SAY_PHASE_FIVE = -1580071, - - // Kalecgos - Anveena speech - SAY_KALECGOS_INTRO = -1580072, - // phase 3 - SAY_KALECGOS_AWAKEN = -1580073, - SAY_ANVEENA_IMPRISONED = -1580074, - // phase 4 - SAY_KALECGOS_LETGO = -1580075, - SAY_ANVEENA_LOST = -1580076, - // phase 5 - SAY_KALECGOS_FOCUS = -1580077, - SAY_ANVEENA_KALEC = -1580078, - SAY_KALECGOS_FATE = -1580079, - SAY_ANVEENA_GOODBYE = -1580080, - SAY_KALECGOS_GOODBYE = -1580081, - SAY_KALECGOS_ENCOURAGE = -1580082, - - // orbs - SAY_KALECGOS_ORB1 = -1580083, - SAY_KALECGOS_ORB2 = -1580084, - SAY_KALECGOS_ORB3 = -1580085, - SAY_KALECGOS_ORB4 = -1580086, - - /*** Outro Sounds***/ - SAY_OUTRO_01_VELEN = -1580087, - SAY_OUTRO_02_VELEN = -1580088, - SAY_OUTRO_03_VELEN = -1580089, - SAY_OUTRO_04_VELEN = -1580090, - SAY_OUTRO_05_LIADRIN = -1580091, - SAY_OUTRO_06_VELEN = -1580092, - SAY_OUTRO_07_LIADRIN = -1580093, - SAY_OUTRO_08_VELEN = -1580094, - SAY_OUTRO_09_VELEN = -1580095, - SAY_OUTRO_10_LIADRIN = -1580096, - SAY_OUTRO_11_VELEN = -1580097, - SAY_OUTRO_12_VELEN = -1580098, - - // spells - - //Kilajden Spells - // generic - SPELL_REBIRTH = 45464, // Emerge from the Sunwell Epick :D - SPELL_DESTROY_DRAKES = 46707, - - // phase 2 - SPELL_SOULFLY = 45442, - SPELL_LEGION_LIGHTING = 45664, - SPELL_FIREBLOOM = 45641, - - // phase 3 - SPELL_SINISTER_REFLECTION = 45892, - SPELL_SHADOW_SPIKE = 46680, - SPELL_SHADOW_SPIKE_MISSLE = 46589, - SPELL_FLAMEDART = 45740, - SPELL_DARKNESS_EXPLOSION = 45657, - SPELL_DARKNESS_OF_SOULS = 46605, - - // phase 4 - SPELL_ARMAGEDDON_TRIGG = 45921, - SPELL_ARMAGEDDON_VISUAL = 45909, - SPELL_ARMAGEDDON_DMG = 45915, - SPELL_ARMAGEDDON_HELLFIRE = 45911, - SPELL_ARMAGEDDON_SPARK = 45914, - - // phase 5 - // Same spells with lower timers - - //Hand of the Deceiver Spells - SPELL_FELLFIRE_PORTAL = 46875, - SPELL_SHADOWBOLT_VOLLEY = 45770, - SPELL_SHADOW_INFUSION = 45772, - SPELL_SHADOW_CHANNELING = 46757, - SPELL_SUMMON_FELFIRE_FIEND = 46464, - - // Felfire fiend - SPELL_FELFIRE_FISSION = 45779, - - // Anveena - SPELL_ANVEENA_PRISON = 46367, - SPELL_ANVEENA_DRAIN = 46410, - SPELL_SUNWELL_IGNITION = 46822, - SPELL_SACRIFICE_OF_ANVEENA = 46474, - SPELL_ENTROPIUS_BODY = 46819, - SPELL_CALL_ENTROPIUS = 46818, - - //Orb Spells - SPELL_SHADOW_ORB_BOLT_TRIGG = 45679, - - //Reflections Spells todo: - SPELL_PRIEST = 47077, - SPELL_PALADIN = 37369, - SPELL_PALADIN2 = 37369, - SPELL_WARLOCK = 46190, - SPELL_WARLOCK2 = 47076, - SPELL_MAGE = 47074, - SPELL_ROGUE = 45897, - SPELL_WARRIOR = 17207, - SPELL_DRUID = 47072, - SPELL_SHAMAN = 47071, - SPELL_HUNTER = 48098, - - // npcs - // mics - NPC_ANVEENA = 26046, // Embodiment of the Sunwell - NPC_KALECGOS = 25319, // Helps the raid throughout the fight - NPC_BLUE_DRAGON = 25653, // controlled by players - NPC_VELEN = 26246, // outro - NPC_LIADRIN = 26247, // outro - NPC_VELEN_PORTAL = 24925, - NPC_CORE_ENTROPIUS = 26262, // Used in the ending cinematic? - - // encounter - NPC_DECIVER = 25588, - NPC_FELFIRE_PORTAL = 25603, - NPC_SHIELD_ORB = 25502, - NPC_SINISTER = 25708, // Sinister Reflection - NPC_ARMAGEDON = 25735, - NPC_FELFIRE_FIEND = 25598, - NPC_SHADOWSPIKE = 30598, - - // objects - NPC_BLUE_ORB_TARGET = 25640, - ORB_BLUE_DRAGONFLIGHT = 188415, - SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT = 45839, // Possess the blue dragon from the orb to help the raid. - - // phases - PHASE_IDLE = 0, - PHASE_ONE = 1, - PHASE_TWO = 2, - PHASE_THREE = 3, - PHASE_FOUR = 4, - PHASE_FIVE = 5, - PHASE_OUTRO = 6, -}; - -/*###### -## boss_kiljaeden -######*/ -struct MANGOS_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI -{ - boss_kiljaedenAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - Reset(); - } - - ScriptedInstance* m_pInstance; - - // phase idle - uint32 m_uiOrdersTimer; - - // phase one - uint32 m_uiDecieverDead; - uint64 m_uiTargetGUID; - uint32 m_uiEmergeTimer; - bool m_bHasStarted; - - // phase two - uint32 m_uiSoulFlyTimer; - uint32 m_uiLegionLightingTimer; - uint32 m_uiFireBloomTimer; - uint32 m_uiShieldOrbTimer; - uint32 m_uiMaxShieldOrbs; - - // phase three - uint32 m_uiShadowSpikeTimer; - uint32 m_uiFlameDartTimer; - uint32 m_uiDarknessOfSoulsTimer; - uint32 m_uiDarknessExplosionTimer; - bool m_bIsDarknessOfSoulsCasting; - bool m_bShadowSpikeReady; - - // phase four - uint32 m_uiAramageddonTimer; - uint32 m_uiMaxArmageddon; - - void Reset() - { - // phase idle - m_uiOrdersTimer = 10000; - - // phase one - m_uiDecieverDead = 0; - m_bHasStarted = false; - m_uiTargetGUID = 0; - m_uiEmergeTimer = 1000; - - // phase two - m_uiSoulFlyTimer = 5000; - m_uiLegionLightingTimer = 10000; - m_uiFireBloomTimer = 20000; - m_uiShieldOrbTimer = 25000; - m_uiMaxShieldOrbs = 1; - - // phase three - m_bIsDarknessOfSoulsCasting = false; - m_uiDarknessExplosionTimer = 120000; - m_uiShadowSpikeTimer = 2000; - m_uiFlameDartTimer = 20000; - m_uiDarknessOfSoulsTimer = 45000; - m_bShadowSpikeReady = true; - - // phase four - m_uiAramageddonTimer = 23000; - - m_creature->SetVisibility(VISIBILITY_OFF); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - if(m_pInstance) - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_IDLE); - } - - void Aggro(Unit *who) - { - m_creature->SetInCombatWithZone(); - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_TWO); - } - - void JustSummoned(Creature* pSummon) - { - if(pSummon->GetEntry() != NPC_ARMAGEDON) - pSummon->SetInCombatWithZone(); - } - - void AttackStart(Unit* pWho) - { - if(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_IDLE || m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_ONE) - return; - - if(!pWho) - return; - - if (m_creature->Attack(pWho, true)) - { - m_creature->AddThreat(pWho); - m_creature->SetInCombatWith(pWho); - pWho->SetInCombatWith(m_creature); - DoCast(m_creature, SPELL_REBIRTH); - DoScriptText(SAY_EMERGE, m_creature); - } - } - - void JustReachedHome() - { - if(m_pInstance) - m_pInstance->SetData(TYPE_KILJAEDEN, NOT_STARTED); - - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - { - if(!pAnveena->isAlive()) - pAnveena->Respawn(); - } - - if(Creature* pController = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN_CONTROLLER))) - { - if(pController->isAlive()) - pController->AI()->EnterEvadeMode(); - } - - std::list lDecievers; - GetCreatureListWithEntryInGrid(lDecievers, m_creature, NPC_DECIVER, 40.0f); - if (!lDecievers.empty()) - { - for(std::list::iterator iter = lDecievers.begin(); iter != lDecievers.end(); ++iter) - { - if ((*iter) && !(*iter)->isAlive()) - (*iter)->Respawn(); - } - } - } - - void KilledUnit(Unit* pVictim) - { - switch (rand()%2) - { - case 0: DoScriptText(SAY_SLAY1, m_creature); break; - case 1: DoScriptText(SAY_SLAY2, m_creature); break; - } - } - - void DoSinisterReflection(uint64 uiVictimGUID) - { - Unit* pVictim = m_creature->GetMap()->GetUnit(uiVictimGUID); - if(!pVictim) - return; - - uint32 spell; - switch(pVictim->getClass()) - { - // ToDo: - case CLASS_PRIEST: spell = SPELL_PRIEST; break; - case CLASS_PALADIN: spell = SPELL_PALADIN; break; - case CLASS_WARLOCK: spell = SPELL_WARLOCK; break; - case CLASS_MAGE: spell = SPELL_MAGE; break; - case CLASS_ROGUE: spell = SPELL_ROGUE; break; - case CLASS_WARRIOR: spell = SPELL_WARRIOR; break; - case CLASS_DRUID: spell = SPELL_DRUID; break; - case CLASS_SHAMAN: spell = SPELL_SHAMAN; break; - case CLASS_HUNTER: spell = SPELL_HUNTER; break; - } - - for(uint8 i = 0; i < 4; ++i) - { - if(Creature* pSinister = m_creature->SummonCreature(NPC_SINISTER, pVictim->GetPositionX()+rand()%3, pVictim->GetPositionY()+rand()%3, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000)) - { - pSinister->setFaction(14); - pSinister->SetDisplayId(pVictim->GetDisplayId()); - pSinister->AI()->AttackStart(pSinister->getVictim()); - } - } - } - - void JustDied(Unit* pKiller) - { - if(m_pInstance) - { - m_pInstance->SetData(TYPE_KILJAEDEN, DONE); - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_OUTRO); - } - } - - void UpdateAI(const uint32 uiDiff) - { - if((!m_creature->SelectHostileTarget() || !m_creature->getVictim()) && - m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) != PHASE_IDLE && m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) != PHASE_ONE) - return; - - switch(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE)) - { - - case PHASE_FIVE: - // nothing here, but the timers are reduced - // no break; - case PHASE_FOUR: - - if(m_uiAramageddonTimer < uiDiff && !m_bIsDarknessOfSoulsCasting) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - m_creature->SummonCreature(NPC_ARMAGEDON, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 10000); - if(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_FIVE) - m_uiAramageddonTimer = 1000; - else - m_uiAramageddonTimer = 3000; - } - else m_uiAramageddonTimer -= uiDiff; - - if(m_creature->GetHealthPercent() < 25.0f && m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_FOUR) - { - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_FIVE); - m_uiShadowSpikeTimer = 2000; - m_uiDarknessOfSoulsTimer = 80000; - m_bShadowSpikeReady = true; - // sinister reflection - switch (rand()%2) - { - case 0: DoScriptText(SAY_REFLECTION1, m_creature); break; - case 1: DoScriptText(SAY_REFLECTION2, m_creature); break; - } - for(uint8 i = 0; i < 3; ++i) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - DoCast(pTarget, SPELL_SINISTER_REFLECTION); - DoSinisterReflection(pTarget->GetGUID()); - } - } - } - - // no break; - case PHASE_THREE: - - if(m_uiDarknessExplosionTimer < uiDiff && m_bIsDarknessOfSoulsCasting) - { - switch (rand()%3) - { - case 0: DoScriptText(SAY_DARKNESS1, m_creature); break; - case 1: DoScriptText(SAY_DARKNESS2, m_creature); break; - case 2: DoScriptText(SAY_DARKNESS3, m_creature); break; - } - m_creature->CastStop(); - DoCast(m_creature, SPELL_DARKNESS_EXPLOSION); - m_bIsDarknessOfSoulsCasting = false; - m_uiDarknessExplosionTimer = 60000; - if(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_FIVE) - m_uiDarknessOfSoulsTimer = 25000; - else - m_uiDarknessOfSoulsTimer = 45000; - m_uiFireBloomTimer = 10000; - m_uiAramageddonTimer = 2000; - } - else m_uiDarknessExplosionTimer -= uiDiff; - - if(m_bIsDarknessOfSoulsCasting) - return; - - if(m_uiDarknessOfSoulsTimer < uiDiff) - { - m_creature->CastStop(); - DoCast(m_creature, SPELL_DARKNESS_OF_SOULS); - m_bIsDarknessOfSoulsCasting = true; - m_uiDarknessExplosionTimer = 9000; - } - else m_uiDarknessOfSoulsTimer -= uiDiff; - - if(m_uiShadowSpikeTimer < uiDiff && m_bShadowSpikeReady) - { - m_creature->CastStop(); - DoCast(m_creature, SPELL_SHADOW_SPIKE); - m_bShadowSpikeReady = false; - } - else m_uiShadowSpikeTimer -= uiDiff; - - if(m_uiFlameDartTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoCast(m_creature, SPELL_FLAMEDART); - m_uiFlameDartTimer = 17000; - } - else m_uiFlameDartTimer -= uiDiff; - - if(m_creature->GetHealthPercent() < 55.0f && m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_THREE) - { - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_FOUR); - m_uiMaxShieldOrbs += 1; - m_uiShadowSpikeTimer = 2000; - m_uiDarknessOfSoulsTimer = 45000; - m_bShadowSpikeReady = true; - // sinister reflection - switch (rand()%2) - { - case 0: DoScriptText(SAY_REFLECTION1, m_creature); break; - case 1: DoScriptText(SAY_REFLECTION2, m_creature); break; - } - for(uint8 i = 0; i < 2; ++i) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - DoCast(pTarget, SPELL_SINISTER_REFLECTION); - DoSinisterReflection(pTarget->GetGUID()); - } - } - } - - // no break; - case PHASE_TWO: - - if(m_uiLegionLightingTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - DoCast(pTarget, SPELL_LEGION_LIGHTING); - m_uiLegionLightingTimer = urand(6000, 8000); - } - else m_uiLegionLightingTimer -= uiDiff; - - if(m_uiFireBloomTimer < uiDiff) - { - DoCast(m_creature, SPELL_FIREBLOOM); - if(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_FIVE) - m_uiFireBloomTimer = 15000; - else - m_uiFireBloomTimer = 25000; - } - else m_uiFireBloomTimer -= uiDiff; - - if(m_uiSoulFlyTimer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_TOPAGGRO, 0)) - DoCast(pTarget, SPELL_SOULFLY); - m_uiSoulFlyTimer = urand(5000, 7000); - } - else m_uiSoulFlyTimer -= uiDiff; - - if(m_uiShieldOrbTimer < uiDiff) - { - for(uint8 i = 0; i < m_uiMaxShieldOrbs; ++i) - { - float angle = (float) rand()*360/RAND_MAX + 1; - float homeX = m_creature->GetPositionX() + 20*cos(angle*(M_PI/180)); - float homeY = m_creature->GetPositionY() + 20*sin(angle*(M_PI/180)); - m_creature->SummonCreature(NPC_SHIELD_ORB, homeX, homeY, m_creature->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - } - if(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_FIVE) - m_uiShieldOrbTimer = 30000; - else - m_uiShieldOrbTimer = 50000; - } - else m_uiShieldOrbTimer -= uiDiff; - - if(m_creature->GetHealthPercent() < 85.0f && m_pInstance->GetData(TYPE_KILJAEDEN_PHASE) == PHASE_TWO) - { - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_THREE); - m_uiMaxShieldOrbs += 1; - // sinister reflection - switch (rand()%2) - { - case 0: DoScriptText(SAY_REFLECTION1, m_creature); break; - case 1: DoScriptText(SAY_REFLECTION2, m_creature); break; - } - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - DoCast(pTarget, SPELL_SINISTER_REFLECTION); - DoSinisterReflection(pTarget->GetGUID()); - } - } - - DoMeleeAttackIfReady(); - - break; - case PHASE_ONE: - - if(m_uiDecieverDead == 3 && !m_bHasStarted) - { - m_creature->SetVisibility(VISIBILITY_ON); - m_uiEmergeTimer = 500; - m_bHasStarted = true; - } - - if(m_uiEmergeTimer < uiDiff && m_bHasStarted) - { - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetInCombatWithZone(); - if(Unit* pTarget = m_creature->GetMap()->GetUnit(m_uiTargetGUID)) - { - m_creature->AddThreat(pTarget, 1000.0f); - m_creature->SetInCombatWith(pTarget); - m_creature->AI()->AttackStart(pTarget); - } - } - else m_uiEmergeTimer -= uiDiff; - - // no break - case PHASE_IDLE: - - if(m_uiOrdersTimer < uiDiff) - { - switch (rand()%5) - { - case 0: DoScriptText(SAY_OFFCOMBAT1, m_creature); break; - case 1: DoScriptText(SAY_OFFCOMBAT2, m_creature); break; - case 2: DoScriptText(SAY_OFFCOMBAT3, m_creature); break; - case 3: DoScriptText(SAY_OFFCOMBAT4, m_creature); break; - case 4: DoScriptText(SAY_OFFCOMBAT5, m_creature); break; - } - m_uiOrdersTimer = 30000; - } - else m_uiOrdersTimer -= uiDiff; - - break; - } - } -}; - -/*###### -## mob_deciever -######*/ -struct MANGOS_DLL_DECL mob_deceiverAI : public ScriptedAI -{ - mob_deceiverAI(Creature* pCreature) : ScriptedAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - Reset(); - } - - ScriptedInstance* m_pInstance; - - bool m_bHasInfusion; - uint32 m_uiShadowBoltTimer; - uint32 m_uiPortalTimer; - bool m_bHasPortal; - uint64 m_uiPortalGUID; - - void Reset() - { - DoCast(m_creature, SPELL_SHADOW_CHANNELING); - m_bHasInfusion = false; - m_uiPortalTimer = urand(20000, 30000); - m_uiShadowBoltTimer = 10000; - m_bHasPortal = false; - m_uiPortalGUID = 0; - } - - void Aggro(Unit* pWho) - { - if (m_pInstance) - { - m_pInstance->SetData(TYPE_KILJAEDEN, IN_PROGRESS); - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_ONE); - } - - m_creature->CastStop(); - - std::list lDecievers; - GetCreatureListWithEntryInGrid(lDecievers, m_creature, NPC_DECIVER, 40.0f); - if (!lDecievers.empty()) - { - for(std::list::iterator iter = lDecievers.begin(); iter != lDecievers.end(); ++iter) - { - if ((*iter) && (*iter)->isAlive()) - (*iter)->AI()->AttackStart(pWho); - } - } - } - - void JustDied(Unit* pKiller) - { - if (Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - { - if(pKiljaeden->isAlive()) - { - ((boss_kiljaedenAI*)pKiljaeden->AI())->m_uiDecieverDead += 1; - ((boss_kiljaedenAI*)pKiljaeden->AI())->m_uiTargetGUID = pKiller->GetGUID(); - } - } - if(Creature* pPortal = m_creature->GetMap()->GetCreature(m_uiPortalGUID)) - pPortal->ForcedDespawn(); - } - - void JustReachedHome() - { - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_KILJAEDEN) != NOT_STARTED) - { - m_pInstance->SetData(TYPE_KILJAEDEN, NOT_STARTED); - m_pInstance->SetData(TYPE_KILJAEDEN_PHASE, PHASE_IDLE); - } - } - - std::list lDecievers; - GetCreatureListWithEntryInGrid(lDecievers, m_creature, NPC_DECIVER, 40.0f); - if (!lDecievers.empty()) - { - for(std::list::iterator iter = lDecievers.begin(); iter != lDecievers.end(); ++iter) - { - if ((*iter) && !(*iter)->isAlive()) - (*iter)->Respawn(); - } - } - } - - void JustSummoned(Creature* pSummon) - { - if(pSummon->GetEntry() == NPC_FELFIRE_PORTAL) - m_uiPortalGUID = pSummon->GetGUID(); - } - - void UpdateAI(const uint32 uiDiff) - { - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - if(m_creature->GetHealthPercent() < 20.0f && !m_bHasInfusion) - { - m_creature->InterruptNonMeleeSpells(true); - DoCast(m_creature, SPELL_SHADOW_INFUSION); - m_bHasInfusion = true; - } - - if(m_uiShadowBoltTimer < uiDiff) - { - m_creature->InterruptNonMeleeSpells(true); - DoCast(m_creature, SPELL_SHADOWBOLT_VOLLEY); - m_uiShadowBoltTimer = urand(6000, 10000); - } - else m_uiShadowBoltTimer -= uiDiff; - - if(m_uiPortalTimer < uiDiff && !m_bHasPortal) - { - //DoCast(m_creature, SPELL_FELLFIRE_PORTAL); - m_creature->SummonCreature(NPC_FELFIRE_PORTAL, 0, 0, 0, 0, TEMPSUMMON_MANUAL_DESPAWN, 0); - m_uiPortalTimer = 30000; - m_bHasPortal = true; - } - else m_uiPortalTimer -= uiDiff; - - DoMeleeAttackIfReady(); - } -}; - -/*###### -## mob_shield_orb -######*/ -struct MANGOS_DLL_DECL mob_shield_orbAI : public ScriptedAI -{ - mob_shield_orbAI(Creature* pCreature) : ScriptedAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - SetCombatMovement(false); - Reset(); - } - - ScriptedInstance* m_pInstance; - - uint32 m_uiMovementTimer; - uint32 m_uiMovingSteps; - - void Reset() - { - DoCast(m_creature, SPELL_SHADOW_ORB_BOLT_TRIGG); - m_creature->SetRespawnDelay(DAY); - m_uiMovementTimer = 1000 + rand()%2000; - m_uiMovingSteps = 0; - } - - void UpdateAI(const uint32 uiDiff) - { - if(m_uiMovementTimer < uiDiff) - { - if (m_pInstance) - { - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - { - float angle = (M_PI / 10) * m_uiMovingSteps; - float X = pKiljaeden->GetPositionX() + 22 * cos(angle); - float Y = pKiljaeden->GetPositionY() + 22 * sin(angle); - - m_creature->GetMotionMaster()->MovePoint(0, X, Y, 39.0f); - m_uiMovingSteps++; - if (m_uiMovingSteps > 19) - m_uiMovingSteps = 0; - } - } - m_uiMovementTimer = 500; - } - else m_uiMovementTimer -= uiDiff; - } -}; - -/*###### -## mob_felfire_portal -######*/ -struct MANGOS_DLL_DECL mob_felfire_portalAI : public Scripted_NoMovementAI -{ - mob_felfire_portalAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - pCreature->setFaction(14); - Reset(); - } - - ScriptedInstance* m_pInstance; - - void Reset() - { - DoCast(m_creature, SPELL_SUMMON_FELFIRE_FIEND); - m_creature->SetRespawnDelay(DAY); - } - - void JustSummoned(Creature* pSummon) - { - pSummon->SetInCombatWithZone(); - } - - void UpdateAI(const uint32 uiDiff) - { - if(m_pInstance->GetData(TYPE_KILJAEDEN) != IN_PROGRESS) - m_creature->ForcedDespawn(); - } -}; - -/*###### -## mob_armageddon_target -######*/ -struct MANGOS_DLL_DECL mob_armagedon_targetAI : public Scripted_NoMovementAI -{ - mob_armagedon_targetAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pCreature->SetDisplayId(11686); // make invisible - SetCombatMovement(false); - pCreature->setFaction(14); - Reset(); - } - - uint32 m_uiVisualTimer; - uint32 m_uiDamageTimer; - uint32 m_uiHellfireTimer; - - void Reset() - { - m_uiVisualTimer = 8000; - m_uiDamageTimer = 9000; - m_uiHellfireTimer = 1000; - DoCast(m_creature, SPELL_ARMAGEDDON_SPARK); - } - - void AttackStart(Unit* pWho) - { - return; - } - - void UpdateAI(const uint32 uiDiff) - { - if(m_uiHellfireTimer < uiDiff) - { - DoCast(m_creature, SPELL_ARMAGEDDON_HELLFIRE); - m_uiHellfireTimer = 60000; - } - else m_uiHellfireTimer -= uiDiff; - - if(m_uiVisualTimer < uiDiff) - { - DoCast(m_creature, SPELL_ARMAGEDDON_VISUAL); - m_uiVisualTimer = 10000; - } - else m_uiVisualTimer -= uiDiff; - - if(m_uiDamageTimer < uiDiff) - { - DoCast(m_creature, SPELL_ARMAGEDDON_DMG); - m_uiDamageTimer = 10000; - } - else m_uiDamageTimer -= uiDiff; - } -}; - -/*###### -## mob_felfire_fiend -######*/ -struct MANGOS_DLL_DECL mob_felfire_fiendAI : public ScriptedAI +void AddSC_boss_kiljaeden() { - mob_felfire_fiendAI(Creature* pCreature) : ScriptedAI(pCreature) - { - Reset(); - } - - bool m_bMustDie; - uint32 m_uiDieTimer; - - void Reset() - { - m_bMustDie = false; - } - - void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) - { - if(uiDamage > m_creature->GetHealth()) - { - uiDamage = 0; - if(!m_bMustDie) - { - DoCast(m_creature, SPELL_FELFIRE_FISSION); - m_uiDieTimer = 500; - m_bMustDie = true; - } - } - } - - void UpdateAI(const uint32 uiDiff) - { - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - if(m_uiDieTimer < uiDiff && m_bMustDie) - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - else m_uiDieTimer -= uiDiff; - - if (m_creature->IsWithinDistInMap(m_creature->getVictim(), ATTACK_DISTANCE) && !m_bMustDie) - { - DoCast(m_creature, SPELL_FELFIRE_FISSION); - m_uiDieTimer = 500; - m_bMustDie = true; - } - - DoMeleeAttackIfReady(); - } -}; - -/*###### -## mob_kiljaeden_controller -######*/ -struct MANGOS_DLL_DECL mob_kiljaeden_controllerAI : public Scripted_NoMovementAI -{ - mob_kiljaeden_controllerAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) - { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - Reset(); - } - ScriptedInstance* m_pInstance; - - uint32 m_uiSpeechTimer; - uint32 m_uiSpeechPhase; - bool m_bIsSpeech; - bool m_bIsPhaseThree; - bool m_bIsPhaseFour; - bool m_bIsPhaseFive; - bool m_bIsOutro; - - uint32 m_uiEmpowerOrbTimer; - bool m_bHasEmpowered; - - uint64 m_uiVelenGUID; - uint64 m_uiLiadrinGUID; - uint64 m_uiKalecGUID; - uint64 m_uiMuruGUID; - - void Reset() - { - DoCast(m_creature, SPELL_ANVEENA_DRAIN); - - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - pKalec->ForcedDespawn(); - - m_uiSpeechTimer = 30000; - m_uiSpeechPhase = 0; - m_bIsSpeech = true; - m_uiEmpowerOrbTimer = 20000; - m_bHasEmpowered = true; - m_bIsPhaseThree = true; - m_bIsPhaseFour = true; - m_bIsPhaseFive = true; - m_bIsOutro = true; - - m_uiVelenGUID = 0; - m_uiLiadrinGUID = 0; - m_uiKalecGUID = 0; - m_uiMuruGUID = 0; - - if(m_pInstance) - { - if(m_pInstance->GetData(TYPE_KILJAEDEN) != DONE) - { - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - pAnveena->CastSpell(pAnveena, SPELL_ANVEENA_PRISON, false); - } - } - } - - void AttackStart(Unit* pWho) - { - return; - } - - GameObject* SelectRandomOrb() - { - std::list lOrbList; - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - GetGameObjectListWithEntryInGrid(lOrbList, pKiljaeden, ORB_BLUE_DRAGONFLIGHT, 60.0f); - - if (lOrbList.empty()){ - return NULL; - } - - std::list::iterator iter = lOrbList.begin(); - advance(iter, urand(0, lOrbList.size()-1)); - - return *iter; - } - - void EmpoweAllOrbs() - { - std::list lOrbList; - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - GetGameObjectListWithEntryInGrid(lOrbList, pKiljaeden, ORB_BLUE_DRAGONFLIGHT, 60.0f); - - if (!lOrbList.empty()) - { - for(std::list::iterator iter = lOrbList.begin(); iter != lOrbList.end(); ++iter) - { - if ((*iter)) - (*iter)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); - } - } - } - - void UpdateAI(const uint32 uiDiff) - { - switch(m_pInstance->GetData(TYPE_KILJAEDEN_PHASE)) - { - case PHASE_TWO: - - if(m_creature->HasAura(SPELL_ANVEENA_DRAIN, EFFECT_INDEX_0)) - m_creature->RemoveAurasDueToSpell(SPELL_ANVEENA_DRAIN); - - if(m_uiSpeechTimer < uiDiff && m_bIsSpeech) - { - switch(m_uiSpeechPhase) - { - case 0: - if(Creature* pKalec = m_creature->SummonCreature(NPC_KALECGOS, 1698.44f, 628.03f, 120.0f, 1.05f, TEMPSUMMON_MANUAL_DESPAWN, 0)) - { - m_uiKalecGUID = pKalec->GetGUID(); - pKalec->SetSplineFlags(SPLINEFLAG_FLYING); - pKalec->SetUInt32Value(UNIT_FIELD_BYTES_0, 50331648); - pKalec->SetUInt32Value(UNIT_FIELD_BYTES_1, 50331648); - pKalec->GetMotionMaster()->MoveConfused(); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 3000; - break; - case 1: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_INTRO, pKalec); - ++m_uiSpeechPhase; - m_bIsSpeech = false; - m_uiSpeechTimer = 1000; - break; - default: - m_uiSpeechTimer = 100000; - } - } - else m_uiSpeechTimer -= uiDiff; - - break; - case PHASE_THREE: - - if(!m_bIsSpeech && m_uiSpeechPhase > 0 && m_bIsPhaseThree) - { - m_uiSpeechPhase = 0; - m_uiSpeechTimer = 4000; - m_bIsSpeech = true; - m_bIsPhaseThree = false; - } - - if(m_uiSpeechTimer < uiDiff && m_bIsSpeech) - { - switch(m_uiSpeechPhase) - { - case 0: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_AWAKEN, pKalec); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 6000; - break; - case 1: - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - DoScriptText(SAY_ANVEENA_IMPRISONED, pAnveena); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 4000; - break; - case 2: - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - DoScriptText(SAY_PHASE_THREE, pKiljaeden); - ++m_uiSpeechPhase; - m_bIsSpeech = false; - m_uiSpeechTimer = 1000; - m_uiEmpowerOrbTimer = 20000; - m_bHasEmpowered = false; - break; - default: - m_uiSpeechTimer = 100000; - } - } - else m_uiSpeechTimer -= uiDiff; - - if(m_uiEmpowerOrbTimer < uiDiff && !m_bHasEmpowered) - { - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_ORB1, pKalec); - if(GameObject* pOrb = SelectRandomOrb()) - pOrb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); - m_bHasEmpowered = true; - } - else m_uiEmpowerOrbTimer -= uiDiff; - - break; - case PHASE_FOUR: - - if(!m_bIsSpeech && m_uiSpeechPhase > 0 && m_bIsPhaseFour) - { - m_uiSpeechPhase = 0; - m_uiSpeechTimer = 4000; - m_bIsSpeech = true; - m_bIsPhaseFour = false; - } - - if(m_uiSpeechTimer < uiDiff && m_bIsSpeech) - { - switch(m_uiSpeechPhase) - { - case 0: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_LETGO, pKalec); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 9000; - break; - case 1: - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - DoScriptText(SAY_ANVEENA_LOST, pAnveena); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 5000; - break; - case 2: - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - DoScriptText(SAY_PHASE_FOUR, pKiljaeden); - ++m_uiSpeechPhase; - m_bIsSpeech = false; - m_uiSpeechTimer = 1000; - m_uiEmpowerOrbTimer = 20000; - m_bHasEmpowered = false; - break; - default: - m_uiSpeechTimer = 100000; - } - } - else m_uiSpeechTimer -= uiDiff; - - if(m_uiEmpowerOrbTimer < uiDiff && !m_bHasEmpowered) - { - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - { - switch (rand()%2) - { - case 0: DoScriptText(SAY_KALECGOS_ORB2, pKalec); break; - case 1: DoScriptText(SAY_KALECGOS_ORB3, pKalec); break; - } - } - if(GameObject* pOrb = SelectRandomOrb()) - pOrb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); - m_bHasEmpowered = true; - } - else m_uiEmpowerOrbTimer -= uiDiff; - - break; - case PHASE_FIVE: - - if(!m_bIsSpeech && m_uiSpeechPhase > 0 && m_bIsPhaseFive) - { - m_uiSpeechPhase = 0; - m_uiSpeechTimer = 4000; - m_bIsSpeech = true; - m_bIsPhaseFive = false; - } - - if(m_uiSpeechTimer < uiDiff && m_bIsSpeech) - { - switch(m_uiSpeechPhase) - { - case 0: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_FOCUS, pKalec); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 12000; - break; - case 1: - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - DoScriptText(SAY_ANVEENA_KALEC, pAnveena); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 4000; - break; - case 2: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_FATE, pKalec); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 6000; - break; - case 3: - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - { - DoScriptText(SAY_ANVEENA_GOODBYE, pAnveena); - pAnveena->RemoveAurasDueToSpell(SPELL_ANVEENA_PRISON); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 8000; - break; - case 4: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_GOODBYE, pKalec); - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - { - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - { - pAnveena->CastSpell(pKiljaeden, SPELL_SACRIFICE_OF_ANVEENA, false); - pAnveena->GetMotionMaster()->MovePoint(0, pKiljaeden->GetPositionX(), pKiljaeden->GetPositionY(), pKiljaeden->GetPositionZ()); - } - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 13000; - break; - case 5: - if(Creature* pAnveena = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ANVEENA))) - pAnveena->ForcedDespawn(); - if(Creature* pKiljaeden = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KILJAEDEN))) - DoScriptText(SAY_PHASE_FIVE, pKiljaeden); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 6: - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_ENCOURAGE, pKalec); - ++m_uiSpeechPhase; - m_bIsSpeech = false; - m_uiSpeechTimer = 1000; - m_uiEmpowerOrbTimer = 10000; - m_bHasEmpowered = false; - break; - default: - m_uiSpeechTimer = 100000; - } - } - else m_uiSpeechTimer -= uiDiff; - - if(m_uiEmpowerOrbTimer < uiDiff && !m_bHasEmpowered) - { - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - DoScriptText(SAY_KALECGOS_ORB4, pKalec); - EmpoweAllOrbs(); - m_bHasEmpowered = true; - } - else m_uiEmpowerOrbTimer -= uiDiff; - - break; - case PHASE_OUTRO: - - if(!m_bIsSpeech && m_uiSpeechPhase > 0 && m_bIsOutro) - { - m_uiSpeechPhase = 0; - m_uiSpeechTimer = 5000; - m_bIsSpeech = true; - m_bIsOutro = false; - if(Creature* pKalec = m_creature->GetMap()->GetCreature(m_uiKalecGUID)) - pKalec->ForcedDespawn(); - } - - if(m_uiSpeechTimer < uiDiff && m_bIsSpeech) - { - switch(m_uiSpeechPhase) - { - case 0: - m_creature->SummonCreature(NPC_VELEN_PORTAL, 1726.395f, 599.631f, 28.154f, 2.39f, TEMPSUMMON_MANUAL_DESPAWN, 0); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 2000; - break; - case 1: - if(Creature* pVelen = m_creature->SummonCreature(NPC_VELEN, 1726.395f, 599.631f, 28.154f, 2.39f, TEMPSUMMON_MANUAL_DESPAWN, 0)) - { - m_uiVelenGUID = pVelen->GetGUID(); - pVelen->GetMotionMaster()->MovePoint(0, 1719.708f, 612.418f, 28.05f); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 1000; - break; - case 2: - if(Creature* pLiadrin = m_creature->SummonCreature(NPC_LIADRIN, 1726.395f, 599.631f, 28.154f, 2.39f, TEMPSUMMON_MANUAL_DESPAWN, 0)) - { - m_uiLiadrinGUID = pLiadrin->GetGUID(); - pLiadrin->GetMotionMaster()->MovePoint(0, 1713.057f, 606.208f, 28.05f); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 3: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - pVelen->GetMotionMaster()->MovePoint(0, 1714.13f, 615.782f, 28.05f); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 4: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_01_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 25000; - break; - case 5: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_02_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 15000; - break; - case 6: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_03_VELEN, pVelen); - if(Creature* pEntropius = m_creature->SummonCreature(NPC_CORE_ENTROPIUS, 1698.449f, 628.03f, 80.0f, 0, TEMPSUMMON_MANUAL_DESPAWN, 0)) - { - m_uiMuruGUID = pEntropius->GetGUID(); - pEntropius->CastSpell(pEntropius, SPELL_ENTROPIUS_BODY, false); - pEntropius->SetSplineFlags(SPLINEFLAG_FLYING); - pEntropius->SetUInt32Value(UNIT_FIELD_BYTES_0, 50331648); - pEntropius->SetUInt32Value(UNIT_FIELD_BYTES_1, 50331648); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 7: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - { - if(Creature* pMuru = m_creature->GetMap()->GetCreature(m_uiMuruGUID)) - { - pVelen->CastSpell(pMuru, SPELL_CALL_ENTROPIUS, false); - pMuru->GetMotionMaster()->MovePoint(0, 1698.44f, 628.03f, 35.0f); - pMuru->SendMonsterMove(1698.44f, 628.03f, 35.0f, SPLINETYPE_NORMAL, SPLINEFLAG_FLYING, 7000); - } - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 8: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - { - pVelen->CastStop(); - DoScriptText(SAY_OUTRO_04_VELEN, pVelen); - } - ++m_uiSpeechPhase; - m_uiSpeechTimer = 26000; - break; - case 9: - if(Creature* pLiadrin = m_creature->GetMap()->GetCreature(m_uiLiadrinGUID)) - pLiadrin->GetMotionMaster()->MovePoint(0, 1709.89f, 611.06f, 28.17f); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 5000; - break; - case 10: - if(Creature* pLiadrin = m_creature->GetMap()->GetCreature(m_uiLiadrinGUID)) - DoScriptText(SAY_OUTRO_05_LIADRIN, pLiadrin); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 20000; - break; - case 11: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_06_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 16000; - break; - case 12: - if(Creature* pLiadrin = m_creature->GetMap()->GetCreature(m_uiLiadrinGUID)) - DoScriptText(SAY_OUTRO_07_LIADRIN,pLiadrin); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 3000; - break; - case 13: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_08_VELEN,pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 7000; - break; - case 14: - // should be some spell here - if(Creature* pMuru = m_creature->GetMap()->GetCreature(m_uiMuruGUID)) - pMuru->ForcedDespawn(); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 10000; - break; - case 15: - DoCast(m_creature, SPELL_SUNWELL_IGNITION); - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_09_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 16000; - break; - case 16: - if(Creature* pLiadrin = m_creature->GetMap()->GetCreature(m_uiLiadrinGUID)) - DoScriptText(SAY_OUTRO_10_LIADRIN, pLiadrin); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 18000; - break; - case 17: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_11_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 7000; - break; - case 18: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - DoScriptText(SAY_OUTRO_12_VELEN, pVelen); - ++m_uiSpeechPhase; - m_uiSpeechTimer = 5000; - break; - case 19: - if(Creature* pVelen = m_creature->GetMap()->GetCreature(m_uiVelenGUID)) - pVelen->ForcedDespawn(); - if(Creature* pLiadrin = m_creature->GetMap()->GetCreature(m_uiLiadrinGUID)) - pLiadrin->ForcedDespawn(); - ++m_uiSpeechPhase; - m_bIsSpeech = false; - m_uiSpeechTimer = 1000; - break; - default: - m_uiSpeechTimer = 100000; - } - } - else m_uiSpeechTimer -= uiDiff; - - break; - } - } -}; - -/*###### -## go_orb_of_the_blue_fight -######*/ -bool GOUse_go_orb_of_the_blue_flight(Player* pPlayer, GameObject* pGo) -{ - if (ScriptedInstance* pInstance = (ScriptedInstance*)pPlayer->GetInstanceData()) - { - if(pInstance->GetData(TYPE_KILJAEDEN) == IN_PROGRESS) - { - if(Creature* pDragon = pPlayer->SummonCreature(NPC_BLUE_DRAGON, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 120000)) - pPlayer->CastSpell(pDragon, SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT, false); - pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); - } - } - - return true; -} - -CreatureAI* GetAI_mob_felfire_fiend(Creature *pCreature) -{ - return new mob_felfire_fiendAI(pCreature); -} - -CreatureAI* GetAI_mob_deceiver(Creature *pCreature) -{ - return new mob_deceiverAI(pCreature); -} - -CreatureAI* GetAI_mob_armagedon_target(Creature *pCreature) -{ - return new mob_armagedon_targetAI(pCreature); -} - -CreatureAI* GetAI_boss_kiljaeden(Creature *pCreature) -{ - return new boss_kiljaedenAI(pCreature); -} - -CreatureAI* GetAI_mob_shield_orb(Creature *pCreature) -{ - return new mob_shield_orbAI(pCreature); -} - -CreatureAI* GetAI_mob_felfire_portal(Creature *pCreature) -{ - return new mob_felfire_portalAI(pCreature); -} - -CreatureAI* GetAI_mob_kiljaeden_controller(Creature *pCreature) -{ - return new mob_kiljaeden_controllerAI(pCreature); -} - -void AddSC_boss_kiljaden() -{ - Script *newscript; - - newscript = new Script; - newscript->Name="mob_kiljaeden_controller"; - newscript->GetAI = &GetAI_mob_kiljaeden_controller; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="boss_kiljaeden"; - newscript->GetAI = &GetAI_boss_kiljaeden; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_felfire_fiend"; - newscript->GetAI = &GetAI_mob_felfire_fiend; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_shield_orb"; - newscript->GetAI = &GetAI_mob_shield_orb; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_felfire_portal"; - newscript->GetAI = &GetAI_mob_felfire_portal; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_armagedon_target"; - newscript->GetAI = &GetAI_mob_armagedon_target; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name="mob_deceiver"; - newscript->GetAI = &GetAI_mob_deceiver; - newscript->RegisterSelf(); - - newscript = new Script; - newscript->Name = "go_orb_of_the_blue_flight"; - newscript->pGOUse = &GOUse_go_orb_of_the_blue_flight; - newscript->RegisterSelf(); } diff --git a/scripts/eastern_kingdoms/sunwell_plateau/instance_sunwell_plateau.cpp b/scripts/eastern_kingdoms/sunwell_plateau/instance_sunwell_plateau.cpp index 7240d7c..aa9af9d 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/instance_sunwell_plateau.cpp +++ b/scripts/eastern_kingdoms/sunwell_plateau/instance_sunwell_plateau.cpp @@ -1,6 +1,18 @@ -/* Copyright (C) 2006 - 2011 ScriptDev2 - * This program is free software licensed under GPL version 2 - * Please see the included DOCS/LICENSE.TXT for more information */ +/* Copyright (C) 2006 - 2011 ScriptDev2 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ /* ScriptData SDName: Instance_Sunwell_Plateau @@ -21,330 +33,308 @@ EndScriptData */ 5 - Kil'Jaeden */ -struct MANGOS_DLL_DECL instance_sunwell_plateau : public ScriptedInstance -{ - instance_sunwell_plateau(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - std::string strInstData; - uint32 m_uiKiljaedenPhase; - +instance_sunwell_plateau::instance_sunwell_plateau(Map* pMap) : ScriptedInstance(pMap), // Creatures - uint64 m_uiKalecgos_DragonGUID; - uint64 m_uiKalecgos_HumanGUID; - uint64 m_uiSathrovarrGUID; - uint64 m_uiBrutallusGUID; - uint64 m_uiFelmystGUID; - uint64 m_uiAlythessGUID; - uint64 m_uiSacrolashGUID; - uint64 m_uiMuruGUID; - uint64 m_uiKilJaedenGUID; - uint64 m_uiKilJaedenControllerGUID; - uint64 m_uiAnveenaGUID; - uint64 m_uiKalecgosGUID; - + m_uiKalecgos_DragonGUID(0), + m_uiKalecgos_HumanGUID(0), + m_uiSathrovarrGUID(0), + m_uiBrutallusGUID(0), + m_uiFelmystGUID(0), + m_uiAlythessGUID(0), + m_uiSacrolashGUID(0), + m_uiMuruGUID(0), + m_uiKilJaedenGUID(0), + m_uiKilJaedenControllerGUID(0), + m_uiAnveenaGUID(0), + m_uiKalecgosGUID(0), // GameObjects - uint64 m_uiForceFieldGUID; // Kalecgos Encounter - uint64 m_uiBossCollision1GUID; - uint64 m_uiBossCollision2GUID; - uint64 m_uiIceBarrierGUID; // Brutallus Encounter - uint64 m_uiDoorFireBarrierGUID; - uint64 m_uiDoorTheFirstGateGUID; // Felmyst Encounter - uint64 m_uiDoorTheSecondGateGUID; // Alythess Encounter - uint64 m_uiDoorRaid_Gate_07GUID; // Sacrolash Encounter - uint64 m_uiDoorRaid_Gate_08GUID; // Muru Encounter - uint64 m_uiDoorTheThirdGateGUID; // Entropius Encounter - + m_uiForceFieldGUID(0), + m_uiBossCollision1GUID(0), + m_uiBossCollision2GUID(0), + m_uiIceBarrierGUID(0), + m_uiDoorFireBarrierGUID(0), + m_uiDoorTheFirstGateGUID(0), + m_uiDoorTheSecondGateGUID(0), + m_uiDoorMuruEnterGateGUID(0), + m_uiDoorMuruExitGateGUID(0), + m_uiDoorTheThirdGateGUID(0), // Misc - uint32 m_uiSpectralRealmTimer; - std::list SpectralRealmList; + m_uiSpectralRealmTimer(5000) +{ + Initialize(); +} - void Initialize() - { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - m_uiKiljaedenPhase = 0; - - // Creatures - m_uiKalecgos_DragonGUID = 0; - m_uiKalecgos_HumanGUID = 0; - m_uiSathrovarrGUID = 0; - m_uiBrutallusGUID = 0; - m_uiFelmystGUID = 0; - m_uiAlythessGUID = 0; - m_uiSacrolashGUID = 0; - m_uiMuruGUID = 0; - m_uiKilJaedenGUID = 0; - m_uiKilJaedenControllerGUID = 0; - m_uiAnveenaGUID = 0; - m_uiKalecgosGUID = 0; - - // GameObjects - m_uiForceFieldGUID = 0; - m_uiBossCollision1GUID = 0; - m_uiBossCollision2GUID = 0; - m_uiIceBarrierGUID = 0; - m_uiDoorFireBarrierGUID = 0; - m_uiDoorTheFirstGateGUID = 0; - m_uiDoorTheSecondGateGUID = 0; - m_uiDoorRaid_Gate_07GUID = 0; - m_uiDoorRaid_Gate_08GUID = 0; - m_uiDoorTheThirdGateGUID = 0; - - // Misc - m_uiSpectralRealmTimer = 5000; - } +void instance_sunwell_plateau::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - bool IsEncounterInProgress() const +bool instance_sunwell_plateau::IsEncounterInProgress() const +{ + for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) { - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - - return false; + if (m_auiEncounter[i] == IN_PROGRESS) + return true; } - void OnCreatureCreate(Creature* pCreature) - { - switch(pCreature->GetEntry()) - { - case 24850: m_uiKalecgos_DragonGUID = pCreature->GetGUID(); break; - case 24891: m_uiKalecgos_HumanGUID = pCreature->GetGUID(); break; - case 24892: m_uiSathrovarrGUID = pCreature->GetGUID(); break; - case 24882: m_uiBrutallusGUID = pCreature->GetGUID(); break; - case 25038: m_uiFelmystGUID = pCreature->GetGUID(); - if(m_auiEncounter[1] != DONE) - { - pCreature->SetDisplayId(11686); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - } - break; - case 25166: m_uiAlythessGUID = pCreature->GetGUID(); break; - case 25165: m_uiSacrolashGUID = pCreature->GetGUID(); break; - case 25741: m_uiMuruGUID = pCreature->GetGUID(); break; - case 25315: m_uiKilJaedenGUID = pCreature->GetGUID(); break; - case 25608: m_uiKilJaedenControllerGUID = pCreature->GetGUID(); break; - case 26046: m_uiAnveenaGUID = pCreature->GetGUID(); break; - case 25319: m_uiKalecgosGUID = pCreature->GetGUID(); break; - } - } + return false; +} - void OnObjectCreate(GameObject* pGo) +void instance_sunwell_plateau::OnCreatureCreate(Creature* pCreature) +{ + switch(pCreature->GetEntry()) { - switch(pGo->GetEntry()) - { - case 188421: - m_uiForceFieldGUID = pGo->GetGUID(); - break; - case 188523: - m_uiBossCollision1GUID = pGo->GetGUID(); - break; - case 188524: - m_uiBossCollision2GUID = pGo->GetGUID(); - break; - case 188119: - m_uiIceBarrierGUID = pGo->GetGUID(); - if(m_auiEncounter[1] != DONE) - pGo->SetGoState(GO_STATE_READY); - break; - case 188075: - m_uiDoorFireBarrierGUID = pGo->GetGUID(); - if (m_auiEncounter[0] == DONE && m_auiEncounter[1] == DONE && m_auiEncounter[2] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - case 187766: - m_uiDoorTheFirstGateGUID = pGo->GetGUID(); - break; - case 187764: - m_uiDoorTheSecondGateGUID = pGo->GetGUID(); - if (m_auiEncounter[3] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - case 187990: - m_uiDoorRaid_Gate_07GUID = pGo->GetGUID(); - if (m_auiEncounter[3] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - case 188118: - m_uiDoorRaid_Gate_08GUID = pGo->GetGUID(); - if (m_auiEncounter[4] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - case 187765: - m_uiDoorTheThirdGateGUID = pGo->GetGUID(); - if (m_auiEncounter[4] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - } + case NPC_KALECGOS_DRAGON: m_uiKalecgos_DragonGUID = pCreature->GetGUID(); break; + case NPC_KALECGOS_HUMAN: m_uiKalecgos_HumanGUID = pCreature->GetGUID(); break; + case NPC_SATHROVARR: m_uiSathrovarrGUID = pCreature->GetGUID(); break; + case NPC_BRUTALLUS: m_uiBrutallusGUID = pCreature->GetGUID(); break; + case NPC_FELMYST: m_uiFelmystGUID = pCreature->GetGUID(); break; + case NPC_ALYTHESS: m_uiAlythessGUID = pCreature->GetGUID(); break; + case NPC_SACROLASH: m_uiSacrolashGUID = pCreature->GetGUID(); break; + case NPC_MURU: m_uiMuruGUID = pCreature->GetGUID(); break; + case NPC_KILJAEDEN: m_uiKilJaedenGUID = pCreature->GetGUID(); break; + case NPC_KILJAEDEN_CONTROLLER: m_uiKilJaedenControllerGUID = pCreature->GetGUID(); break; + case NPC_ANVEENA: m_uiAnveenaGUID = pCreature->GetGUID(); break; + case NPC_KALECGOS: m_uiKalecgosGUID = pCreature->GetGUID(); break; } +} - uint32 GetData(uint32 uiType) +void instance_sunwell_plateau::OnObjectCreate(GameObject* pGo) +{ + switch(pGo->GetEntry()) { - switch(uiType) - { - case TYPE_KALECGOS: return m_auiEncounter[0]; - case TYPE_BRUTALLUS: return m_auiEncounter[1]; - case TYPE_FELMYST: return m_auiEncounter[2]; - case TYPE_EREDAR_TWINS: return m_auiEncounter[3]; - case TYPE_MURU: return m_auiEncounter[4]; - case TYPE_KILJAEDEN: return m_auiEncounter[5]; - case TYPE_KILJAEDEN_PHASE: return m_uiKiljaedenPhase; - } - - return 0; + case GO_FORCEFIELD: + m_uiForceFieldGUID = pGo->GetGUID(); + break; + case GO_BOSS_COLLISION_1: + m_uiBossCollision1GUID = pGo->GetGUID(); + break; + case GO_BOSS_COLLISION_2: + m_uiBossCollision2GUID = pGo->GetGUID(); + break; + case GO_ICE_BARRIER: + m_uiIceBarrierGUID = pGo->GetGUID(); + break; + case GO_FIRE_BARRIER: + m_uiDoorFireBarrierGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_KALECGOS] == DONE && m_auiEncounter[TYPE_BRUTALLUS] == DONE && m_auiEncounter[TYPE_FELMYST] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; + case GO_FIRST_GATE: + m_uiDoorTheFirstGateGUID = pGo->GetGUID(); + break; + case GO_SECOND_GATE: + m_uiDoorTheSecondGateGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_EREDAR_TWINS] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; + case GO_MURU_ENTER_GATE: + m_uiDoorMuruEnterGateGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_EREDAR_TWINS] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; + case GO_MURU_EXIT_GATE: + m_uiDoorMuruExitGateGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_MURU] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; + case GO_THIRD_GATE: + m_uiDoorTheThirdGateGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_MURU] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; } +} - uint64 GetData64(uint32 id) +void instance_sunwell_plateau::SetData(uint32 uiType, uint32 uiData) +{ + switch(uiType) { - switch(id) - { - case DATA_KALECGOS_DRAGON: return m_uiKalecgos_DragonGUID; - case DATA_KALECGOS_HUMAN: return m_uiKalecgos_HumanGUID; - case DATA_SATHROVARR: return m_uiSathrovarrGUID; - case DATA_BRUTALLUS: return m_uiBrutallusGUID; - case DATA_FELMYST: return m_uiFelmystGUID; - case DATA_ALYTHESS: return m_uiAlythessGUID; - case DATA_SACROLASH: return m_uiSacrolashGUID; - case DATA_MURU: return m_uiMuruGUID; - case DATA_KILJAEDEN: return m_uiKilJaedenGUID; - case DATA_KILJAEDEN_CONTROLLER: return m_uiKilJaedenControllerGUID; - case DATA_ANVEENA: return m_uiAnveenaGUID; - case DATA_KALECGOS: return m_uiKalecgosGUID; - case DATA_GO_FORCEFIELD: return m_uiForceFieldGUID; - case DATA_GO_ICE_BARRIER: return m_uiIceBarrierGUID; - } - return 0; + case TYPE_KALECGOS: + m_auiEncounter[uiType] = uiData; + // combat doors + DoUseDoorOrButton(m_uiForceFieldGUID); + DoUseDoorOrButton(m_uiBossCollision1GUID); + DoUseDoorOrButton(m_uiBossCollision2GUID); + if (uiData == IN_PROGRESS) + SpectralRealmList.clear(); + break; + case TYPE_BRUTALLUS: + m_auiEncounter[uiType] = uiData; + if (uiData == SPECIAL) + DoUseDoorOrButton(m_uiIceBarrierGUID,MINUTE); + break; + case TYPE_FELMYST: + m_auiEncounter[uiType] = uiData; + if (uiData == DONE) + DoUseDoorOrButton(m_uiDoorFireBarrierGUID); + break; + case TYPE_EREDAR_TWINS: + m_auiEncounter[uiType] = uiData; + if (uiData == DONE) + { + DoUseDoorOrButton(m_uiDoorTheSecondGateGUID); + DoUseDoorOrButton(m_uiDoorMuruEnterGateGUID); + } + break; + case TYPE_MURU: + m_auiEncounter[uiType] = uiData; + // combat door + DoUseDoorOrButton(m_uiDoorMuruEnterGateGUID); + if (uiData == DONE) + { + DoUseDoorOrButton(m_uiDoorMuruExitGateGUID); + DoUseDoorOrButton(m_uiDoorTheThirdGateGUID); + } + break; + case TYPE_KILJAEDEN: + m_auiEncounter[uiType] = uiData; + break; + case DATA_SET_SPECTRAL_CHECK: + m_uiSpectralRealmTimer = uiData; + break; } - void SetData(uint32 uiType, uint32 uiData) + if (uiData == DONE) { - switch(uiType) - { - case TYPE_KALECGOS: - m_auiEncounter[0] = uiData; - DoUseDoorOrButton(m_uiForceFieldGUID); - DoUseDoorOrButton(m_uiBossCollision1GUID); - DoUseDoorOrButton(m_uiBossCollision2GUID); - if (uiData == IN_PROGRESS) - SpectralRealmList.clear(); - break; - case TYPE_BRUTALLUS: - m_auiEncounter[1] = uiData; - break; - case TYPE_FELMYST: - m_auiEncounter[2] = uiData; - if (uiData == DONE) - DoUseDoorOrButton(m_uiDoorFireBarrierGUID); - break; - case TYPE_EREDAR_TWINS: - m_auiEncounter[3] = uiData; - if (uiData == DONE) - { - DoUseDoorOrButton(m_uiDoorTheSecondGateGUID); - DoUseDoorOrButton(m_uiDoorRaid_Gate_07GUID); - } - break; - case TYPE_MURU: - m_auiEncounter[4] = uiData; - if (uiData == DONE) - DoUseDoorOrButton(m_uiDoorRaid_Gate_08GUID); - break; - case TYPE_KILJAEDEN: m_auiEncounter[5] = uiData; break; - case DATA_SET_SPECTRAL_CHECK: m_uiSpectralRealmTimer = uiData; break; - case TYPE_KILJAEDEN_PHASE: m_uiKiljaedenPhase = uiData; break; - } + OUT_SAVE_INST_DATA; - if (uiData == DONE) - { - OUT_SAVE_INST_DATA; - - std::ostringstream saveStream; - saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " - << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5]; + std::ostringstream saveStream; + saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " + << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5]; - strInstData = saveStream.str(); + strInstData = saveStream.str(); - SaveToDB(); - OUT_SAVE_INST_DATA_COMPLETE; - } + SaveToDB(); + OUT_SAVE_INST_DATA_COMPLETE; } +} - const char* Save() - { - return strInstData.c_str(); - } +void instance_sunwell_plateau::SetData64(uint32 uiType, uint64 uiData) +{ + if (uiType == DATA_PLAYER_SPECTRAL_REALM) + SpectralRealmList.push_back(uiData); +} - void SetData64(uint32 uiData, uint64 uiGuid) - { - if (uiData == DATA_PLAYER_SPECTRAL_REALM) - SpectralRealmList.push_back(uiGuid); - } +uint32 instance_sunwell_plateau::GetData(uint32 uiType) +{ + if (uiType < MAX_ENCOUNTER) + return m_auiEncounter[uiType]; - void EjectPlayer(Player* pPlayer) - { - debug_log("SD2: Ejecting Player %s from Spectral Realm", pPlayer->GetName()); + return 0; +} - pPlayer->TeleportTo(pPlayer->GetMapId(), pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ()+135.0f, pPlayer->GetOrientation()); - //pPlayer->CastSpell(pPlayer, SPELL_TELEPORT_NORMAL_REALM, true); // spell not working right - pPlayer->CastSpell(pPlayer, SPELL_SPECTRAL_EXHAUSTION, true); +uint64 instance_sunwell_plateau::GetData64(uint32 uiType) +{ + switch(uiType) + { + case NPC_KALECGOS_DRAGON: return m_uiKalecgos_DragonGUID; + case NPC_KALECGOS_HUMAN: return m_uiKalecgos_HumanGUID; + case NPC_SATHROVARR: return m_uiSathrovarrGUID; + case NPC_BRUTALLUS: return m_uiBrutallusGUID; + case NPC_FELMYST: return m_uiFelmystGUID; + case NPC_ALYTHESS: return m_uiAlythessGUID; + case NPC_SACROLASH: return m_uiSacrolashGUID; + case NPC_MURU: return m_uiMuruGUID; + case NPC_KILJAEDEN: return m_uiKilJaedenGUID; + case NPC_KILJAEDEN_CONTROLLER: return m_uiKilJaedenControllerGUID; + case NPC_ANVEENA: return m_uiAnveenaGUID; + case NPC_KALECGOS: return m_uiKalecgosGUID; + case GO_FORCEFIELD: return m_uiForceFieldGUID; } - void EjectPlayers() - { - if (SpectralRealmList.empty()) - return; + return 0; +} - Map::PlayerList const& players = instance->GetPlayers(); +void instance_sunwell_plateau::EjectPlayer(Player* pPlayer) +{ + debug_log("SD2: Ejecting Player %s from Spectral Realm", pPlayer->GetName()); - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + // Put player back in Kalecgos(Dragon)'s threat list + /*if (Creature* pKalecgos = instance->GetCreature(m_uiKalecgos_DragonGUID)) + { + if (pKalecgos->isAlive()) { - Player* plr = itr->getSource(); - - if (plr && !plr->HasAura(SPELL_SPECTRAL_REALM)) - { - SpectralRealmList.remove(plr->GetGUID()); - EjectPlayer(plr); - } + debug_log("SD2: Adding %s in Kalecgos' threatlist", pPlayer->GetName()); + pKalecgos->AddThreat(pPlayer); } } - void Update(uint32 uiDiff) + // Remove player from Sathrovarr's threat list + if (Creature* pSath = instance->GetCreature(m_uiSathrovarrGUID)) { - // Only check for Spectral Realm if Kalecgos Encounter is running - if (m_auiEncounter[0] == IN_PROGRESS) + if (pSath->isAlive()) { - if (m_uiSpectralRealmTimer <= uiDiff) + if (HostileReference* pRef = pSath->getThreatManager().getOnlineContainer().getReferenceByTarget(pPlayer)) { - EjectPlayers(); - m_uiSpectralRealmTimer = 1000; + pRef->removeReference(); + debug_log("SD2: Deleting %s from Sathrovarr's threatlist", pPlayer->GetName()); } - else - m_uiSpectralRealmTimer -= uiDiff; } - } + }*/ - void Load(const char* in) + pPlayer->CastSpell(pPlayer, SPELL_SPECTRAL_EXHAUSTION, true); + pPlayer->CastSpell(pPlayer, SPELL_TELEPORT_NORMAL_REALM, true); +} + +void instance_sunwell_plateau::EjectPlayers() +{ + if (SpectralRealmList.empty()) + return; + + Map::PlayerList const& players = instance->GetPlayers(); + + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) { - if (!in) + Player* plr = itr->getSource(); + + if (plr && !plr->HasAura(SPELL_SPECTRAL_REALM)) { - OUT_LOAD_INST_DATA_FAIL; - return; + SpectralRealmList.remove(plr->GetGUID()); + EjectPlayer(plr); } + } - OUT_LOAD_INST_DATA(in); - - std::istringstream loadStream(in); - loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> - m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5]; + //SpectralRealmList.clear(); +} - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) +void instance_sunwell_plateau::Update(uint32 uiDiff) +{ + // Only check for Spectral Realm if Kalecgos Encounter is running + if (m_auiEncounter[TYPE_KALECGOS] == IN_PROGRESS) + { + if (m_uiSpectralRealmTimer <= uiDiff) { - if (m_auiEncounter[i] == IN_PROGRESS) - m_auiEncounter[i] = NOT_STARTED; + EjectPlayers(); + m_uiSpectralRealmTimer = 1000; } + else + m_uiSpectralRealmTimer -= uiDiff; + } +} - OUT_LOAD_INST_DATA_COMPLETE; +void instance_sunwell_plateau::Load(const char* in) +{ + if (!in) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(in); + + std::istringstream loadStream(in); + loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> + m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5]; + + for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) + { + if (m_auiEncounter[i] == IN_PROGRESS) + m_auiEncounter[i] = NOT_STARTED; } -}; + + OUT_LOAD_INST_DATA_COMPLETE; +} InstanceData* GetInstanceData_instance_sunwell_plateau(Map* pMap) { @@ -353,9 +343,10 @@ InstanceData* GetInstanceData_instance_sunwell_plateau(Map* pMap) void AddSC_instance_sunwell_plateau() { - Script *newscript; - newscript = new Script; - newscript->Name = "instance_sunwell_plateau"; - newscript->GetInstanceData = &GetInstanceData_instance_sunwell_plateau; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_sunwell_plateau"; + pNewScript->GetInstanceData = &GetInstanceData_instance_sunwell_plateau; + pNewScript->RegisterSelf(); } diff --git a/scripts/eastern_kingdoms/sunwell_plateau/sunwell_plateau.h b/scripts/eastern_kingdoms/sunwell_plateau/sunwell_plateau.h index 4823765..16088c0 100644 --- a/scripts/eastern_kingdoms/sunwell_plateau/sunwell_plateau.h +++ b/scripts/eastern_kingdoms/sunwell_plateau/sunwell_plateau.h @@ -1,11 +1,11 @@ -/* Copyright (C) 2006 - 2011 ScriptDev2 +/* Copyright (C) 2006 - 2011 ScriptDev2 * This program is free software licensed under GPL version 2 * Please see the included DOCS/LICENSE.TXT for more information */ #ifndef DEF_SUNWELLPLATEAU_H #define DEF_SUNWELLPLATEAU_H -enum InstanceSWP +enum { MAX_ENCOUNTER = 6, @@ -15,39 +15,99 @@ enum InstanceSWP TYPE_EREDAR_TWINS = 3, TYPE_MURU = 4, TYPE_KILJAEDEN = 5, - TYPE_KILJAEDEN_PHASE = 6, - - DATA_KALECGOS_DRAGON = 6, - DATA_KALECGOS_HUMAN = 7, - DATA_SATHROVARR = 8, - DATA_BRUTALLUS = 9, - DATA_FELMYST = 10, - DATA_ALYTHESS = 11, - DATA_SACROLASH = 12, - DATA_MURU = 13, - DATA_KILJAEDEN = 14, - DATA_KILJAEDEN_CONTROLLER = 15, - DATA_ANVEENA = 16, - DATA_KALECGOS = 17, - - DATA_GO_FORCEFIELD = 18, - DATA_GO_FIRE_BARRIER = 19, - DATA_GO_FIRST_GATE = 20, - DATA_GO_SECOND_GATE = 21, - DATA_GO_RAID_GATE_07 = 22, - DATA_GO_RAID_GATE_08 = 23, - DATA_GO_THIRD_GATE = 24, - - DATA_PLAYER_SPECTRAL_REALM = 25, - DATA_SET_SPECTRAL_CHECK = 26, - - DATA_GO_ICE_BARRIER = 28, - - SPELL_SUNWELL_RADIANCE = 45769, + + DATA_PLAYER_SPECTRAL_REALM = 6, + DATA_SET_SPECTRAL_CHECK = 7, + + NPC_KALECGOS_DRAGON = 24850, // kalecgos blue dragon hostile + NPC_KALECGOS_HUMAN = 24891, // kalecgos human form in spectral realm + NPC_SATHROVARR = 24892, + NPC_BRUTALLUS = 24882, + NPC_FELMYST = 25038, + NPC_ALYTHESS = 25166, + NPC_SACROLASH = 25165, + NPC_MURU = 25741, + NPC_KILJAEDEN = 25315, + NPC_KILJAEDEN_CONTROLLER = 25608, // kiljaeden event controller + NPC_ANVEENA = 26046, // related to kiljaeden event + NPC_KALECGOS = 25319, // related to kiljaeden event + + GO_FORCEFIELD = 188421, // kalecgos door + collisions + GO_BOSS_COLLISION_1 = 188523, + GO_BOSS_COLLISION_2 = 188524, + GO_ICE_BARRIER = 188119, // use unk; related to brutallus intro + GO_FIRE_BARRIER = 188075, // door after felmyst + GO_FIRST_GATE = 187766, // door between felmyst and eredar twins + GO_SECOND_GATE = 187764, // door after eredar twins + GO_MURU_ENTER_GATE = 187990, // muru gates + GO_MURU_EXIT_GATE = 188118, + GO_THIRD_GATE = 187765, // door after muru; why another? + + // spells related to kalecgos event SPELL_SPECTRAL_REALM = 46021, SPELL_TELEPORT_NORMAL_REALM = 46020, SPELL_TELEPORT_TO_SPECTRAL_REALM = 46019, SPELL_SPECTRAL_EXHAUSTION = 44867, SPELL_SPECTRAL_REALM_FORCE_FACTION = 44852 }; + +class MANGOS_DLL_DECL instance_sunwell_plateau : public ScriptedInstance +{ + public: + instance_sunwell_plateau(Map* pMap); + ~instance_sunwell_plateau() {} + + void Initialize(); + bool IsEncounterInProgress() const; + + void OnObjectCreate(GameObject* pGo); + void OnCreatureCreate(Creature* pCreature); + + void SetData(uint32 uiType, uint32 uiData); + void SetData64(uint32 uiType, uint64 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiType); + + void Update(uint32 uiDiff); + + const char* Save() { return strInstData.c_str(); } + void Load(const char* chrIn); + + protected: + void EjectPlayer(Player* pPlayer); + void EjectPlayers(); + + uint32 m_auiEncounter[MAX_ENCOUNTER]; + std::string strInstData; + + // Creatures + uint64 m_uiKalecgos_DragonGUID; + uint64 m_uiKalecgos_HumanGUID; + uint64 m_uiSathrovarrGUID; + uint64 m_uiBrutallusGUID; + uint64 m_uiFelmystGUID; + uint64 m_uiAlythessGUID; + uint64 m_uiSacrolashGUID; + uint64 m_uiMuruGUID; + uint64 m_uiKilJaedenGUID; + uint64 m_uiKilJaedenControllerGUID; + uint64 m_uiAnveenaGUID; + uint64 m_uiKalecgosGUID; + + // GameObjects + uint64 m_uiForceFieldGUID; + uint64 m_uiBossCollision1GUID; + uint64 m_uiBossCollision2GUID; + uint64 m_uiIceBarrierGUID; + uint64 m_uiDoorFireBarrierGUID; + uint64 m_uiDoorTheFirstGateGUID; + uint64 m_uiDoorTheSecondGateGUID; + uint64 m_uiDoorMuruEnterGateGUID; + uint64 m_uiDoorMuruExitGateGUID; + uint64 m_uiDoorTheThirdGateGUID; + + // Misc + uint32 m_uiSpectralRealmTimer; + GUIDList SpectralRealmList; +}; #endif diff --git a/scripts/eastern_kingdoms/swamp_of_sorrows.cpp b/scripts/eastern_kingdoms/swamp_of_sorrows.cpp index 38660b2..7509e41 100644 --- a/scripts/eastern_kingdoms/swamp_of_sorrows.cpp +++ b/scripts/eastern_kingdoms/swamp_of_sorrows.cpp @@ -49,13 +49,9 @@ enum Galen struct MANGOS_DLL_DECL npc_galen_goodwardAI : public npc_escortAI { - npc_galen_goodwardAI(Creature* pCreature) : npc_escortAI(pCreature) - { - m_uiGalensCageGUID = 0; - Reset(); - } + npc_galen_goodwardAI(Creature* pCreature) : npc_escortAI(pCreature) { Reset(); } - uint64 m_uiGalensCageGUID; + ObjectGuid m_galensCageGuid; uint32 m_uiPeriodicSay; void Reset() @@ -76,14 +72,15 @@ struct MANGOS_DLL_DECL npc_galen_goodwardAI : public npc_escortAI case 0: { GameObject* pCage = NULL; - if (m_uiGalensCageGUID) - pCage = m_creature->GetMap()->GetGameObject(m_uiGalensCageGUID); + if (!m_galensCageGuid.IsEmpty()) + pCage = m_creature->GetMap()->GetGameObject(m_galensCageGuid); else pCage = GetClosestGameObjectWithEntry(m_creature, GO_GALENS_CAGE, INTERACTION_DISTANCE); + if (pCage) { pCage->UseDoorOrButton(); - m_uiGalensCageGUID = pCage->GetGUID(); + m_galensCageGuid = pCage->GetObjectGuid(); } break; } @@ -98,7 +95,7 @@ struct MANGOS_DLL_DECL npc_galen_goodwardAI : public npc_escortAI switch (uiPointId) { case 0: - if (GameObject* pCage = m_creature->GetMap()->GetGameObject(m_uiGalensCageGUID)) + if (GameObject* pCage = m_creature->GetMap()->GetGameObject(m_galensCageGuid)) pCage->ResetDoorOrButton(); break; case 20: @@ -140,7 +137,7 @@ bool QuestAccept_npc_galen_goodward(Player* pPlayer, Creature* pCreature, const if (npc_galen_goodwardAI* pEscortAI = dynamic_cast(pCreature->AI())) { - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE); DoScriptText(SAY_QUEST_ACCEPTED, pCreature); } diff --git a/scripts/eastern_kingdoms/tirisfal_glades.cpp b/scripts/eastern_kingdoms/tirisfal_glades.cpp index 354dbc6..ad0a03e 100644 --- a/scripts/eastern_kingdoms/tirisfal_glades.cpp +++ b/scripts/eastern_kingdoms/tirisfal_glades.cpp @@ -95,13 +95,13 @@ struct MANGOS_DLL_DECL npc_calvin_montagueAI : public ScriptedAI uint32 m_uiNormFaction; uint32 m_uiPhase; uint32 m_uiPhaseTimer; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; void Reset() { m_uiPhase = 0; m_uiPhaseTimer = 5000; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); if (m_creature->getFaction() != m_uiNormFaction) m_creature->setFaction(m_uiNormFaction); @@ -127,7 +127,7 @@ struct MANGOS_DLL_DECL npc_calvin_montagueAI : public ScriptedAI m_uiPhase = 1; if (pDoneBy->GetTypeId() == TYPEID_PLAYER) - m_uiPlayerGUID = pDoneBy->GetGUID(); + m_playerGuid = pDoneBy->GetObjectGuid(); } } @@ -150,7 +150,7 @@ struct MANGOS_DLL_DECL npc_calvin_montagueAI : public ScriptedAI ++m_uiPhase; break; case 2: - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->AreaExploredOrEventHappens(QUEST_590); m_creature->CastSpell(m_creature,SPELL_DRINK,true); diff --git a/scripts/eastern_kingdoms/uldaman/uldaman.cpp b/scripts/eastern_kingdoms/uldaman/uldaman.cpp index 249df26..b7ff72b 100644 --- a/scripts/eastern_kingdoms/uldaman/uldaman.cpp +++ b/scripts/eastern_kingdoms/uldaman/uldaman.cpp @@ -17,70 +17,17 @@ /* ScriptData SDName: Uldaman SD%Complete: 100 -SDComment: Quest support: 2278 + 1 trash mob. +SDComment: Quest support: 2278 SDCategory: Uldaman EndScriptData */ /* ContentData -mob_jadespine_basilisk npc_lore_keeper_of_norgannon EndContentData */ #include "precompiled.h" #include "uldaman.h" -/*###### -## mob_jadespine_basilisk -######*/ - -#define SPELL_CSLUMBER 3636 - -struct MANGOS_DLL_DECL mob_jadespine_basiliskAI : public ScriptedAI -{ - mob_jadespine_basiliskAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - - uint32 Cslumber_Timer; - - void Reset() - { - Cslumber_Timer = 2000; - } - - void UpdateAI(const uint32 diff) - { - //Return since we have no target - if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) - return; - - //Cslumber_Timer - if (Cslumber_Timer < diff) - { - //Cast - // DoCastSpellIfCan(m_creature->getVictim(),SPELL_CSLUMBER); - m_creature->CastSpell(m_creature->getVictim(),SPELL_CSLUMBER, true); - - //Stop attacking target thast asleep and pick new target - Cslumber_Timer = 28000; - - Unit* Target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_TOPAGGRO, 0); - - if (!Target || Target == m_creature->getVictim()) - Target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - if (Target) - m_creature->TauntApply(Target); - - }else Cslumber_Timer -= diff; - - DoMeleeAttackIfReady(); - } -}; - -CreatureAI* GetAI_mob_jadespine_basilisk(Creature* pCreature) -{ - return new mob_jadespine_basiliskAI(pCreature); -} - /*###### ## npc_lore_keeper_of_norgannon ######*/ @@ -90,7 +37,7 @@ bool GossipHello_npc_lore_keeper_of_norgannon(Player* pPlayer, Creature* pCreatu if (pPlayer->GetQuestStatus(2278) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Who are the Earthen?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(1079, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1079, pCreature->GetObjectGuid()); return true; } @@ -101,63 +48,63 @@ bool GossipSelect_npc_lore_keeper_of_norgannon(Player* pPlayer, Creature* pCreat { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What is a \"subterranean being matrix\"?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(1080, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1080, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What are the anomalies you speak of?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(1081, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1081, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What is a resilient foundation of construction?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(1082, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1082, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "So... the Earthen were made out of stone?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(1083, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1083, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Anything else I should know about the Earthen?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(1084, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1084, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I think I understand the Creators' design intent for the Earthen now. What are the Earthen's anomalies that you spoke of earlier?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7); - pPlayer->SEND_GOSSIP_MENU(1085, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1085, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What high-stress environments would cause the Earthen to destabilize?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8); - pPlayer->SEND_GOSSIP_MENU(1086, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1086, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+8: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What happens when the Earthen destabilize?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9); - pPlayer->SEND_GOSSIP_MENU(1087, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1087, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+9: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Troggs?! Are the troggs you mention the same as the ones in the world today?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+10); - pPlayer->SEND_GOSSIP_MENU(1088, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1088, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+10: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "You mentioned two results when the Earthen destabilize. What is the second?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+11); - pPlayer->SEND_GOSSIP_MENU(1089, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1089, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+11: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Dwarves!!! Now you're telling me that dwarves originally came from the Earthen?!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+12); - pPlayer->SEND_GOSSIP_MENU(1090, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1090, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+12: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "These dwarves are the same ones today, yes? Do the dwarves maintain any other links to the Earthen?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+13); - pPlayer->SEND_GOSSIP_MENU(1091, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1091, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+13: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Who are the Creators?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+14); - pPlayer->SEND_GOSSIP_MENU(1092, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1092, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+14: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "This is a lot to think about.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+15); - pPlayer->SEND_GOSSIP_MENU(1093, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1093, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+15: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I will access the discs now.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+16); - pPlayer->SEND_GOSSIP_MENU(1094, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1094, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+16: pPlayer->CLOSE_GOSSIP_MENU(); @@ -171,11 +118,6 @@ void AddSC_uldaman() { Script* pNewScript; - pNewScript = new Script; - pNewScript->Name = "mob_jadespine_basilisk"; - pNewScript->GetAI = &GetAI_mob_jadespine_basilisk; - pNewScript->RegisterSelf(); - pNewScript = new Script; pNewScript->Name = "npc_lore_keeper_of_norgannon"; pNewScript->pGossipHello = &GossipHello_npc_lore_keeper_of_norgannon; diff --git a/scripts/eastern_kingdoms/undercity.cpp b/scripts/eastern_kingdoms/undercity.cpp index 6acf7a6..105afb5 100644 --- a/scripts/eastern_kingdoms/undercity.cpp +++ b/scripts/eastern_kingdoms/undercity.cpp @@ -60,7 +60,7 @@ struct MANGOS_DLL_DECL npc_lady_sylvanas_windrunnerAI : public ScriptedAI uint32 LamentEvent_Timer; bool LamentEvent; - uint64 targetGUID; + ObjectGuid m_targetGuid; float myX; float myY; @@ -74,20 +74,20 @@ struct MANGOS_DLL_DECL npc_lady_sylvanas_windrunnerAI : public ScriptedAI LamentEvent_Timer = 5000; LamentEvent = false; - targetGUID = 0; + m_targetGuid.Clear(); } void JustSummoned(Creature *summoned) { if (summoned->GetEntry() == ENTRY_HIGHBORNE_BUNNY) { - if (Creature* pBunny = m_creature->GetMap()->GetCreature(targetGUID)) + if (Creature* pBunny = m_creature->GetMap()->GetCreature(m_targetGuid)) { pBunny->NearTeleportTo(pBunny->GetPositionX(), pBunny->GetPositionY(), myZ+15.0f, 0.0f); summoned->CastSpell(pBunny,SPELL_RIBBON_OF_SOULS,false); } - targetGUID = summoned->GetGUID(); + m_targetGuid = summoned->GetObjectGuid(); } } @@ -201,17 +201,17 @@ CreatureAI* GetAI_npc_highborne_lamenter(Creature* pCreature) bool GossipHello_npc_parqual_fintallas(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(6628) == QUEST_STATUS_INCOMPLETE && !pPlayer->HasAura(SPELL_MARK_OF_SHAME, EFFECT_INDEX_0)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Gul'dan", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Kel'Thuzad", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ner'zhul", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(5822, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5822, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(5821, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5821, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/western_plaguelands.cpp b/scripts/eastern_kingdoms/western_plaguelands.cpp index 44fcedb..ceafefe 100644 --- a/scripts/eastern_kingdoms/western_plaguelands.cpp +++ b/scripts/eastern_kingdoms/western_plaguelands.cpp @@ -36,7 +36,7 @@ EndContentData */ bool GossipHello_npcs_dithers_and_arbington(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); @@ -46,9 +46,9 @@ bool GossipHello_npcs_dithers_and_arbington(Player* pPlayer, Creature* pCreature pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What does the Dalson's Tears Cauldron need?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What does the Writhing Haunt Cauldron need?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What does the Gahrron's Withering Cauldron need?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(3985, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3985, pCreature->GetObjectGuid()); }else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -58,23 +58,23 @@ bool GossipSelect_npcs_dithers_and_arbington(Player* pPlayer, Creature* pCreatur switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks, i need a Vitreous Focuser", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(3980, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3980, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks, i need a Vitreous Focuser", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(3981, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3981, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks, i need a Vitreous Focuser", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(3982, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3982, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks, i need a Vitreous Focuser", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(3983, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3983, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->CLOSE_GOSSIP_MENU(); @@ -100,17 +100,17 @@ enum bool GossipHello_npc_myranda_the_hag(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_SUBTERFUGE) == QUEST_STATUS_COMPLETE && !pPlayer->GetQuestRewardStatus(QUEST_IN_DREAMS) && !pPlayer->HasAura(SPELL_SCARLET_ILLUSION)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ILLUSION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(4773, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4773, pCreature->GetObjectGuid()); return true; } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/eastern_kingdoms/westfall.cpp b/scripts/eastern_kingdoms/westfall.cpp index 14ce988..c11fa69 100644 --- a/scripts/eastern_kingdoms/westfall.cpp +++ b/scripts/eastern_kingdoms/westfall.cpp @@ -171,7 +171,7 @@ bool QuestAccept_npc_daphne_stilwell(Player* pPlayer, Creature* pCreature, const DoScriptText(SAY_DS_START, pCreature); if (npc_daphne_stilwellAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); } return true; @@ -237,7 +237,7 @@ bool QuestAccept_npc_defias_traitor(Player* pPlayer, Creature* pCreature, const DoScriptText(SAY_START, pCreature, pPlayer); if (npc_defias_traitorAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); } return true; diff --git a/scripts/eastern_kingdoms/wetlands.cpp b/scripts/eastern_kingdoms/wetlands.cpp index 523792d..72cab72 100644 --- a/scripts/eastern_kingdoms/wetlands.cpp +++ b/scripts/eastern_kingdoms/wetlands.cpp @@ -142,7 +142,7 @@ bool QuestAccept_npc_mikhail(Player* pPlayer, Creature* pCreature, const Quest* pSlim->CastSpell(pSlim, SPELL_STEALTH, true); if (npc_tapoke_slim_jahnAI* pEscortAI = dynamic_cast(pSlim->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return false; } diff --git a/scripts/eastern_kingdoms/zulaman/boss_janalai.cpp b/scripts/eastern_kingdoms/zulaman/boss_janalai.cpp index c6e7639..8c343bc 100644 --- a/scripts/eastern_kingdoms/zulaman/boss_janalai.cpp +++ b/scripts/eastern_kingdoms/zulaman/boss_janalai.cpp @@ -338,7 +338,7 @@ struct MANGOS_DLL_DECL boss_janalaiAI : public ScriptedAI if (Creature* pBomb = m_creature->GetMap()->GetCreature(*itr)) { //do damage and then remove aura (making them "disappear") - pBomb->CastSpell(pBomb, SPELL_FIRE_BOMB_DAMAGE, false, NULL, NULL, m_creature->GetGUID()); + pBomb->CastSpell(pBomb, SPELL_FIRE_BOMB_DAMAGE, false, NULL, NULL, m_creature->GetObjectGuid()); pBomb->RemoveAurasDueToSpell(SPELL_FIRE_BOMB_DUMMY); } } diff --git a/scripts/eastern_kingdoms/zulaman/boss_malacrass.cpp b/scripts/eastern_kingdoms/zulaman/boss_malacrass.cpp index 43c6706..800b4e7 100644 --- a/scripts/eastern_kingdoms/zulaman/boss_malacrass.cpp +++ b/scripts/eastern_kingdoms/zulaman/boss_malacrass.cpp @@ -135,30 +135,11 @@ struct MANGOS_DLL_DECL boss_malacrassAI : public ScriptedAI ScriptedInstance* m_pInstance; - uint32 m_uiSpell_SPIRIT_BOLTS_Timer; - uint32 m_uiSPELL_SIPHON_SOUL_Timer; - uint32 m_uiSPELL_DRAIN_POWER_Timer; - - uint32 m_uiSPELL_CLASS; - - uint32 m_uiSPELL_DRAINED_1_Timer; - uint32 m_uiSPELL_DRAINED_2_Timer; - uint32 m_uiSPELL_DRAINED_3_Timer; - - std::list m_lAddsEntryList; uint64 m_auiAddGUIDs[MAX_ACTIVE_ADDS]; void Reset() { - m_uiSPELL_CLASS = 0; - - m_uiSpell_SPIRIT_BOLTS_Timer = 10000; - - m_uiSPELL_DRAIN_POWER_Timer = 9800; - - m_uiSPELL_SIPHON_SOUL_Timer = 20000; - InitializeAdds(); if (!m_pInstance) @@ -167,7 +148,6 @@ struct MANGOS_DLL_DECL boss_malacrassAI : public ScriptedAI m_pInstance->SetData(TYPE_MALACRASS, NOT_STARTED); } - void JustReachedHome() { if (m_pInstance) @@ -223,8 +203,6 @@ struct MANGOS_DLL_DECL boss_malacrassAI : public ScriptedAI void Aggro(Unit* pWho) { - m_creature->SetInCombatWithZone(); - DoScriptText(SAY_AGGRO, m_creature); AddsAttack(pWho); @@ -285,390 +263,6 @@ struct MANGOS_DLL_DECL boss_malacrassAI : public ScriptedAI if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - - - if (m_uiSpell_SPIRIT_BOLTS_Timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_SPIRIT_BOLTS); - - m_uiSpell_SPIRIT_BOLTS_Timer = 40000; - - } - else - m_uiSpell_SPIRIT_BOLTS_Timer -= uiDiff; - - - if (m_uiSPELL_DRAIN_POWER_Timer < uiDiff) - { - m_uiSPELL_CLASS = 0; - m_creature->CastSpell(m_creature->getVictim(),SPELL_DRAIN_POWER,true); - m_uiSPELL_DRAIN_POWER_Timer = 40000; - } - else - m_uiSPELL_DRAIN_POWER_Timer -= uiDiff; - - - if (m_uiSPELL_SIPHON_SOUL_Timer < uiDiff ) - { - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_SIPHON_SOUL, true); - - m_uiSPELL_CLASS = pTarget->getClass(); - - m_uiSPELL_SIPHON_SOUL_Timer = 40000; - - - switch(m_uiSPELL_CLASS) - { - case CLASS_PRIEST: - m_uiSPELL_DRAINED_1_Timer = 1000; - m_uiSPELL_DRAINED_2_Timer = 5000; - m_uiSPELL_DRAINED_3_Timer = 8000; - break; - case CLASS_PALADIN: - - m_uiSPELL_DRAINED_1_Timer = 3000; - m_uiSPELL_DRAINED_2_Timer = 1000; - - break; - case CLASS_WARLOCK: - m_uiSPELL_DRAINED_1_Timer = 10000; - m_uiSPELL_DRAINED_2_Timer = 8000; - m_uiSPELL_DRAINED_3_Timer = 1000; - break; - case CLASS_MAGE: - m_uiSPELL_DRAINED_1_Timer = 1000; - m_uiSPELL_DRAINED_2_Timer = 5000; - m_uiSPELL_DRAINED_3_Timer = 9000; - break; - case CLASS_ROGUE: - m_uiSPELL_DRAINED_1_Timer = 3000; - m_uiSPELL_DRAINED_2_Timer = 7000; - m_uiSPELL_DRAINED_3_Timer = 1000; - break; - case CLASS_WARRIOR: - m_uiSPELL_DRAINED_1_Timer = 4000; - m_uiSPELL_DRAINED_2_Timer = 2000; - break; - case CLASS_DRUID: - m_uiSPELL_DRAINED_1_Timer = 9000; - m_uiSPELL_DRAINED_2_Timer = 5000; - m_uiSPELL_DRAINED_3_Timer = 1000; - break; - case CLASS_SHAMAN: - m_uiSPELL_DRAINED_1_Timer = 12000; - m_uiSPELL_DRAINED_2_Timer = 7000; - m_uiSPELL_DRAINED_3_Timer = 2000; - break; - case CLASS_HUNTER: - m_uiSPELL_DRAINED_1_Timer = 3000; - m_uiSPELL_DRAINED_2_Timer = 7000; - m_uiSPELL_DRAINED_3_Timer = 9000; - break; - } - - } - else - m_uiSPELL_SIPHON_SOUL_Timer -= uiDiff; - - - - - - switch(m_uiSPELL_CLASS) - { - case CLASS_PRIEST: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_PR_HEAL, false); - - m_uiSPELL_DRAINED_1_Timer = 10000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - m_creature->CastSpell(m_creature->getVictim(),SPELL_PR_PSYCHIC_SCREAM, false); - - m_uiSPELL_DRAINED_2_Timer = 10000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_PR_MIND_BLAST, false); - m_uiSPELL_DRAINED_3_Timer = 10000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - - case CLASS_PALADIN: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_PA_HOLY_LIGHT, false); - m_uiSPELL_DRAINED_1_Timer = 10000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - m_creature->CastSpell(m_creature->getVictim(),SPELL_PA_CONSECRATION, false); - m_uiSPELL_DRAINED_2_Timer = 100000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - m_uiSPELL_DRAINED_3_Timer = 200000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_WARLOCK: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_WL_CURSE_OF_DOOM, false); - - m_uiSPELL_DRAINED_1_Timer = 70000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_WL_UNSTABLE_AFFL, false); - - m_uiSPELL_DRAINED_2_Timer = 9000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_WL_RAIN_OF_FIRE, false); - - m_uiSPELL_DRAINED_3_Timer = 11000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_MAGE: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_MG_FROSTBOLT, false); - - m_uiSPELL_DRAINED_1_Timer = 6000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_MG_FIREBALL, false); - - m_uiSPELL_DRAINED_2_Timer = 6000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - m_creature->CastSpell(m_creature->getVictim(),SPELL_MG_FROST_NOVA, false); - - m_uiSPELL_DRAINED_3_Timer = 10000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_ROGUE: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_RO_SLICE_DICE, false); - - m_uiSPELL_DRAINED_1_Timer = 7000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_RO_BLIND, false); - - - m_uiSPELL_DRAINED_2_Timer = 10000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_RO_WOUND_POISON, false); - - m_uiSPELL_DRAINED_3_Timer = 70000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_WARRIOR: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_WR_WHIRLWIND, false); - - m_uiSPELL_DRAINED_1_Timer = 9000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_WR_SPELL_REFLECT, false); - - m_uiSPELL_DRAINED_2_Timer = 7000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - m_uiSPELL_DRAINED_3_Timer = 70000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - - case CLASS_DRUID: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_DR_LIFEBLOOM, false); - - m_uiSPELL_DRAINED_1_Timer = 10000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_DR_MOONFIRE, false); - - m_uiSPELL_DRAINED_2_Timer = 7000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_DR_THORNS, false); - - m_uiSPELL_DRAINED_3_Timer = 70000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_SHAMAN: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_SH_FIRE_NOVA, false); - - m_uiSPELL_DRAINED_1_Timer = 70000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - m_creature->CastSpell(m_creature,SPELL_SH_HEALING_WAVE, false); - - m_uiSPELL_DRAINED_2_Timer = 10000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_SH_CHAIN_LIGHT, false); - - m_uiSPELL_DRAINED_3_Timer = 7000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - case CLASS_HUNTER: - if(m_uiSPELL_DRAINED_1_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_HU_EXPLOSIVE_TRAP, false); - - m_uiSPELL_DRAINED_1_Timer = 10000; - } - else - m_uiSPELL_DRAINED_1_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_2_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_HU_FREEZING_TRAP, false); - - m_uiSPELL_DRAINED_2_Timer = 10000; - } - else - m_uiSPELL_DRAINED_2_Timer -=uiDiff; - - if(m_uiSPELL_DRAINED_3_Timer < uiDiff){ - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - m_creature->CastSpell(pTarget,SPELL_HU_SNAKE_TRAP, false); - - m_uiSPELL_DRAINED_3_Timer = 10000; - } - else - m_uiSPELL_DRAINED_3_Timer -=uiDiff; - - break; - } - - - - - DoMeleeAttackIfReady(); } }; @@ -1058,7 +652,7 @@ struct MANGOS_DLL_DECL mob_darkheartAI : public boss_malacrass_addAI { if (IsEnemyPlayerInRangeForSpell(SPELL_PSYCHIC_WAIL)) { - m_creature->CastSpell(m_creature->getVictim(), SPELL_PSYCHIC_WAIL,true); + DoCastSpellIfCan(m_creature->getVictim(), SPELL_PSYCHIC_WAIL); m_uiPsychicWailTimer = 12000; } else diff --git a/scripts/eastern_kingdoms/zulaman/boss_zuljin.cpp b/scripts/eastern_kingdoms/zulaman/boss_zuljin.cpp index 389b897..e9e01ee 100644 --- a/scripts/eastern_kingdoms/zulaman/boss_zuljin.cpp +++ b/scripts/eastern_kingdoms/zulaman/boss_zuljin.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 - 2011 ScriptDev2 +/* Copyright (C) 2006 - 2011 ScriptDev2 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -16,7 +16,7 @@ /* ScriptData SDName: Boss_Zuljin -SD%Complete: 90 +SD%Complete: 0 SDComment: SDCategory: Zul'Aman EndScriptData */ @@ -29,7 +29,7 @@ enum SAY_INTRO = -1568056, SAY_AGGRO = -1568057, SAY_BEAR_TRANSFORM = -1568058, - SAY_EAGLE_TRANSFORM = -1568058, + SAY_EAGLE_TRANSFORM = -1568059, SAY_LYNX_TRANSFORM = -1568060, SAY_DRAGONHAWK_TRANSFORM = -1568061, SAY_FIRE_BREATH = -1568062, @@ -51,7 +51,7 @@ enum SPELL_ZAP_INFORM = 42577, SPELL_ZAP_DAMAGE = 43137, //1250 damage SPELL_SUMMON_CYCLONE = 43112, //summon four feather vortex - CREATURE_FEATHER_VORTEX = 24136, // 24136 + CREATURE_FEATHER_VORTEX = 24136, SPELL_CYCLONE_VISUAL = 43119, //trigger 43147 visual SPELL_CYCLONE_PASSIVE = 43120, //trigger 43121 (4y aoe) every second @@ -68,7 +68,7 @@ enum SPELL_SUMMON_PILLAR = 43216, //summon 24187 CREATURE_COLUMN_OF_FIRE = 24187, SPELL_PILLAR_TRIGGER = 43218, //trigger 43217 - + // Cosmetic SPELL_SPIRIT_AURA = 42466, SPELL_SIPHON_SOUL = 43501, @@ -83,12 +83,11 @@ enum WEAPON_ID = 33975, - PHASE_TROLL = 1, - PHASE_BEAR = 2, - PHASE_EAGLE = 3, - PHASE_LYNX = 4, - PHASE_DRAGONHAWK = 5 - + PHASE_BEAR = 0, + PHASE_EAGLE = 1, + PHASE_LYNX = 2, + PHASE_DRAGONHAWK = 3, + PHASE_TROLL = 4 }; //coords for going for changing form @@ -98,139 +97,16 @@ const float CENTER_Z = 45.111477f; struct MANGOS_DLL_DECL boss_zuljinAI : public ScriptedAI { - - uint32 m_uiPhase; - bool Phase3Reached; - - - // Troll Form timer - - uint32 m_uiSPELL_WHIRLWIND_timer; - uint32 m_uiSPELL_GRIEVOUS_THROW_timer; - - // Bear Form timer - uint32 m_uiSPELL_OVERPOWER_timer; - uint32 m_uiSPELL_CREEPING_PARALYSIS_timer; - - // Eagle Form - Creature* FEATHER_VORTEX[4]; - Unit* PLAYERS[12]; - uint32 PLAYER_counter; - uint32 FEATHER_VORTEX_TARGET_timer; - uint32 RAID_MANA[12]; - - // Lynx Form timer - - uint32 m_uiSPELL_CLAW_RAGE_timer; - uint32 SPELL_CLAW_RAGE_DAMAGE_timer; - uint32 m_uiSPELL_LYNX_RUSH_timer; - uint32 LYNX_RUSH_counter; - uint32 SPELL_CLAW_RAGE_counter; - Unit* CLAW_RAGE_TARGET; - - // Dragonhawk Form timer - - uint32 m_uiSPELL_FLAME_WHIRL_timer; - uint32 m_uiSPELL_FLAME_BREATH_timer; - uint32 m_uiSPELL_PILLAR_timer; - - - boss_zuljinAI(Creature* pCreature) : ScriptedAI(pCreature) { m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); Reset(); - } ScriptedInstance* m_pInstance; void Reset() { - - DespawnVortex(); - Phase3Reached = false; - m_uiPhase = 1; - - m_uiSPELL_GRIEVOUS_THROW_timer = 8000; - m_uiSPELL_WHIRLWIND_timer = 14000; - - m_uiSPELL_CREEPING_PARALYSIS_timer = 3000; - m_uiSPELL_OVERPOWER_timer = 6000; - - FEATHER_VORTEX_TARGET_timer = 4000; - PLAYER_counter = 0; - - m_uiSPELL_CLAW_RAGE_timer = 7000; - m_uiSPELL_LYNX_RUSH_timer = 4000; - LYNX_RUSH_counter = 9; - - m_uiSPELL_FLAME_WHIRL_timer = 4000; - m_uiSPELL_FLAME_BREATH_timer = 8000; - m_uiSPELL_PILLAR_timer = 3000; - } - - void GetPlayers() - { - ThreatList const& tList = m_creature->getThreatManager().getThreatList(); - std::vector targets; - - if (tList.empty()) - return; - - //begin + 1 , so we don't target the one with the highest threat - ThreatList::const_iterator itr = tList.begin(); - std::advance(itr, 0); - for(; itr!= tList.end(); ++itr) //store the threat list in a different container - { - Unit *target = m_creature->GetMap()->GetUnit((*itr)->getUnitGuid()); - //only on alive players - if (target && target->GetTypeId() == TYPEID_PLAYER && target->getPowerType() == POWER_MANA){ - PLAYERS[PLAYER_counter] = target; - PLAYER_counter ++; - } - } - - for(uint32 i = 0; i < PLAYER_counter; i++) - { - RAID_MANA[i] = PLAYERS[i]->GetPower(POWER_MANA); - } - } - - void EnergyStormDamage() - { - for(uint32 i = 0; i < PLAYER_counter; i++) - { - if(RAID_MANA[i] > PLAYERS[i]->GetPower(POWER_MANA)) - { - m_creature->CastSpell(PLAYERS[i],SPELL_ZAP_DAMAGE,false); - } - RAID_MANA[i] = PLAYERS[i]->GetPower(POWER_MANA); - } - } - - void DespawnVortex() - { - for(int i = 0; i < 4; i++) - { - if(Phase3Reached) - { - FEATHER_VORTEX[i]->SetVisibility(VISIBILITY_OFF); - FEATHER_VORTEX[i]->SetDeathState(JUST_DIED); - } - } - } - - void NextVortexTarget() - { - for(int i = 0; i < 4; i++) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - FEATHER_VORTEX[i]->GetMotionMaster()->Clear(false); - FEATHER_VORTEX[i]->GetMotionMaster()->MoveFollow(pTarget,0,0); - } - } } void Aggro(Unit* pWho) @@ -253,192 +129,11 @@ struct MANGOS_DLL_DECL boss_zuljinAI : public ScriptedAI m_pInstance->SetData(TYPE_ZULJIN, DONE); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(const uint32 diff) { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - if(m_uiPhase < 2 && m_creature->GetHealthPercent() < 80) - { - m_uiPhase = 2; - DoResetThreat(); - - m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z); - m_creature->CastSpell(m_creature,SPELL_SHAPE_OF_THE_BEAR,true); - } - - if(m_uiPhase < 3 && m_creature->GetHealthPercent() < 60) - { - m_uiPhase = 3; - m_creature->CastSpell(m_creature,SPELL_SHAPE_OF_THE_EAGLE,true); - m_creature->GetMotionMaster()->Clear(); - m_creature->GetMotionMaster()->MovePoint(1,CENTER_X,CENTER_Y,CENTER_Z); - - m_creature->CastSpell(m_creature,SPELL_ENERGY_STORM,false); - - for(int i = 0; i < 4; i++) - { - FEATHER_VORTEX[i] = m_creature->SummonCreature(CREATURE_FEATHER_VORTEX,CENTER_X+i*10,CENTER_Y+i*10,CENTER_Z,0,TEMPSUMMON_CORPSE_DESPAWN,1000000000); - FEATHER_VORTEX[i]->setFaction(m_creature->getFaction()); - FEATHER_VORTEX[i]->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - FEATHER_VORTEX[i]->SetLevel(73); - FEATHER_VORTEX[i]->SetSpeedRate(MOVE_WALK,3); - // FEATHER_VORTEX[i]->SetSpeedRate(MOVE_RUN,10); - FEATHER_VORTEX[i]->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - - - Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0); - - FEATHER_VORTEX[i]->GetMotionMaster()->Clear(false); - FEATHER_VORTEX[i]->GetMotionMaster()->MoveFollow(pTarget,0,0); - } - for(int i = 0; i < 4; i++) - { - FEATHER_VORTEX[i]->CastSpell(FEATHER_VORTEX[i],SPELL_CYCLONE_PASSIVE,true,0,0,m_creature->GetGUID()); - FEATHER_VORTEX[i]->CastSpell(FEATHER_VORTEX[i],SPELL_CYCLONE_VISUAL,true,0,0,m_creature->GetGUID()); - - } - GetPlayers(); - Phase3Reached = true; - - //m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z); - //m_creature->SendMonsterMove(CENTER_X, CENTER_Y, CENTER_Z, false); - } - - if(m_uiPhase < 4 && m_creature->GetHealthPercent() < 40) - { - DespawnVortex(); - m_uiPhase = 4; - m_creature->CastSpell(m_creature,SPELL_SHAPE_OF_THE_LYNX,true); - m_creature->GetMotionMaster()->Clear(); - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); - DoResetThreat(); - - //m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z); - //m_creature->SendMonsterMove(CENTER_X, CENTER_Y, CENTER_Z, false); - } - if(m_uiPhase < 5 && m_creature->GetHealthPercent() < 20) - { - m_uiPhase = 5; - LYNX_RUSH_counter = 9; - m_creature->CastSpell(m_creature,SPELL_SHAPE_OF_THE_DRAGONHAWK,true); - DoResetThreat(); - - //m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z); - //m_creature->SendMonsterMove(CENTER_X, CENTER_Y, CENTER_Z, false); - //m_creature->GetMotionMaster()->Mutate(new TargetedMovementGenerator(*m_creature->getVictim())); - } - - switch(m_uiPhase) - { - case PHASE_TROLL: - if(m_uiSPELL_GRIEVOUS_THROW_timer < uiDiff) - { - DoCastSpellIfCan(m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0), SPELL_GRIEVOUS_THROW, false); - m_uiSPELL_GRIEVOUS_THROW_timer = 15000; - }else m_uiSPELL_GRIEVOUS_THROW_timer -= uiDiff; - - if(m_uiSPELL_WHIRLWIND_timer < uiDiff) - { - DoCastSpellIfCan(m_creature, SPELL_WHIRLWIND, false); - m_uiSPELL_WHIRLWIND_timer = 15000; - }else m_uiSPELL_WHIRLWIND_timer -= uiDiff; - - break; - - case PHASE_BEAR: - if(m_uiSPELL_OVERPOWER_timer < uiDiff) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_OVERPOWER, false); - m_uiSPELL_OVERPOWER_timer = 6000; - }else m_uiSPELL_OVERPOWER_timer -= uiDiff; - - if(m_uiSPELL_CREEPING_PARALYSIS_timer < uiDiff) - { - DoCastSpellIfCan(m_creature,SPELL_CREEPING_PARALYSIS, false); - m_uiSPELL_CREEPING_PARALYSIS_timer = 12000; - }else m_uiSPELL_CREEPING_PARALYSIS_timer -= uiDiff; - - break; - - case PHASE_EAGLE: - EnergyStormDamage(); - - if(FEATHER_VORTEX_TARGET_timer < uiDiff) - { - NextVortexTarget(); - FEATHER_VORTEX_TARGET_timer = 5000; - }else FEATHER_VORTEX_TARGET_timer -= uiDiff; - - break; - - case PHASE_LYNX: - if(m_uiSPELL_CLAW_RAGE_timer < uiDiff) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - DoCastSpellIfCan(pTarget,SPELL_CLAW_RAGE_HASTE, false); - DoCastSpellIfCan(pTarget,SPELL_CLAW_RAGE_DAMAGE, false); - m_uiSPELL_CLAW_RAGE_timer = 12000; - } - }else m_uiSPELL_CLAW_RAGE_timer -= uiDiff; - - if(m_uiSPELL_LYNX_RUSH_timer < uiDiff) - { - for (uint8 i = 0; i < LYNX_RUSH_counter; i++) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - DoCastSpellIfCan(pTarget, SPELL_CLAW_RAGE_HASTE, false); //Lynx rush haste do not work - DoCastSpellIfCan(pTarget ,SPELL_LYNX_RUSH_DAMAGE, false); - } - } - m_uiSPELL_LYNX_RUSH_timer = 12000; - }else m_uiSPELL_LYNX_RUSH_timer -= uiDiff; - - break; - - case PHASE_DRAGONHAWK: - if(m_uiSPELL_FLAME_BREATH_timer < uiDiff) - { - if(m_uiSPELL_FLAME_WHIRL_timer < 13000) - { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_FLAME_BREATH, false); - m_uiSPELL_FLAME_BREATH_timer = urand(7000,15000); - } - }else m_uiSPELL_FLAME_BREATH_timer -= uiDiff; - - if(m_uiSPELL_FLAME_WHIRL_timer < uiDiff) - { - DoCastSpellIfCan(m_creature,SPELL_FLAME_WHIRL, false); - m_uiSPELL_FLAME_WHIRL_timer = 15000; - }else m_uiSPELL_FLAME_WHIRL_timer -= uiDiff; - - if(m_uiSPELL_PILLAR_timer < uiDiff) - { - if(m_uiSPELL_FLAME_WHIRL_timer < 13000) - { - if(Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - Creature* pillar_dummy = m_creature->SummonCreature(CREATURE_COLUMN_OF_FIRE,pTarget->GetPositionX(),pTarget->GetPositionY(), pTarget->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000); - pillar_dummy->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pillar_dummy->setFaction(m_creature->getFaction()); - pillar_dummy->SetLevel(73); - pillar_dummy->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pillar_dummy->SetVisibility(VISIBILITY_OFF); //wenns script fertig ist, damit man den dummy nicht sieht - pillar_dummy->CastSpell(pillar_dummy,SPELL_PILLAR_TRIGGER,true,0,0,m_creature->GetGUID()); - pillar_dummy->GetMotionMaster()->Clear(false); - pillar_dummy->GetMotionMaster()->MoveIdle(); - m_uiSPELL_PILLAR_timer = 3333; - } - } - }else m_uiSPELL_PILLAR_timer -= uiDiff; - - break; - } - - if(SPELL_CLAW_RAGE_counter == 0 && LYNX_RUSH_counter == 0 && m_uiPhase != PHASE_EAGLE) DoMeleeAttackIfReady(); } }; diff --git a/scripts/eastern_kingdoms/zulaman/instance_zulaman.cpp b/scripts/eastern_kingdoms/zulaman/instance_zulaman.cpp index f5191c3..918147d 100644 --- a/scripts/eastern_kingdoms/zulaman/instance_zulaman.cpp +++ b/scripts/eastern_kingdoms/zulaman/instance_zulaman.cpp @@ -35,8 +35,6 @@ struct MANGOS_DLL_DECL instance_zulaman : public ScriptedInstance uint32 m_uiEventTimer; uint32 m_uiEventMinuteStep; - uint32 m_uiDOOR_Timer; - uint32 m_uiGongCount; uint64 m_uiAkilzonGUID; @@ -64,8 +62,6 @@ struct MANGOS_DLL_DECL instance_zulaman : public ScriptedInstance m_uiEventTimer = MINUTE*IN_MILLISECONDS; m_uiEventMinuteStep = MINUTE/3; - m_uiDOOR_Timer = 0; - m_uiGongCount = 0; m_uiAkilzonGUID = 0; @@ -330,14 +326,6 @@ struct MANGOS_DLL_DECL instance_zulaman : public ScriptedInstance void Update(uint32 uiDiff) { - if(m_uiDOOR_Timer < uiDiff){ - - DoUseDoorOrButton(m_uiMassiveGateGUID); - m_uiDOOR_Timer = 1200000000; - } - else - m_uiDOOR_Timer -= uiDiff; - if (GetData(TYPE_EVENT_RUN) == IN_PROGRESS) { if (m_uiEventTimer <= uiDiff) diff --git a/scripts/eastern_kingdoms/zulaman/zulaman.cpp b/scripts/eastern_kingdoms/zulaman/zulaman.cpp index 4a52b15..e4e8570 100644 --- a/scripts/eastern_kingdoms/zulaman/zulaman.cpp +++ b/scripts/eastern_kingdoms/zulaman/zulaman.cpp @@ -183,12 +183,12 @@ bool GossipHello_npc_harrison_jones_za(Player* pPlayer, Creature* pCreature) ScriptedInstance* pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pInstance && pInstance->GetData(TYPE_EVENT_RUN) == NOT_STARTED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/examples/example_creature.cpp b/scripts/examples/example_creature.cpp index 8fa9e7b..3d23f24 100644 --- a/scripts/examples/example_creature.cpp +++ b/scripts/examples/example_creature.cpp @@ -256,7 +256,7 @@ CreatureAI* GetAI_example_creature(Creature* pCreature) bool GossipHello_example_creature(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_GREET, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_GREET, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/examples/example_escort.cpp b/scripts/examples/example_escort.cpp index 213dd1e..68351a1 100644 --- a/scripts/examples/example_escort.cpp +++ b/scripts/examples/example_escort.cpp @@ -179,7 +179,7 @@ CreatureAI* GetAI_example_escort(Creature* pCreature) bool GossipHello_example_escort(Player* pPlayer, Creature* pCreature) { - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); pPlayer->PrepareGossipMenu(pCreature, pPlayer->GetDefaultGossipMenuForSource(pCreature)); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); @@ -201,19 +201,19 @@ bool GossipSelect_example_escort(Player* pPlayer, Creature* pCreature, uint32 ui pPlayer->CLOSE_GOSSIP_MENU(); if (pEscortAI) - pEscortAI->Start(true, pPlayer->GetGUID()); + pEscortAI->Start(true, pPlayer); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); if (pEscortAI) - pEscortAI->Start(false, pPlayer->GetGUID()); + pEscortAI->Start(false, pPlayer); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->CLOSE_GOSSIP_MENU(); if (pEscortAI) - pEscortAI->Start(true, pPlayer->GetGUID()); + pEscortAI->Start(true, pPlayer); break; default: return false; // nothing defined -> mangos core handling diff --git a/scripts/examples/example_gossip_codebox.cpp b/scripts/examples/example_gossip_codebox.cpp index 8243204..3502c54 100644 --- a/scripts/examples/example_gossip_codebox.cpp +++ b/scripts/examples/example_gossip_codebox.cpp @@ -44,7 +44,7 @@ bool GossipHello_example_gossip_codebox(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1, "", 0, true); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID()); + pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/ashenvale.cpp b/scripts/kalimdor/ashenvale.cpp index e6af555..679579f 100644 --- a/scripts/kalimdor/ashenvale.cpp +++ b/scripts/kalimdor/ashenvale.cpp @@ -211,7 +211,7 @@ bool QuestAccept_npc_muglash(Player* pPlayer, Creature* pCreature, const Quest* DoScriptText(SAY_MUG_START1, pCreature); pCreature->setFaction(FACTION_ESCORT_H_PASSIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } @@ -292,7 +292,7 @@ bool QuestAccept_npc_ruul_snowhoof(Player* pPlayer, Creature* pCreature, const Q pCreature->SetStandState(UNIT_STAND_STATE_STAND); if (npc_ruul_snowhoofAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -407,7 +407,7 @@ bool QuestAccept_npc_torek(Player* pPlayer, Creature* pCreature, const Quest* pQ DoScriptText(SAY_READY, pCreature, pPlayer); if (npc_torekAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); } return true; diff --git a/scripts/kalimdor/azshara.cpp b/scripts/kalimdor/azshara.cpp index 2d2c857..816d076 100644 --- a/scripts/kalimdor/azshara.cpp +++ b/scripts/kalimdor/azshara.cpp @@ -132,7 +132,7 @@ struct MANGOS_DLL_DECL npc_rizzle_sprysprocketAI : public npc_escortAI //this may be wrong void JustSummoned(Creature* pSummoned) { - //pSummoned->CastSpell(pSummoned,SPELL_PERIODIC_GRENADE,false,0,0,m_creature->GetGUID()); + //pSummoned->CastSpell(pSummoned,SPELL_PERIODIC_GRENADE,false,NULL,NULL,m_creature->GetObjectGuid()); } void UpdateEscortAI(const uint32 uiDiff) @@ -190,7 +190,7 @@ bool GossipHello_npc_rizzle_sprysprocket(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_MOONSTONE) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -308,7 +308,7 @@ CreatureAI* GetAI_mobs_spitelashes(Creature* pCreature) bool GossipHello_npc_loramus_thalipedes(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(2744) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Can you help me?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); @@ -316,7 +316,7 @@ bool GossipHello_npc_loramus_thalipedes(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(3141) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Tell me your story", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -332,23 +332,23 @@ bool GossipSelect_npc_loramus_thalipedes(Player* pPlayer, Creature* pCreature, u case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Please continue", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); - pPlayer->SEND_GOSSIP_MENU(1813, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1813, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+21: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I do not understand", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22); - pPlayer->SEND_GOSSIP_MENU(1814, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1814, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+22: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Indeed", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23); - pPlayer->SEND_GOSSIP_MENU(1815, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1815, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+23: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I will do this with or your help, Loramus", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24); - pPlayer->SEND_GOSSIP_MENU(1816, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1816, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+24: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Yes", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25); - pPlayer->SEND_GOSSIP_MENU(1817, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1817, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+25: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/kalimdor/azuremyst_isle.cpp b/scripts/kalimdor/azuremyst_isle.cpp index f4ed445..8c473e4 100644 --- a/scripts/kalimdor/azuremyst_isle.cpp +++ b/scripts/kalimdor/azuremyst_isle.cpp @@ -56,7 +56,7 @@ struct MANGOS_DLL_DECL npc_draenei_survivorAI : public ScriptedAI { npc_draenei_survivorAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint64 m_uiCaster; + ObjectGuid m_casterGuid; uint32 m_uiSayThanksTimer; uint32 m_uiRunAwayTimer; @@ -66,7 +66,7 @@ struct MANGOS_DLL_DECL npc_draenei_survivorAI : public ScriptedAI void Reset() { - m_uiCaster = 0; + m_casterGuid.Clear(); m_uiSayThanksTimer = 0; m_uiRunAwayTimer = 0; @@ -110,7 +110,7 @@ struct MANGOS_DLL_DECL npc_draenei_survivorAI : public ScriptedAI m_creature->CastSpell(m_creature, SPELL_STUNNED, true); - m_uiCaster = pCaster->GetGUID(); + m_casterGuid = pCaster->GetObjectGuid(); m_uiSayThanksTimer = 5000; } @@ -124,7 +124,7 @@ struct MANGOS_DLL_DECL npc_draenei_survivorAI : public ScriptedAI { m_creature->RemoveAurasDueToSpell(SPELL_IRRIDATION); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiCaster)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_casterGuid)) { if (pPlayer->GetTypeId() != TYPEID_PLAYER) return; @@ -137,7 +137,7 @@ struct MANGOS_DLL_DECL npc_draenei_survivorAI : public ScriptedAI case 3: DoScriptText(SAY_HEAL4, m_creature, pPlayer); break; } - pPlayer->TalkedToCreature(m_creature->GetEntry(),m_creature->GetGUID()); + pPlayer->TalkedToCreature(m_creature->GetEntry(), m_creature->GetObjectGuid()); } m_creature->GetMotionMaster()->Clear(); @@ -270,7 +270,7 @@ bool GossipHello_npc_engineer_spark_overgrind(Player* pPlayer, Creature* pCreatu if (pPlayer->GetQuestStatus(QUEST_GNOMERCY) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -378,7 +378,7 @@ bool QuestAccept_npc_magwin(Player* pPlayer, Creature* pCreature, const Quest* p pCreature->setFaction(10); if (npc_magwinAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -404,12 +404,12 @@ enum bool GossipHello_npc_susurrus(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->HasItemCount(ITEM_WHORL_OF_AIR,1,true)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_READY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/bloodmyst_isle.cpp b/scripts/kalimdor/bloodmyst_isle.cpp index 86b33c8..150ca86 100644 --- a/scripts/kalimdor/bloodmyst_isle.cpp +++ b/scripts/kalimdor/bloodmyst_isle.cpp @@ -80,10 +80,10 @@ bool GossipHello_npc_captured_sunhawk_agent(Player* pPlayer, Creature* pCreature if (pPlayer->HasAura(31609, EFFECT_INDEX_1) && pPlayer->GetQuestStatus(9756) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(9136, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9136, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(9134, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9134, pCreature->GetObjectGuid()); return true; } @@ -94,27 +94,27 @@ bool GossipSelect_npc_captured_sunhawk_agent(Player* pPlayer, Creature* pCreatur { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(9137, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9137, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(9138, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9138, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(9139, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9139, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(9140, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9140, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(9141, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9141, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->CLOSE_GOSSIP_MENU(); - pPlayer->TalkedToCreature(C_SUNHAWK_TRIGGER, pCreature->GetGUID()); + pPlayer->TalkedToCreature(C_SUNHAWK_TRIGGER, pCreature->GetObjectGuid()); break; } return true; diff --git a/scripts/kalimdor/boss_azuregos.cpp b/scripts/kalimdor/boss_azuregos.cpp index 88ff2d7..8592018 100644 --- a/scripts/kalimdor/boss_azuregos.cpp +++ b/scripts/kalimdor/boss_azuregos.cpp @@ -17,126 +17,139 @@ /* ScriptData SDName: Boss_Azuregos SD%Complete: 90 -SDComment: Teleport not included, spell reflect not effecting dots (Core problem) +SDComment: Spell reflect not effecting dots (Core problem) SDCategory: Azshara EndScriptData */ #include "precompiled.h" -#define SAY_TELEPORT -1000100 - -#define SPELL_MARKOFFROST 23182 -#define SPELL_MANASTORM 21097 -#define SPELL_CHILL 21098 -#define SPELL_FROSTBREATH 21099 -#define SPELL_REFLECT 22067 -#define SPELL_CLEAVE 8255 //Perhaps not right ID -#define SPELL_ENRAGE 23537 +enum +{ + SAY_TELEPORT = -1000100, + + SPELL_ARCANE_VACUUM = 21147, + SPELL_MARK_OF_FROST_PLAYER = 23182, + SPELL_MARK_OF_FROST_AURA = 23184, // Triggers 23186 on players that have 23182; unfortunatelly 23183 is missing from dbc + SPELL_MANA_STORM = 21097, + SPELL_CHILL = 21098, + SPELL_FROST_BREATH = 21099, + SPELL_REFLECT = 22067, + SPELL_CLEAVE = 19983, // Was 8255; this one is from wowhead and seems to be the correct one + SPELL_ENRAGE = 23537, +}; struct MANGOS_DLL_DECL boss_azuregosAI : public ScriptedAI { boss_azuregosAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint32 MarkOfFrost_Timer; - uint32 ManaStorm_Timer; - uint32 Chill_Timer; - uint32 Breath_Timer; - uint32 Teleport_Timer; - uint32 Reflect_Timer; - uint32 Cleave_Timer; - uint32 Enrage_Timer; - bool Enraged; + uint32 m_uiManaStormTimer; + uint32 m_uiChillTimer; + uint32 m_uiBreathTimer; + uint32 m_uiTeleportTimer; + uint32 m_uiReflectTimer; + uint32 m_uiCleaveTimer; + bool m_bEnraged; void Reset() { - MarkOfFrost_Timer = 35000; - ManaStorm_Timer = urand(5000, 17000); - Chill_Timer = urand(10000, 30000); - Breath_Timer = urand(2000, 8000); - Teleport_Timer = 30000; - Reflect_Timer = urand(15000, 30000); - Cleave_Timer = 7000; - Enrage_Timer = 0; - Enraged = false; + m_uiManaStormTimer = urand(5000, 17000); + m_uiChillTimer = urand(10000, 30000); + m_uiBreathTimer = urand(2000, 8000); + m_uiTeleportTimer = 30000; + m_uiReflectTimer = urand(15000, 30000); + m_uiCleaveTimer = 7000; + m_bEnraged = false; + } + + void KilledUnit(Unit* pVictim) + { + // Mark killed players with Mark of Frost + if (pVictim->GetTypeId() == TYPEID_PLAYER) + pVictim->CastSpell(pVictim, SPELL_MARK_OF_FROST_PLAYER, true, NULL, NULL, m_creature->GetObjectGuid()); } - void UpdateAI(const uint32 diff) + void Aggro(Unit* pWho) { - //Return since we have no target + // Boss aura which triggers the stun effect on dead players who resurrect + DoCastSpellIfCan(m_creature, SPELL_MARK_OF_FROST_AURA); + } + + void UpdateAI(const uint32 uiDiff) + { + // Return since we have no target if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - if (Teleport_Timer < diff) + if (m_uiTeleportTimer < uiDiff) { - DoScriptText(SAY_TELEPORT, m_creature); - - std::vector vGuids; - m_creature->FillGuidsListFromThreatList(vGuids); - for (std::vector::const_iterator i = vGuids.begin();i != vGuids.end(); ++i) + if (DoCastSpellIfCan(m_creature, SPELL_ARCANE_VACUUM) == CAST_OK) { - Unit* pUnit = m_creature->GetMap()->GetUnit(*i); - - if (pUnit && pUnit->GetTypeId() == TYPEID_PLAYER) - DoTeleportPlayer(pUnit, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ()+3, pUnit->GetOrientation()); + DoScriptText(SAY_TELEPORT, m_creature); + m_uiTeleportTimer = 30000; } + } + else + m_uiTeleportTimer -= uiDiff; - DoResetThreat(); - Teleport_Timer = 30000; - }else Teleport_Timer -= diff; - - // //MarkOfFrost_Timer - // if (MarkOfFrost_Timer < diff) - // { - // DoCastSpellIfCan(m_creature->getVictim(),SPELL_MARKOFFROST); - // MarkOfFrost_Timer = 25000; - // }else MarkOfFrost_Timer -= diff; - - //Chill_Timer - if (Chill_Timer < diff) + // Chill Timer + if (m_uiChillTimer < uiDiff) { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_CHILL); - Chill_Timer = urand(13000, 25000); - }else Chill_Timer -= diff; + if (DoCastSpellIfCan(m_creature, SPELL_CHILL) == CAST_OK) + m_uiChillTimer = urand(13000, 25000); + } + else + m_uiChillTimer -= uiDiff; - //Breath_Timer - if (Breath_Timer < diff) + // Breath Timer + if (m_uiBreathTimer < uiDiff) { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_FROSTBREATH); - Breath_Timer = urand(10000, 15000); - }else Breath_Timer -= diff; + if (DoCastSpellIfCan(m_creature, SPELL_FROST_BREATH) == CAST_OK) + m_uiBreathTimer = urand(10000, 15000); + } + else + m_uiBreathTimer -= uiDiff; - //ManaStorm_Timer - if (ManaStorm_Timer < diff) + // Mana Storm Timer + if (m_uiManaStormTimer < uiDiff) { - if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,0)) - DoCastSpellIfCan(target,SPELL_MANASTORM); - ManaStorm_Timer = urand(7500, 12500); - }else ManaStorm_Timer -= diff; + if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) + { + if (DoCastSpellIfCan(pTarget, SPELL_MANA_STORM) == CAST_OK) + m_uiManaStormTimer = urand(7500, 12500); + } + } + else + m_uiManaStormTimer -= uiDiff; - //Reflect_Timer - if (Reflect_Timer < diff) + // Reflect Timer + if (m_uiReflectTimer < uiDiff) { - DoCastSpellIfCan(m_creature,SPELL_REFLECT); - Reflect_Timer = urand(20000, 35000); - }else Reflect_Timer -= diff; + if (DoCastSpellIfCan(m_creature, SPELL_REFLECT) == CAST_OK) + m_uiReflectTimer = urand(20000, 35000); + } + else + m_uiReflectTimer -= uiDiff; - //Cleave_Timer - if (Cleave_Timer < diff) + // Cleave Timer + if (m_uiCleaveTimer < uiDiff) { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_CLEAVE); - Cleave_Timer = 7000; - }else Cleave_Timer -= diff; + if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_CLEAVE) == CAST_OK) + m_uiCleaveTimer = 7000; + } + else + m_uiCleaveTimer -= uiDiff; - //Enrage_Timer - if (m_creature->GetHealthPercent() < 26.0f && !Enraged) + // EnrageTimer + if (!m_bEnraged && m_creature->GetHealthPercent() < 26.0f) { - DoCastSpellIfCan(m_creature, SPELL_ENRAGE); - Enraged = true; + if (DoCastSpellIfCan(m_creature, SPELL_ENRAGE) == CAST_OK) + m_bEnraged = true; } DoMeleeAttackIfReady(); } }; + CreatureAI* GetAI_boss_azuregos(Creature* pCreature) { return new boss_azuregosAI(pCreature); @@ -144,9 +157,10 @@ CreatureAI* GetAI_boss_azuregos(Creature* pCreature) void AddSC_boss_azuregos() { - Script *newscript; - newscript = new Script; - newscript->Name = "boss_azuregos"; - newscript->GetAI = &GetAI_boss_azuregos; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "boss_azuregos"; + pNewScript->GetAI = &GetAI_boss_azuregos; + pNewScript->RegisterSelf(); } diff --git a/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.cpp b/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.cpp index 5376162..0157515 100644 --- a/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.cpp +++ b/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.cpp @@ -301,7 +301,7 @@ struct MANGOS_DLL_DECL npc_time_riftAI : public ScriptedAI if (Unit *Summon = m_creature->SummonCreature(creature_entry, x, y, z, m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000)) { - if (Creature *temp = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_MEDIVH))) + if (Creature *temp = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_MEDIVH))) Summon->AddThreat(temp); } } @@ -365,22 +365,22 @@ CreatureAI* GetAI_npc_time_rift(Creature* pCreature) bool GossipHello_npc_saat(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE && !pPlayer->HasItemCount(ITEM_CHRONO_BEACON,1)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_OBTAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10000, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10000, pCreature->GetObjectGuid()); return true; } else if (pPlayer->GetQuestRewardStatus(QUEST_OPENING_PORTAL) && !pPlayer->HasItemCount(ITEM_CHRONO_BEACON,1)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_OBTAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10001, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10001, pCreature->GetObjectGuid()); return true; } - pPlayer->SEND_GOSSIP_MENU(10002, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10002, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.h b/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.h index 8afa2fb..5435100 100644 --- a/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.h +++ b/scripts/kalimdor/caverns_of_time/dark_portal/dark_portal.h @@ -12,7 +12,6 @@ enum TYPE_MEDIVH = 1, TYPE_RIFT = 2, - DATA_MEDIVH = 10, DATA_PORTAL_COUNT = 11, DATA_SHIELD = 12, @@ -42,4 +41,40 @@ enum RIFT_BOSS = 1 }; +class MANGOS_DLL_DECL instance_dark_portal : public ScriptedInstance +{ + public: + instance_dark_portal(Map* pMap); + + void Initialize(); + void OnPlayerEnter(Player* pPlayer); + void OnCreatureCreate(Creature* pCreature); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiData); + + void Update(uint32 uiDiff); + + private: + Creature* SummonedPortalBoss(Creature* pSource); + void DoSpawnPortal(); + bool CanProgressEvent(); + uint8 GetRiftWaveId(); + void Clear(); + void InitWorldState(bool bEnable = true); + + uint32 m_auiEncounter[MAX_ENCOUNTER]; + + uint32 m_uiRiftPortalCount; + uint32 m_uiShieldPercent; + uint8 m_uiRiftWaveCount; + uint8 m_uiRiftWaveId; + + uint32 m_uiNextPortalTimer; + + uint64 m_uiMedivhGUID; + uint8 m_uiCurrentRiftId; +}; + #endif diff --git a/scripts/kalimdor/caverns_of_time/dark_portal/instance_dark_portal.cpp b/scripts/kalimdor/caverns_of_time/dark_portal/instance_dark_portal.cpp index 1f28838..18b4566 100644 --- a/scripts/kalimdor/caverns_of_time/dark_portal/instance_dark_portal.cpp +++ b/scripts/kalimdor/caverns_of_time/dark_portal/instance_dark_portal.cpp @@ -50,274 +50,252 @@ static Wave RiftWaves[]= {NPC_AEONUS, 0} }; -struct MANGOS_DLL_DECL instance_dark_portal : public ScriptedInstance +instance_dark_portal::instance_dark_portal(Map* pMap) : ScriptedInstance(pMap), + m_uiMedivhGUID(0) { - instance_dark_portal(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; + Initialize(); +} - uint32 m_auiEncounter[MAX_ENCOUNTER]; +void instance_dark_portal::Initialize() +{ + Clear(); +} - uint32 m_uiRiftPortalCount; - uint32 m_uiShieldPercent; - uint8 m_uiRiftWaveCount; - uint8 m_uiRiftWaveId; +void instance_dark_portal::Clear() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - uint32 m_uiNextPortal_Timer; + m_uiRiftPortalCount = 0; + m_uiShieldPercent = 100; + m_uiRiftWaveCount = 0; + m_uiRiftWaveId = 0; - uint64 m_uiMedivhGUID; - uint8 m_uiCurrentRiftId; + m_uiCurrentRiftId = 0; - void Initialize() - { - m_uiMedivhGUID = 0; - Clear(); - } - - void Clear() - { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiRiftPortalCount = 0; - m_uiShieldPercent = 100; - m_uiRiftWaveCount = 0; - m_uiRiftWaveId = 0; + m_uiNextPortalTimer = 0; +} - m_uiCurrentRiftId = 0; +void instance_dark_portal::InitWorldState(bool bEnable /*= true*/) +{ + DoUpdateWorldState(WORLD_STATE_BM, bEnable ? 1 : 0); + DoUpdateWorldState(WORLD_STATE_BM_SHIELD, 100); + DoUpdateWorldState(WORLD_STATE_BM_RIFT, 0); +} - m_uiNextPortal_Timer = 0; - } +void instance_dark_portal::OnPlayerEnter(Player* pPlayer) +{ + if (m_auiEncounter[0] == IN_PROGRESS) + return; - void InitWorldState(bool Enable = true) - { - DoUpdateWorldState(WORLD_STATE_BM,Enable ? 1 : 0); - DoUpdateWorldState(WORLD_STATE_BM_SHIELD, 100); - DoUpdateWorldState(WORLD_STATE_BM_RIFT, 0); - } + pPlayer->SendUpdateWorldState(WORLD_STATE_BM, 0); +} - bool IsEncounterInProgress() const - { - if (m_auiEncounter[0] == IN_PROGRESS) - return true; +void instance_dark_portal::OnCreatureCreate(Creature* pCreature) +{ + if (pCreature->GetEntry() == NPC_MEDIVH) + m_uiMedivhGUID = pCreature->GetGUID(); +} +// what other conditions to check? +bool instance_dark_portal::CanProgressEvent() +{ + if (instance->GetPlayers().isEmpty()) return false; - } - void OnPlayerEnter(Player* pPlayer) - { - if (m_auiEncounter[0] == IN_PROGRESS) - return; - - pPlayer->SendUpdateWorldState(WORLD_STATE_BM, 0); - } + return true; +} - void OnCreatureCreate(Creature* pCreature) +uint8 instance_dark_portal::GetRiftWaveId() +{ + switch(m_uiRiftPortalCount) { - if (pCreature->GetEntry() == NPC_MEDIVH) - m_uiMedivhGUID = pCreature->GetGUID(); + case 6: + m_uiRiftWaveId = 2; + return 1; + case 12: + m_uiRiftWaveId = 4; + return 3; + case 18: + return 5; + default: + return m_uiRiftWaveId; } +} - // what other conditions to check? - bool CanProgressEvent() +void instance_dark_portal::SetData(uint32 uiType, uint32 uiData) +{ + switch(uiType) { - if (instance->GetPlayers().isEmpty()) - return false; + case TYPE_MEDIVH: + if (uiData == SPECIAL && m_auiEncounter[0] == IN_PROGRESS) + { + --m_uiShieldPercent; - return true; - } + DoUpdateWorldState(WORLD_STATE_BM_SHIELD, m_uiShieldPercent); - uint8 GetRiftWaveId() - { - switch(m_uiRiftPortalCount) - { - case 6: - m_uiRiftWaveId = 2; - return 1; - case 12: - m_uiRiftWaveId = 4; - return 3; - case 18: - return 5; - default: - return m_uiRiftWaveId; - } - } - - void SetData(uint32 uiType, uint32 uiData) - { - switch(uiType) - { - case TYPE_MEDIVH: - if (uiData == SPECIAL && m_auiEncounter[0] == IN_PROGRESS) + if (!m_uiShieldPercent) { - --m_uiShieldPercent; - - DoUpdateWorldState(WORLD_STATE_BM_SHIELD, m_uiShieldPercent); - - if (!m_uiShieldPercent) + if (Creature* pMedivh = instance->GetCreature(m_uiMedivhGUID)) { - if (Creature* pMedivh = instance->GetCreature(m_uiMedivhGUID)) + if (pMedivh->isAlive()) { - if (pMedivh->isAlive()) - { - pMedivh->DealDamage(pMedivh, pMedivh->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - m_auiEncounter[0] = FAIL; - m_auiEncounter[1] = NOT_STARTED; - } + pMedivh->DealDamage(pMedivh, pMedivh->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_auiEncounter[0] = FAIL; + m_auiEncounter[1] = NOT_STARTED; } } } - else + } + else + { + if (uiData == IN_PROGRESS) { - if (uiData == IN_PROGRESS) - { - debug_log("SD2: Instance Dark Portal: Starting event."); - InitWorldState(); - m_auiEncounter[1] = IN_PROGRESS; - m_uiNextPortal_Timer = 15000; - } + debug_log("SD2: Instance Dark Portal: Starting event."); + InitWorldState(); + m_auiEncounter[1] = IN_PROGRESS; + m_uiNextPortalTimer = 15000; + } - if (uiData == DONE) - { - // this may be completed further out in the post-event - debug_log("SD2: Instance Dark Portal: Event completed."); + if (uiData == DONE) + { + // this may be completed further out in the post-event + debug_log("SD2: Instance Dark Portal: Event completed."); - Map::PlayerList const& players = instance->GetPlayers(); + Map::PlayerList const& players = instance->GetPlayers(); - if (!players.isEmpty()) + if (!players.isEmpty()) + { + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + if (Player* pPlayer = itr->getSource()) { - if (Player* pPlayer = itr->getSource()) - { - if (pPlayer->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE) - pPlayer->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL); - - if (pPlayer->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE) - pPlayer->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH); - } + if (pPlayer->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE) + pPlayer->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL); + + if (pPlayer->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE) + pPlayer->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH); } } } - - m_auiEncounter[0] = uiData; } - break; - case TYPE_RIFT: - if (uiData == SPECIAL) - { - //if (m_uiRiftPortalCount < 7) - m_uiNextPortal_Timer = 5000; - } - else - m_auiEncounter[1] = uiData; - break; - } - } - uint32 GetData(uint32 uiType) - { - switch(uiType) - { - case TYPE_MEDIVH: - return m_auiEncounter[0]; - case TYPE_RIFT: - return m_auiEncounter[1]; - case DATA_PORTAL_COUNT: - return m_uiRiftPortalCount; - case DATA_SHIELD: - return m_uiShieldPercent; - } - return 0; + m_auiEncounter[0] = uiData; + } + break; + case TYPE_RIFT: + if (uiData == SPECIAL) + { + if (m_uiRiftPortalCount < 7) + m_uiNextPortalTimer = 5000; + } + else + m_auiEncounter[1] = uiData; + break; } +} - uint64 GetData64(uint32 uiData) +uint32 instance_dark_portal::GetData(uint32 uiType) +{ + switch(uiType) { - if (uiData == DATA_MEDIVH) - return m_uiMedivhGUID; + case TYPE_MEDIVH: return m_auiEncounter[0]; + case TYPE_RIFT: return m_auiEncounter[1]; + case DATA_PORTAL_COUNT: return m_uiRiftPortalCount; + case DATA_SHIELD: return m_uiShieldPercent; - return 0; + default: + return 0; } +} - Creature* SummonedPortalBoss(Creature* pSource) - { - uint32 uiEntry = RiftWaves[GetRiftWaveId()].PortalBoss; +uint64 instance_dark_portal::GetData64(uint32 uiData) +{ + if (uiData == NPC_MEDIVH) + return m_uiMedivhGUID; + + return 0; +} - if (uiEntry == RIFT_BOSS) - uiEntry = RandRiftBoss(); +Creature* instance_dark_portal::SummonedPortalBoss(Creature* pSource) +{ + uint32 uiEntry = RiftWaves[GetRiftWaveId()].PortalBoss; - float x, y, z; - pSource->GetRandomPoint(pSource->GetPositionX(), pSource->GetPositionY(), pSource->GetPositionZ(), 10.0f, x, y, z); - // uncomment the following if something doesn't work correctly, otherwise just delete - // pSource->UpdateAllowedPositionZ(x, y, z); + if (uiEntry == RIFT_BOSS) + uiEntry = RandRiftBoss(); - debug_log("SD2: Instance Dark Portal: Summoning rift boss uiEntry %u.", uiEntry); + float x, y, z; + pSource->GetRandomPoint(pSource->GetPositionX(), pSource->GetPositionY(), pSource->GetPositionZ(), 10.0f, x, y, z); + // uncomment the following if something doesn't work correctly, otherwise just delete + // pSource->UpdateAllowedPositionZ(x, y, z); - if (Creature* pSummoned = pSource->SummonCreature(uiEntry, x, y, z, pSource->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000)) - return pSummoned; + debug_log("SD2: Instance Dark Portal: Summoning rift boss uiEntry %u.", uiEntry); - debug_log("SD2: Instance Dark Portal: what just happened there? No boss, no loot, no fun..."); - return NULL; - } + if (Creature* pSummoned = pSource->SummonCreature(uiEntry, x, y, z, pSource->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000)) + return pSummoned; - void DoSpawnPortal() + debug_log("SD2: Instance Dark Portal: what just happened there? No boss, no loot, no fun..."); + return NULL; +} + +void instance_dark_portal::DoSpawnPortal() +{ + if (Creature* pMedivh = instance->GetCreature(m_uiMedivhGUID)) { - if (Creature* pMedivh = instance->GetCreature(m_uiMedivhGUID)) - { - uint8 uiTmp = urand(0, 2); + uint8 uiTmp = urand(0, 2); - if (uiTmp >= m_uiCurrentRiftId) - ++uiTmp; + if (uiTmp >= m_uiCurrentRiftId) + ++uiTmp; - debug_log("SD2: Instance Dark Portal: Creating Time Rift at locationId %i (old locationId was %u).", uiTmp, m_uiCurrentRiftId); + debug_log("SD2: Instance Dark Portal: Creating Time Rift at locationId %i (old locationId was %u).", uiTmp, m_uiCurrentRiftId); - m_uiCurrentRiftId = uiTmp; + m_uiCurrentRiftId = uiTmp; - if (Creature* pTemp = pMedivh->SummonCreature(NPC_TIME_RIFT, PortalLocation[uiTmp][0], PortalLocation[uiTmp][1], PortalLocation[uiTmp][2], PortalLocation[uiTmp][3], TEMPSUMMON_CORPSE_DESPAWN, 0)) - { - pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + if (Creature* pTemp = pMedivh->SummonCreature(NPC_TIME_RIFT, PortalLocation[uiTmp][0], PortalLocation[uiTmp][1], PortalLocation[uiTmp][2], PortalLocation[uiTmp][3], TEMPSUMMON_CORPSE_DESPAWN, 0)) + { + pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - if (Creature* pBoss = SummonedPortalBoss(pTemp)) + if (Creature* pBoss = SummonedPortalBoss(pTemp)) + { + if (pBoss->GetEntry() == NPC_AEONUS) + pBoss->AddThreat(pMedivh); + else { - if (pBoss->GetEntry() == NPC_AEONUS) - pBoss->AddThreat(pMedivh); - else - { - pBoss->AddThreat(pTemp); - pTemp->CastSpell(pBoss, SPELL_RIFT_CHANNEL, false); - } + pBoss->AddThreat(pTemp); + pTemp->CastSpell(pBoss, SPELL_RIFT_CHANNEL, false); } } } } +} - void Update(uint32 uiDiff) - { - if (m_auiEncounter[1] != IN_PROGRESS) - return; +void instance_dark_portal::Update(uint32 uiDiff) +{ + if (m_auiEncounter[1] != IN_PROGRESS) + return; - //add delay timer? - if (!CanProgressEvent()) - { - Clear(); - return; - } + //add delay timer? + if (!CanProgressEvent()) + { + Clear(); + return; + } - if (m_uiNextPortal_Timer) + if (m_uiNextPortalTimer) + { + if (m_uiNextPortalTimer <= uiDiff) { - if (m_uiNextPortal_Timer <= uiDiff) - { - ++m_uiRiftPortalCount; + ++m_uiRiftPortalCount; - DoUpdateWorldState(WORLD_STATE_BM_RIFT, m_uiRiftPortalCount); + DoUpdateWorldState(WORLD_STATE_BM_RIFT, m_uiRiftPortalCount); - DoSpawnPortal(); - m_uiNextPortal_Timer = RiftWaves[GetRiftWaveId()].NextPortalTime; - } - else - m_uiNextPortal_Timer -= uiDiff; + DoSpawnPortal(); + m_uiNextPortalTimer = RiftWaves[GetRiftWaveId()].NextPortalTime; } + else + m_uiNextPortalTimer -= uiDiff; } -}; +} InstanceData* GetInstanceData_instance_dark_portal(Map* pMap) { @@ -326,9 +304,10 @@ InstanceData* GetInstanceData_instance_dark_portal(Map* pMap) void AddSC_instance_dark_portal() { - Script* newscript; - newscript = new Script; - newscript->Name = "instance_dark_portal"; - newscript->GetInstanceData = &GetInstanceData_instance_dark_portal; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_dark_portal"; + pNewScript->GetInstanceData = &GetInstanceData_instance_dark_portal; + pNewScript->RegisterSelf(); } diff --git a/scripts/kalimdor/caverns_of_time/hyjal/boss_archimonde.cpp b/scripts/kalimdor/caverns_of_time/hyjal/boss_archimonde.cpp index 942283d..19f5c33 100644 --- a/scripts/kalimdor/caverns_of_time/hyjal/boss_archimonde.cpp +++ b/scripts/kalimdor/caverns_of_time/hyjal/boss_archimonde.cpp @@ -338,7 +338,7 @@ struct MANGOS_DLL_DECL boss_archimondeAI : public ScriptedAI if (pSummoned->GetEntry() == CREATURE_DOOMFIRE) { pSummoned->CastSpell(pSummoned,SPELL_DOOMFIRE_SPAWN,false); - pSummoned->CastSpell(pSummoned,SPELL_DOOMFIRE,true,0,0,m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, SPELL_DOOMFIRE, true, NULL, NULL, m_creature->GetObjectGuid()); if (Creature* pDoomfireSpirit = m_creature->GetMap()->GetCreature(DoomfireSpiritGUID)) { diff --git a/scripts/kalimdor/caverns_of_time/hyjal/hyjal.cpp b/scripts/kalimdor/caverns_of_time/hyjal/hyjal.cpp index 124f3ae..8afe4ca 100644 --- a/scripts/kalimdor/caverns_of_time/hyjal/hyjal.cpp +++ b/scripts/kalimdor/caverns_of_time/hyjal/hyjal.cpp @@ -83,7 +83,7 @@ bool GossipHello_npc_jaina_proudmoore(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetObjectGuid()); return true; } @@ -155,7 +155,7 @@ bool GossipHello_npc_thrall(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetObjectGuid()); return true; } @@ -196,7 +196,7 @@ bool GossipHello_npc_tyrande_whisperwind(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TYRANDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); } - pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/scripts/kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp index dfd93b3..f1fe3dc 100644 --- a/scripts/kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp +++ b/scripts/kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp @@ -65,7 +65,7 @@ enum bool GossipHello_npc_brazen(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_READY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -74,7 +74,7 @@ bool GossipSelect_npc_brazen(Player* pPlayer, Creature* pCreature, uint32 uiSend if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { if (!pPlayer->HasItemCount(ITEM_ENTRY_BOMBS, 1)) - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_HAS_BOMBS, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_HAS_BOMBS, pCreature->GetObjectGuid()); else { pPlayer->CLOSE_GOSSIP_MENU(); @@ -98,7 +98,7 @@ enum bool GossipHello_npc_erozion(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); ScriptedInstance* pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); @@ -109,7 +109,7 @@ bool GossipHello_npc_erozion(Player* pPlayer, Creature* pCreature) /*if (!pPlayer->GetQuestRewardStatus(QUEST_ENTRY_RETURN) && pPlayer->GetQuestStatus(QUEST_ENTRY_RETURN) == QUEST_STATUS_COMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] Teleport please, i'm tired.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);*/ - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DEFAULT, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DEFAULT, pCreature->GetObjectGuid()); return true; } @@ -121,7 +121,7 @@ bool GossipSelect_npc_erozion(Player* pPlayer, Creature* pCreature, uint32 uiSen if (Item* pItem = pPlayer->StoreNewItemInInventorySlot(ITEM_ENTRY_BOMBS, 1)) pPlayer->SendNewItem(pItem, 1, true, false); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_GOT_ITEM, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_GOT_ITEM, pCreature->GetObjectGuid()); } if (uiAction == GOSSIP_ACTION_INFO_DEF+2) @@ -437,8 +437,8 @@ struct MANGOS_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI { if (Player* pPlayer = GetPlayerForEscort()) { - if (npc_escortAI* pTarethaAI = dynamic_cast(pTaretha->AI())) - pTarethaAI->Start(true, pPlayer->GetGUID()); + if (npc_tarethaAI* pTarethaAI = dynamic_cast(pTaretha->AI())) + pTarethaAI->Start(true, pPlayer); } } @@ -624,8 +624,8 @@ bool GossipHello_npc_thrall_old_hillsbrad(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) { - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); - pPlayer->SendPreparedQuest(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); + pPlayer->SendPreparedQuest(pCreature->GetObjectGuid()); } if (instance_old_hillsbrad* pInstance = (instance_old_hillsbrad*)pCreature->GetInstanceData()) @@ -633,19 +633,19 @@ bool GossipHello_npc_thrall_old_hillsbrad(Player* pPlayer, Creature* pCreature) if (pInstance->GetData(TYPE_BARREL_DIVERSION) == DONE && !pInstance->GetData(TYPE_THRALL_EVENT)) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ID_UNKNOWN_TEXT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_START, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_START, pCreature->GetObjectGuid()); } if (pInstance->GetData(TYPE_THRALL_PART1) == DONE && !pInstance->GetData(TYPE_THRALL_PART2)) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SKARLOC1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC1, pCreature->GetObjectGuid()); } if (pInstance->GetData(TYPE_THRALL_PART2) == DONE && !pInstance->GetData(TYPE_THRALL_PART3)) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TARREN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_TARREN, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_TARREN, pCreature->GetObjectGuid()); } } return true; @@ -667,19 +667,19 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player* pPlayer, Creature* pCreature, DoScriptText(SAY_TH_START_EVENT_PART1, pCreature); if (npc_thrall_old_hillsbradAI* pThrallAI = dynamic_cast(pCreature->AI())) - pThrallAI->Start(true, pPlayer->GetGUID()); + pThrallAI->Start(true, pPlayer); break; } case GOSSIP_ACTION_INFO_DEF+2: { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SKARLOC2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+20); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC2, pCreature->GetObjectGuid()); break; } case GOSSIP_ACTION_INFO_DEF+20: { - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_SKARLOC3, pCreature->GetObjectGuid()); pCreature->SummonCreature(NPC_SKARLOC_MOUNT, 2038.81f, 270.26f, 63.20f, 5.41f, TEMPSUMMON_TIMED_DESPAWN,12000); pInstance->SetData(TYPE_THRALL_PART2, IN_PROGRESS); @@ -830,7 +830,7 @@ bool GossipHello_npc_taretha(Player* pPlayer, Creature* pCreature) if (pInstance && pInstance->GetData(TYPE_THRALL_PART3) == DONE && pInstance->GetData(TYPE_THRALL_PART4) == NOT_STARTED) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_EPOCH1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_EPOCH1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_EPOCH1, pCreature->GetObjectGuid()); } return true; @@ -843,7 +843,7 @@ bool GossipSelect_npc_taretha(Player* pPlayer, Creature* pCreature, uint32 uiSen if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_EPOCH2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_EPOCH2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_EPOCH2, pCreature->GetObjectGuid()); } if (uiAction == GOSSIP_ACTION_INFO_DEF+2) diff --git a/scripts/kalimdor/darkshore.cpp b/scripts/kalimdor/darkshore.cpp index 95fb9f8..84b3f17 100644 --- a/scripts/kalimdor/darkshore.cpp +++ b/scripts/kalimdor/darkshore.cpp @@ -298,7 +298,7 @@ bool QuestAccept_npc_prospector_remtravel(Player* pPlayer, Creature* pCreature, pCreature->setFaction(FACTION_ESCORT_A_NEUTRAL_PASSIVE); if (npc_prospector_remtravelAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); } return true; @@ -360,7 +360,7 @@ bool GossipHello_npc_threshwackonator(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_GYROMAST_REV) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_INSERT_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/desolace.cpp b/scripts/kalimdor/desolace.cpp index f0f997c..68ba70a 100644 --- a/scripts/kalimdor/desolace.cpp +++ b/scripts/kalimdor/desolace.cpp @@ -157,13 +157,13 @@ bool GossipHello_npc_aged_dying_ancient_kodo(Player* pPlayer, Creature* pCreatur if (pPlayer->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) && pCreature->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF)) { //the expected quest objective - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); pPlayer->RemoveAurasDueToSpell(SPELL_KODO_KOMBO_PLAYER_BUFF); pCreature->GetMotionMaster()->MoveIdle(); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -210,7 +210,7 @@ bool QuestAccept_npc_dalinda_malem(Player* pPlayer, Creature* pCreature, const Q { // TODO This faction change needs confirmation, also possible that we need to drop her PASSIVE flag pCreature->setFaction(FACTION_ESCORT_A_NEUTRAL_PASSIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } return true; diff --git a/scripts/kalimdor/dustwallow_marsh.cpp b/scripts/kalimdor/dustwallow_marsh.cpp index d0e5ce0..66aee3e 100644 --- a/scripts/kalimdor/dustwallow_marsh.cpp +++ b/scripts/kalimdor/dustwallow_marsh.cpp @@ -211,10 +211,10 @@ bool GossipHello_npc_deserter_agitator(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_TRAITORS_AMONG_US) == QUEST_STATUS_INCOMPLETE) { pCreature->setFaction(FACTION_THER_DESERTER); - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -234,12 +234,12 @@ enum bool GossipHello_npc_lady_jaina_proudmoore(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_JAINAS_AUTOGRAPH) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_JAINA, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -248,7 +248,7 @@ bool GossipSelect_npc_lady_jaina_proudmoore(Player* pPlayer, Creature* pCreature { if (uiAction == GOSSIP_SENDER_INFO) { - pPlayer->SEND_GOSSIP_MENU(7012, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7012, pCreature->GetObjectGuid()); pPlayer->CastSpell(pPlayer, SPELL_JAINAS_AUTOGRAPH, false); } return true; @@ -364,7 +364,7 @@ bool QuestAccept_npc_morokk(Player* pPlayer, Creature* pCreature, const Quest* p if (pQuest->GetQuestId() == QUEST_CHALLENGE_MOROKK) { if (npc_morokkAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); return true; } @@ -383,15 +383,15 @@ enum bool GossipHello_npc_nat_pagle(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetQuestRewardStatus(QUEST_NATS_MEASURING_TAPE)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(7640, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7640, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(7638, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7638, pCreature->GetObjectGuid()); return true; } @@ -399,7 +399,7 @@ bool GossipHello_npc_nat_pagle(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_nat_pagle(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -694,7 +694,7 @@ bool QuestAccept_npc_ogron(Player* pPlayer, Creature* pCreature, const Quest* pQ { if (npc_ogronAI* pEscortAI = dynamic_cast(pCreature->AI())) { - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); pCreature->setFaction(FACTION_ESCORT_N_FRIEND_PASSIVE); DoScriptText(SAY_OGR_START, pCreature, pPlayer); } @@ -795,7 +795,7 @@ bool GossipHello_npc_cassa_crimsonwing(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_SURVEY_ALCAZ) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_RIDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/felwood.cpp b/scripts/kalimdor/felwood.cpp index 07a4222..6712a0c 100644 --- a/scripts/kalimdor/felwood.cpp +++ b/scripts/kalimdor/felwood.cpp @@ -141,7 +141,7 @@ bool GossipHello_npc_corrupt_saber(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RELEASE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -180,7 +180,7 @@ enum bool GossipHello_npcs_riverbreeze_and_silversky(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); switch (pCreature->GetEntry()) { @@ -188,21 +188,21 @@ bool GossipHello_npcs_riverbreeze_and_silversky(Player* pPlayer, Creature* pCrea if (pPlayer->GetQuestRewardStatus(QUEST_CLEANSING_FELWOOD_A)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(2848, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2848, pCreature->GetObjectGuid()); }else if (pPlayer->GetTeam() == HORDE) - pPlayer->SEND_GOSSIP_MENU(2845, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2845, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(2844, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2844, pCreature->GetObjectGuid()); break; case NPC_MAYBESS_RIVERBREEZE: if (pPlayer->GetQuestRewardStatus(QUEST_CLEANSING_FELWOOD_H)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(2849, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2849, pCreature->GetObjectGuid()); }else if (pPlayer->GetTeam() == ALLIANCE) - pPlayer->SEND_GOSSIP_MENU(2843, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2843, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(2842, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2842, pCreature->GetObjectGuid()); break; } @@ -355,7 +355,7 @@ struct MANGOS_DLL_DECL npc_kroshiusAI : public ScriptedAI Reset(); } - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiKnockBackTimer; uint32 m_uiPhaseTimer; @@ -364,7 +364,7 @@ struct MANGOS_DLL_DECL npc_kroshiusAI : public ScriptedAI void Reset() { m_uiKnockBackTimer = urand(5000, 8000); - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); if (!m_uiPhase) { @@ -383,7 +383,7 @@ struct MANGOS_DLL_DECL npc_kroshiusAI : public ScriptedAI m_uiPhase = 1; m_uiPhaseTimer = 2500; - m_uiPlayerGUID = pSource->GetGUID(); + m_playerGuid = pSource->GetObjectGuid(); // TODO: A visual Flame Circle around the mob still missing } @@ -417,7 +417,7 @@ struct MANGOS_DLL_DECL npc_kroshiusAI : public ScriptedAI // TODO workaround will better idea m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (m_creature->IsWithinDistInMap(pPlayer, 30.0f)) AttackStart(pPlayer); diff --git a/scripts/kalimdor/feralas.cpp b/scripts/kalimdor/feralas.cpp index 7ec9248..0aa016f 100644 --- a/scripts/kalimdor/feralas.cpp +++ b/scripts/kalimdor/feralas.cpp @@ -31,12 +31,12 @@ EndScriptData */ bool GossipHello_npc_gregan_brewspewer(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetQuestStatus(3909) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Buy somethin', will ya?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(2433, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2433, pCreature->GetObjectGuid()); return true; } @@ -45,10 +45,10 @@ bool GossipSelect_npc_gregan_brewspewer(Player* pPlayer, Creature* pCreature, ui if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(2434, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2434, pCreature->GetObjectGuid()); } if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -155,7 +155,7 @@ bool QuestAccept_npc_oox22fe(Player* pPlayer, Creature* pCreature, const Quest* pCreature->setFaction(FACTION_ESCORT_H_PASSIVE); if (npc_oox22feAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -166,8 +166,8 @@ bool QuestAccept_npc_oox22fe(Player* pPlayer, Creature* pCreature, const Quest* bool GossipHello_npc_screecher_spirit(Player* pPlayer, Creature* pCreature) { - pPlayer->SEND_GOSSIP_MENU(2039, pCreature->GetGUID()); - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2039, pCreature->GetObjectGuid()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); return true; diff --git a/scripts/kalimdor/moonglade.cpp b/scripts/kalimdor/moonglade.cpp index 25c5d9d..660e494 100644 --- a/scripts/kalimdor/moonglade.cpp +++ b/scripts/kalimdor/moonglade.cpp @@ -50,13 +50,13 @@ enum bool GossipHello_npc_bunthen_plainswind(Player* pPlayer, Creature* pCreature) { if (pPlayer->getClass() != CLASS_DRUID) - pPlayer->SEND_GOSSIP_MENU(4916, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4916, pCreature->GetObjectGuid()); else if (pPlayer->GetTeam() != HORDE) { if (pPlayer->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(4917, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4917, pCreature->GetObjectGuid()); } else if (pPlayer->getClass() == CLASS_DRUID && pPlayer->GetTeam() == HORDE) { @@ -65,7 +65,7 @@ bool GossipHello_npc_bunthen_plainswind(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(4918, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4918, pCreature->GetObjectGuid()); } return true; } @@ -83,10 +83,10 @@ bool GossipSelect_npc_bunthen_plainswind(Player* pPlayer, Creature* pCreature, u break; case GOSSIP_ACTION_INFO_DEF + 2: - pPlayer->SEND_GOSSIP_MENU(5373, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5373, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: - pPlayer->SEND_GOSSIP_MENU(5376, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5376, pCreature->GetObjectGuid()); break; } return true; @@ -153,7 +153,7 @@ struct MANGOS_DLL_DECL npc_clintar_dw_spiritAI : public npc_escortAI break; case 49: DoScriptText(SAY_END, m_creature, pPlayer); - pPlayer->TalkedToCreature(m_creature->GetEntry(), m_creature->GetGUID()); + pPlayer->TalkedToCreature(m_creature->GetEntry(), m_creature->GetObjectGuid()); break; } } @@ -180,7 +180,7 @@ struct MANGOS_DLL_DECL npc_clintar_dw_spiritAI : public npc_escortAI } //called only from EffectDummy - void DoStart(uint64 uiPlayerGuid) + void DoStart(Unit* pStarter) { //not the best way, maybe check in DummyEffect if this creature are "free" and not in escort. if (HasEscortState(STATE_ESCORT_ESCORTING)) @@ -188,7 +188,7 @@ struct MANGOS_DLL_DECL npc_clintar_dw_spiritAI : public npc_escortAI m_creature->SetVisibility(VISIBILITY_ON); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - Start(false, uiPlayerGuid); + Start(false, pStarter && pStarter->GetTypeId() == TYPEID_PLAYER ? (Player*)pStarter : NULL); } void JustSummoned(Creature* summoned) @@ -221,7 +221,7 @@ bool EffectDummyCreature_npc_clintar_dw_spirit(Unit *pCaster, uint32 spellId, Sp //done here, escort can start if (npc_clintar_dw_spiritAI* pSpiritAI = dynamic_cast(pCreatureTarget->AI())) - pSpiritAI->DoStart(pCaster->GetGUID()); + pSpiritAI->DoStart(pCaster); //always return true when we are handling this spell and effect return true; @@ -244,10 +244,10 @@ bool GossipHello_npc_great_bear_spirit(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(5929) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(5930) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(4719, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4719, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(4718, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4718, pCreature->GetObjectGuid()); return true; } @@ -259,18 +259,18 @@ bool GossipSelect_npc_great_bear_spirit(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(4721, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4721, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(4733, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4733, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(4734, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4734, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: - pPlayer->SEND_GOSSIP_MENU(4735, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4735, pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(5929)==QUEST_STATUS_INCOMPLETE) pPlayer->AreaExploredOrEventHappens(5929); if (pPlayer->GetQuestStatus(5930)==QUEST_STATUS_INCOMPLETE) @@ -290,13 +290,13 @@ bool GossipSelect_npc_great_bear_spirit(Player* pPlayer, Creature* pCreature, ui bool GossipHello_npc_silva_filnaveth(Player* pPlayer, Creature* pCreature) { if (pPlayer->getClass() != CLASS_DRUID) - pPlayer->SEND_GOSSIP_MENU(4913, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4913, pCreature->GetObjectGuid()); else if (pPlayer->GetTeam() != ALLIANCE) { if (pPlayer->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(4915, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4915, pCreature->GetObjectGuid()); } else if (pPlayer->getClass() == CLASS_DRUID && pPlayer->GetTeam() == ALLIANCE) { @@ -305,7 +305,7 @@ bool GossipHello_npc_silva_filnaveth(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(4914, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4914, pCreature->GetObjectGuid()); } return true; } @@ -323,10 +323,10 @@ bool GossipSelect_npc_silva_filnaveth(Player* pPlayer, Creature* pCreature, uint break; case GOSSIP_ACTION_INFO_DEF + 2: - pPlayer->SEND_GOSSIP_MENU(5374, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5374, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: - pPlayer->SEND_GOSSIP_MENU(5375, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5375, pCreature->GetObjectGuid()); break; } return true; diff --git a/scripts/kalimdor/mulgore.cpp b/scripts/kalimdor/mulgore.cpp index f770096..7c9b66c 100644 --- a/scripts/kalimdor/mulgore.cpp +++ b/scripts/kalimdor/mulgore.cpp @@ -50,7 +50,7 @@ struct MANGOS_DLL_DECL npc_kyle_the_frenziedAI : public ScriptedAI bool m_bEvent; bool m_bIsMovingToLunch; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiEventTimer; uint8 m_uiEventPhase; @@ -58,7 +58,7 @@ struct MANGOS_DLL_DECL npc_kyle_the_frenziedAI : public ScriptedAI { m_bEvent = false; m_bIsMovingToLunch = false; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_uiEventTimer = 5000; m_uiEventPhase = 0; @@ -71,7 +71,7 @@ struct MANGOS_DLL_DECL npc_kyle_the_frenziedAI : public ScriptedAI if (!m_creature->getVictim() && !m_bEvent && pSpell->Id == SPELL_LUNCH) { if (pCaster->GetTypeId() == TYPEID_PLAYER) - m_uiPlayerGUID = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE) { @@ -110,7 +110,7 @@ struct MANGOS_DLL_DECL npc_kyle_the_frenziedAI : public ScriptedAI switch(m_uiEventPhase) { case 1: - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { GameObject* pGo = pPlayer->GetGameObject(SPELL_LUNCH); @@ -140,8 +140,8 @@ struct MANGOS_DLL_DECL npc_kyle_the_frenziedAI : public ScriptedAI m_creature->HandleEmote(EMOTE_STATE_USESTANDING); break; case 3: - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) - pPlayer->TalkedToCreature(m_creature->GetEntry(), m_creature->GetGUID()); + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) + pPlayer->TalkedToCreature(m_creature->GetEntry(), m_creature->GetObjectGuid()); m_creature->UpdateEntry(NPC_KYLE_FRIENDLY); break; @@ -175,12 +175,12 @@ CreatureAI* GetAI_npc_kyle_the_frenzied(Creature* pCreature) bool GossipHello_npc_skorn_whitecloud(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (!pPlayer->GetQuestRewardStatus(770)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Tell me a story, Skorn.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(522, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(522, pCreature->GetObjectGuid()); return true; } @@ -188,7 +188,7 @@ bool GossipHello_npc_skorn_whitecloud(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_skorn_whitecloud(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_INFO_DEF) - pPlayer->SEND_GOSSIP_MENU(523, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(523, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/orgrimmar.cpp b/scripts/kalimdor/orgrimmar.cpp index 1671368..4e2fa27 100644 --- a/scripts/kalimdor/orgrimmar.cpp +++ b/scripts/kalimdor/orgrimmar.cpp @@ -38,12 +38,12 @@ EndContentData */ bool GossipHello_npc_neeru_fireblade(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_5727) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "You may speak frankly, Neeru...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(4513, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4513, pCreature->GetObjectGuid()); return true; } @@ -53,7 +53,7 @@ bool GossipSelect_npc_neeru_fireblade(Player* pPlayer, Creature* pCreature, uint { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] ...", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(4513, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(4513, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); @@ -80,7 +80,7 @@ struct MANGOS_DLL_DECL npc_shenthulAI : public ScriptedAI bool CanEmote; uint32 Salute_Timer; uint32 Reset_Timer; - uint64 playerGUID; + ObjectGuid m_playerGuid; void Reset() { @@ -88,7 +88,7 @@ struct MANGOS_DLL_DECL npc_shenthulAI : public ScriptedAI CanEmote = false; Salute_Timer = 6000; Reset_Timer = 0; - playerGUID = 0; + m_playerGuid.Clear(); } void ReceiveEmote(Player* pPlayer, uint32 emote) @@ -109,7 +109,7 @@ struct MANGOS_DLL_DECL npc_shenthulAI : public ScriptedAI { if (Reset_Timer < diff) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(playerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (pPlayer->GetTypeId() == TYPEID_PLAYER && pPlayer->GetQuestStatus(QUEST_SHATTERED_SALUTE) == QUEST_STATUS_INCOMPLETE) pPlayer->FailQuest(QUEST_SHATTERED_SALUTE); @@ -147,7 +147,7 @@ bool QuestAccept_npc_shenthul(Player* pPlayer, Creature* pCreature, const Quest* if (npc_shenthulAI* pShenAI = dynamic_cast(pCreature->AI())) { pShenAI->CanTalk = true; - pShenAI->playerGUID = pPlayer->GetGUID(); + pShenAI->m_playerGuid = pPlayer->GetObjectGuid(); } } return true; @@ -204,12 +204,12 @@ CreatureAI* GetAI_npc_thrall_warchief(Creature* pCreature) bool GossipHello_npc_thrall_warchief(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_6566) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Please share your wisdom with me, Warchief.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -219,27 +219,27 @@ bool GossipSelect_npc_thrall_warchief(Player* pPlayer, Creature* pCreature, uint { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What discoveries?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(5733, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5733, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Usurper?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(5734, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5734, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "With all due respect, Warchief - why not allow them to be destroyed? Does this not strengthen our position?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(5735, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5735, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I... I did not think of it that way, Warchief.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(5736, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5736, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I live only to serve, Warchief! My life is empty and meaningless without your guidance.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(5737, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5737, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Of course, Warchief!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7); - pPlayer->SEND_GOSSIP_MENU(5738, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5738, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/kalimdor/razorfen_downs/razorfen_downs.cpp b/scripts/kalimdor/razorfen_downs/razorfen_downs.cpp index 3e3681c..9911231 100644 --- a/scripts/kalimdor/razorfen_downs/razorfen_downs.cpp +++ b/scripts/kalimdor/razorfen_downs/razorfen_downs.cpp @@ -17,15 +17,17 @@ /* ScriptData SDName: Razorfen_Downs SD%Complete: 100 -SDComment: Support for Henry Stern(2 recipes) +SDComment: Support for Henry Stern(2 recipes), Quest 3525 SDCategory: Razorfen Downs EndScriptData */ /* ContentData npc_henry_stern +npc_belnistrasz EndContentData */ #include "precompiled.h" +#include "escort_ai.h" /*### # npc_henry_stern @@ -52,7 +54,7 @@ bool GossipHello_npc_henry_stern (Player* pPlayer, Creature* pCreature) if (pPlayer->GetBaseSkillValue(SKILL_ALCHEMY) >= 180 && !pPlayer->HasSpell(SPELL_MIGHT_TROLLS_BLOOD_POTION)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_POTION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -61,25 +63,290 @@ bool GossipSelect_npc_henry_stern (Player* pPlayer, Creature* pCreature, uint32 if (uiAction == GOSSIP_ACTION_INFO_DEF + 1) { pCreature->CastSpell(pPlayer, SPELL_TEACHING_GOLDTHORN_TEA, true); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_TEA_ANSWER, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_TEA_ANSWER, pCreature->GetObjectGuid()); } if (uiAction == GOSSIP_ACTION_INFO_DEF + 2) { - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_POTION_ANSWER, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_POTION_ANSWER, pCreature->GetObjectGuid()); pCreature->CastSpell(pPlayer, SPELL_TEACHING_MIGHTY_TROLLS_BLOOD_POTION, true); } return true; } +/*### +# npc_belnistrasz +####*/ + +enum +{ + QUEST_EXTINGUISHING_THE_IDOL = 3525, + + SAY_BELNISTRASZ_READY = -1129005, + SAY_BELNISTRASZ_START_RIT = -1129006, + SAY_BELNISTRASZ_AGGRO_1 = -1129007, + SAY_BELNISTRASZ_AGGRO_2 = -1129008, + SAY_BELNISTRASZ_3_MIN = -1129009, + SAY_BELNISTRASZ_2_MIN = -1129010, + SAY_BELNISTRASZ_1_MIN = -1129011, + SAY_BELNISTRASZ_FINISH = -1129012, + + NPC_IDOL_ROOM_SPAWNER = 8611, + + NPC_WITHERED_BATTLE_BOAR = 7333, + NPC_WITHERED_QUILGUARD = 7329, + NPC_DEATHS_HEAD_GEOMANCER = 7335, + NPC_PLAGUEMAW_THE_ROTTING = 7356, + + GO_BELNISTRASZ_BRAZIER = 152097, + + SPELL_ARCANE_INTELLECT = 13326, // use this somewhere (he has it as default) + SPELL_FIREBALL = 9053, + SPELL_FROST_NOVA = 11831, + SPELL_IDOL_SHUTDOWN = 12774, + + // summon spells only exist in 1.x + //SPELL_SUMMON_1 = 12694, // NPC_WITHERED_BATTLE_BOAR + //SPELL_SUMMON_2 = 14802, // NPC_DEATHS_HEAD_GEOMANCER + //SPELL_SUMMON_3 = 14801, // NPC_WITHERED_QUILGUARD +}; + +static float m_fSpawnerCoord[3][4]= +{ + {2582.79f, 954.392f, 52.4821f, 3.78736f}, + {2569.42f, 956.380f, 52.2732f, 5.42797f}, + {2570.62f, 942.393f, 53.7433f, 0.71558f} +}; + +struct MANGOS_DLL_DECL npc_belnistraszAI : public npc_escortAI +{ + npc_belnistraszAI(Creature* pCreature) : npc_escortAI(pCreature) + { + m_uiRitualPhase = 0; + m_uiRitualTimer = 1000; + m_bAggro = false; + Reset(); + } + + uint8 m_uiRitualPhase; + uint32 m_uiRitualTimer; + bool m_bAggro; + + uint32 m_uiFireballTimer; + uint32 m_uiFrostNovaTimer; + + void Reset() + { + m_uiFireballTimer = 1000; + m_uiFrostNovaTimer = 6000; + } + + void AttackedBy(Unit* pAttacker) + { + if (HasEscortState(STATE_ESCORT_PAUSED)) + { + if (!m_bAggro) + { + DoScriptText(urand(0,1) ? SAY_BELNISTRASZ_AGGRO_1 : SAY_BELNISTRASZ_AGGRO_1, m_creature, pAttacker); + m_bAggro = true; + } + + return; + } + + ScriptedAI::AttackedBy(pAttacker); + } + + void SpawnerSummon(Creature* pSummoner) + { + if (m_uiRitualPhase > 7) + { + pSummoner->SummonCreature(NPC_PLAGUEMAW_THE_ROTTING, pSummoner->GetPositionX(), pSummoner->GetPositionY(), pSummoner->GetPositionZ(), pSummoner->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); + return; + } + + for(int i = 0; i < 4; ++i) + { + uint32 uiEntry = 0; + + // ref TARGET_RANDOM_CIRCUMFERENCE_POINT + float angle = 2.0f * M_PI_F * rand_norm_f(); + float fX, fZ, fY; + pSummoner->GetClosePoint(fX, fZ, fY, 0.0f, 2.0f, angle); + + switch(i) + { + case 0: + case 1: + uiEntry = NPC_WITHERED_BATTLE_BOAR; + break; + case 2: + uiEntry = NPC_WITHERED_QUILGUARD; + break; + case 3: + uiEntry = NPC_DEATHS_HEAD_GEOMANCER; + break; + } + + pSummoner->SummonCreature(uiEntry, fX, fZ, fY, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); + } + } + + void JustSummoned(Creature* pSummoned) + { + SpawnerSummon(pSummoned); + } + + void DoSummonSpawner(int32 iType) + { + m_creature->SummonCreature(NPC_IDOL_ROOM_SPAWNER, m_fSpawnerCoord[iType][0], m_fSpawnerCoord[iType][1], m_fSpawnerCoord[iType][2], m_fSpawnerCoord[iType][3], TEMPSUMMON_TIMED_DESPAWN, 10000); + } + + void WaypointReached(uint32 uiPointId) + { + if (uiPointId == 24) + { + DoScriptText(SAY_BELNISTRASZ_START_RIT, m_creature); + SetEscortPaused(true); + } + } + + void UpdateEscortAI(const uint32 uiDiff) + { + if (HasEscortState(STATE_ESCORT_PAUSED)) + { + if (m_uiRitualTimer < uiDiff) + { + switch(m_uiRitualPhase) + { + case 0: + DoCastSpellIfCan(m_creature, SPELL_IDOL_SHUTDOWN); + m_uiRitualTimer = 1000; + break; + case 1: + DoSummonSpawner(irand(1, 3)); + m_uiRitualTimer = 39000; + break; + case 2: + DoSummonSpawner(irand(1, 3)); + m_uiRitualTimer = 20000; + break; + case 3: + DoScriptText(SAY_BELNISTRASZ_3_MIN, m_creature, m_creature); + m_uiRitualTimer = 20000; + break; + case 4: + DoSummonSpawner(irand(1, 3)); + m_uiRitualTimer = 40000; + break; + case 5: + DoSummonSpawner(irand(1, 3)); + DoScriptText(SAY_BELNISTRASZ_2_MIN, m_creature, m_creature); + m_uiRitualTimer = 40000; + break; + case 6: + DoSummonSpawner(irand(1, 3)); + m_uiRitualTimer = 20000; + break; + case 7: + DoScriptText(SAY_BELNISTRASZ_1_MIN, m_creature, m_creature); + m_uiRitualTimer = 40000; + break; + case 8: + DoSummonSpawner(irand(1, 3)); + m_uiRitualTimer = 20000; + break; + case 9: + DoScriptText(SAY_BELNISTRASZ_FINISH, m_creature, m_creature); + m_uiRitualTimer = 3000; + break; + case 10: + { + if (Player* pPlayer = GetPlayerForEscort()) + { + pPlayer->GroupEventHappens(QUEST_EXTINGUISHING_THE_IDOL, m_creature); + + if (GameObject* pGo = GetClosestGameObjectWithEntry(m_creature, GO_BELNISTRASZ_BRAZIER, 10.0f)) + { + if (!pGo->isSpawned()) + { + pGo->SetRespawnTime(HOUR*IN_MILLISECONDS); + pGo->Refresh(); + } + } + } + + m_creature->RemoveAurasDueToSpell(SPELL_IDOL_SHUTDOWN); + SetEscortPaused(false); + break; + } + } + + ++m_uiRitualPhase; + } + else + m_uiRitualTimer -= uiDiff; + + return; + } + + if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) + return; + + if (m_uiFireballTimer < uiDiff) + { + DoCastSpellIfCan(m_creature->getVictim(), SPELL_FIREBALL); + m_uiFireballTimer = urand(2000,3000); + } + else + m_uiFireballTimer -= uiDiff; + + if (m_uiFrostNovaTimer < uiDiff) + { + DoCastSpellIfCan(m_creature->getVictim(), SPELL_FROST_NOVA); + m_uiFrostNovaTimer = urand(10000,15000); + } + else + m_uiFrostNovaTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } +}; + +CreatureAI* GetAI_npc_belnistrasz(Creature* pCreature) +{ + return new npc_belnistraszAI(pCreature); +} + +bool QuestAccept_npc_belnistrasz(Player* pPlayer, Creature* pCreature, const Quest* pQuest) +{ + if (pQuest->GetQuestId() == QUEST_EXTINGUISHING_THE_IDOL) + { + if (npc_belnistraszAI* pEscortAI = dynamic_cast(pCreature->AI())) + { + pEscortAI->Start(true, pPlayer, pQuest); + DoScriptText(SAY_BELNISTRASZ_READY, pCreature, pPlayer); + pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE); + } + } + + return true; +} + void AddSC_razorfen_downs() { - Script* newscript; + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "npc_henry_stern"; + pNewScript->pGossipHello = &GossipHello_npc_henry_stern; + pNewScript->pGossipSelect = &GossipSelect_npc_henry_stern; + pNewScript->RegisterSelf(); - newscript = new Script; - newscript->Name = "npc_henry_stern"; - newscript->pGossipHello = &GossipHello_npc_henry_stern; - newscript->pGossipSelect = &GossipSelect_npc_henry_stern; - newscript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "npc_belnistrasz"; + pNewScript->GetAI = &GetAI_npc_belnistrasz; + pNewScript->pQuestAcceptNPC = &QuestAccept_npc_belnistrasz; + pNewScript->RegisterSelf(); } diff --git a/scripts/kalimdor/razorfen_kraul/razorfen_kraul.cpp b/scripts/kalimdor/razorfen_kraul/razorfen_kraul.cpp index 1beadb8..bb61e1a 100644 --- a/scripts/kalimdor/razorfen_kraul/razorfen_kraul.cpp +++ b/scripts/kalimdor/razorfen_kraul/razorfen_kraul.cpp @@ -137,7 +137,7 @@ bool QuestAccept_npc_willix_the_importer(Player* pPlayer, Creature* pCreature, c if (npc_willix_the_importerAI* pEscortAI = dynamic_cast(pCreature->AI())) { // After 4.0.1 set run = true - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); DoScriptText(SAY_WILLIX_READY, pCreature, pPlayer); pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_PASSIVE); } diff --git a/scripts/kalimdor/silithus.cpp b/scripts/kalimdor/silithus.cpp index 8e87d04..945cd19 100644 --- a/scripts/kalimdor/silithus.cpp +++ b/scripts/kalimdor/silithus.cpp @@ -58,13 +58,13 @@ enum bool GossipHello_npc_highlord_demitrian(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_EXAMINE_THE_VESSEL) == QUEST_STATUS_NONE && (pPlayer->HasItemCount(ITEM_BINDINGS_WINDSEEKER_LEFT,1,false) || pPlayer->HasItemCount(ITEM_BINDINGS_WINDSEEKER_RIGHT,1,false))) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -75,30 +75,30 @@ bool GossipSelect_npc_highlord_demitrian(Player* pPlayer, Creature* pCreature, u { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN5, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN5, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEMITRIAN7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN6, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN6, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN7, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEMITRIAN7, pCreature->GetObjectGuid()); if (Item* pItem = pPlayer->StoreNewItemInInventorySlot(ITEM_VESSEL_OF_REBIRTH, 1)) pPlayer->SendNewItem(pItem, 1, true, false); @@ -154,7 +154,7 @@ enum bool GossipHello_npcs_rutgar_and_frankal(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_DEAREST_NATALIA) == QUEST_STATUS_INCOMPLETE && pCreature->GetEntry() == NPC_RUTGAR && @@ -166,7 +166,7 @@ bool GossipHello_npcs_rutgar_and_frankal(Player* pPlayer, Creature* pCreature) pPlayer->GetReqKillOrCastCurrentCount(QUEST_DEAREST_NATALIA, TRIGGER_RUTGAR)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SEEK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RF, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RF, pCreature->GetObjectGuid()); return true; } @@ -177,56 +177,56 @@ bool GossipSelect_npcs_rutgar_and_frankal(Player* pPlayer, Creature* pCreature, { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR5, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR5, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTGAR7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR6, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR6, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 6: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR7, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RUTGAR7, pCreature->GetObjectGuid()); //'kill' our trigger to update quest status pPlayer->KilledMonsterCredit(TRIGGER_RUTGAR, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 9: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FRANKAL11, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 10: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FRANKAL12, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 11: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FRANKAL13, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 12: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FRANKAL14, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 13: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FRANKAL15, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL5, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL5, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 14: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL6, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FRANKAL6, pCreature->GetObjectGuid()); //'kill' our trigger to update quest status pPlayer->KilledMonsterCredit(TRIGGER_FRANKAL, pCreature->GetObjectGuid()); break; diff --git a/scripts/kalimdor/stonetalon_mountains.cpp b/scripts/kalimdor/stonetalon_mountains.cpp index 234f2f4..bee70c3 100644 --- a/scripts/kalimdor/stonetalon_mountains.cpp +++ b/scripts/kalimdor/stonetalon_mountains.cpp @@ -31,7 +31,7 @@ EndScriptData */ bool GossipHello_npc_braug_dimspirit(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(6627) == QUEST_STATUS_INCOMPLETE) { @@ -41,10 +41,10 @@ bool GossipHello_npc_braug_dimspirit(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Alexstrasza", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Malygos", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(5820, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5820, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(5819, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5819, pCreature->GetObjectGuid()); return true; } @@ -133,7 +133,7 @@ bool QuestAccept_npc_kaya(Player* pPlayer, Creature* pCreature, Quest const* pQu DoScriptText(SAY_START,pCreature); if (npc_kayaAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } diff --git a/scripts/kalimdor/tanaris.cpp b/scripts/kalimdor/tanaris.cpp index 9f6fd45..efdb094 100644 --- a/scripts/kalimdor/tanaris.cpp +++ b/scripts/kalimdor/tanaris.cpp @@ -185,19 +185,19 @@ struct MANGOS_DLL_DECL npc_custodian_of_timeAI : public npc_escortAI } } - void MoveInLineOfSight(Unit *who) + void MoveInLineOfSight(Unit* pWho) { if (HasEscortState(STATE_ESCORT_ESCORTING)) return; - if (who->GetTypeId() == TYPEID_PLAYER) + if (pWho->GetTypeId() == TYPEID_PLAYER) { - if (((Player*)who)->HasAura(34877, EFFECT_INDEX_1) && ((Player*)who)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE) + if (pWho->HasAura(34877, EFFECT_INDEX_1) && ((Player*)pWho)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE) { float Radius = 10.0; - if (m_creature->IsWithinDistInMap(who, Radius)) - Start(false, who->GetGUID()); + if (m_creature->IsWithinDistInMap(pWho, Radius)) + Start(false, (Player*)pWho); } } } @@ -217,12 +217,12 @@ CreatureAI* GetAI_npc_custodian_of_time(Creature* pCreature) bool GossipHello_npc_marin_noggenfogger(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetQuestRewardStatus(2662)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -230,7 +230,7 @@ bool GossipHello_npc_marin_noggenfogger(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_marin_noggenfogger(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -332,7 +332,7 @@ bool QuestAccept_npc_oox17tn(Player* pPlayer, Creature* pCreature, const Quest* pCreature->setFaction(FACTION_ESCORT_H_PASSIVE); if (npc_oox17tnAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -346,15 +346,15 @@ bool QuestAccept_npc_oox17tn(Player* pPlayer, Creature* pCreature, const Quest* bool GossipHello_npc_steward_of_time(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(10279) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestRewardStatus(10279)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(9978, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9978, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(9977, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9977, pCreature->GetObjectGuid()); return true; } @@ -389,12 +389,12 @@ bool GossipSelect_npc_steward_of_time(Player* pPlayer, Creature* pCreature, uint bool GossipHello_npc_stone_watcher_of_norgannon(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(2954) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(1674, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1674, pCreature->GetObjectGuid()); return true; } @@ -405,23 +405,23 @@ bool GossipSelect_npc_stone_watcher_of_norgannon(Player* pPlayer, Creature* pCre { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(1675, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1675, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(1676, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1676, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(1677, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1677, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(1678, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1678, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(1679, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1679, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/kalimdor/temple_of_ahnqiraj/boss_cthun.cpp b/scripts/kalimdor/temple_of_ahnqiraj/boss_cthun.cpp index 8e3e8ca..30d68dc 100644 --- a/scripts/kalimdor/temple_of_ahnqiraj/boss_cthun.cpp +++ b/scripts/kalimdor/temple_of_ahnqiraj/boss_cthun.cpp @@ -226,7 +226,7 @@ struct MANGOS_DLL_DECL eye_of_cthunAI : public ScriptedAI DoCastSpellIfCan(target,SPELL_GREEN_BEAM); //Correctly update our target - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, target->GetGUID()); + m_creature->SetTargetGuid(target->GetObjectGuid()); } //Beam every 3 seconds @@ -287,7 +287,7 @@ struct MANGOS_DLL_DECL eye_of_cthunAI : public ScriptedAI if (target) { //Correctly update our target - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, target->GetGUID()); + m_creature->SetTargetGuid(target->GetObjectGuid()); //Face our target DarkGlareAngle = m_creature->GetAngle(target); @@ -314,7 +314,7 @@ struct MANGOS_DLL_DECL eye_of_cthunAI : public ScriptedAI if (DarkGlareTickTimer < diff) { //Remove any target - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); //Set angle and cast if (ClockWise) @@ -360,7 +360,7 @@ struct MANGOS_DLL_DECL eye_of_cthunAI : public ScriptedAI case 2: { //Remove any target - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); m_creature->SetHealth(0); } @@ -397,7 +397,7 @@ struct MANGOS_DLL_DECL eye_of_cthunAI : public ScriptedAI m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); //Remove Target field - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); //Death animation/respawning; m_pInstance->SetData(TYPE_CTHUN_PHASE, 2); @@ -582,7 +582,7 @@ struct MANGOS_DLL_DECL cthunAI : public ScriptedAI return; } - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); //No instance if (!m_pInstance) @@ -653,7 +653,7 @@ struct MANGOS_DLL_DECL cthunAI : public ScriptedAI case 3: { //Remove Target field - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); //Weaken if (FleshTentaclesKilled > 1) @@ -742,7 +742,7 @@ struct MANGOS_DLL_DECL cthunAI : public ScriptedAI //Set target in stomach m_mStomachMap[target->GetObjectGuid()] = true; target->InterruptNonMeleeSpells(false); - target->CastSpell(target, SPELL_MOUTH_TENTACLE, true, NULL, NULL, m_creature->GetGUID()); + target->CastSpell(target, SPELL_MOUTH_TENTACLE, true, NULL, NULL, m_creature->GetObjectGuid()); StomachEnterTarget = target->GetGUID(); StomachEnterVisTimer = 3800; } diff --git a/scripts/kalimdor/the_barrens.cpp b/scripts/kalimdor/the_barrens.cpp index c1bc606..cdf7efa 100644 --- a/scripts/kalimdor/the_barrens.cpp +++ b/scripts/kalimdor/the_barrens.cpp @@ -49,7 +49,7 @@ bool GossipHello_npc_beaten_corpse(Player* pPlayer, Creature* pCreature) pPlayer->GetQuestStatus(QUEST_LOST_IN_BATTLE) == QUEST_STATUS_COMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,"Examine corpse in detail...",GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(3557, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3557, pCreature->GetObjectGuid()); return true; } @@ -57,8 +57,8 @@ bool GossipSelect_npc_beaten_corpse(Player* pPlayer, Creature* pCreature, uint32 { if (uiAction == GOSSIP_ACTION_INFO_DEF +1) { - pPlayer->SEND_GOSSIP_MENU(3558, pCreature->GetGUID()); - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3558, pCreature->GetObjectGuid()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); } return true; } @@ -158,7 +158,7 @@ bool QuestAccept_npc_gilthares(Player* pPlayer, Creature* pCreature, const Quest DoScriptText(SAY_GIL_START, pCreature, pPlayer); if (npc_giltharesAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -170,12 +170,12 @@ bool QuestAccept_npc_gilthares(Player* pPlayer, Creature* pCreature, const Quest bool GossipHello_npc_sputtervalve(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(6981) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,"Can you tell me about this shard?",GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -183,7 +183,7 @@ bool GossipSelect_npc_sputtervalve(Player* pPlayer, Creature* pCreature, uint32 { if (uiAction == GOSSIP_ACTION_INFO_DEF) { - pPlayer->SEND_GOSSIP_MENU(2013, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(2013, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens(6981); } return true; @@ -317,9 +317,9 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI uint32 Challenger_Count; uint32 ChallengerDeath_Timer; - uint64 PlayerGUID; - uint64 BigWillGUID; - uint64 AffrayChallenger[6]; + ObjectGuid m_playerGuid; + ObjectGuid m_bigWillGuid; + ObjectGuid m_aAffrayChallengerGuids[6]; void Reset() { @@ -330,11 +330,11 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI Challenger_Count = 0; ChallengerDeath_Timer = 0; - PlayerGUID = 0; - BigWillGUID = 0; + m_playerGuid.Clear(); + m_bigWillGuid.Clear(); for(uint8 i = 0; i < 6; ++i) - AffrayChallenger[i] = 0; + m_aAffrayChallengerGuids[i].Clear(); } bool CanStartEvent(Player* pPlayer) @@ -342,7 +342,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI if (!EventInProgress) { EventInProgress = true; - PlayerGUID = pPlayer->GetGUID(); + m_playerGuid = pPlayer->GetObjectGuid(); DoScriptText(SAY_TWIGGY_BEGIN, m_creature, pPlayer); return true; } @@ -365,7 +365,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI pCreature->setFaction(35); pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); pCreature->HandleEmote(EMOTE_ONESHOT_ROAR); - AffrayChallenger[i] = pCreature->GetGUID(); + m_aAffrayChallengerGuids[i] = pCreature->GetObjectGuid(); } } @@ -388,12 +388,12 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI { for(uint8 i = 0; i < 6; ++i) { - Creature *challenger = m_creature->GetMap()->GetCreature(AffrayChallenger[i]); + Creature *challenger = m_creature->GetMap()->GetCreature(m_aAffrayChallengerGuids[i]); if (challenger && !challenger->isAlive() && challenger->isDead()) { DoScriptText(SAY_TWIGGY_DOWN, m_creature); challenger->RemoveCorpse(); - AffrayChallenger[i] = 0; + m_aAffrayChallengerGuids[i].Clear(); continue; } } @@ -403,7 +403,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI if (Event_Timer < diff) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(PlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer || pPlayer->isDead()) Reset(); @@ -418,7 +418,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI break; case 1: DoScriptText(SAY_TWIGGY_FRAY, m_creature); - if (Creature *challenger = m_creature->GetMap()->GetCreature(AffrayChallenger[Challenger_Count])) + if (Creature *challenger = m_creature->GetMap()->GetCreature(m_aAffrayChallengerGuids[Challenger_Count])) SetChallengerReady(challenger); else Reset(); ++Challenger_Count; @@ -429,7 +429,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI case 2: if (Unit *temp = m_creature->SummonCreature(NPC_BIG_WILL, -1713.79f, -4342.09f, 6.05f, 6.15f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,300000)) { - BigWillGUID = temp->GetGUID(); + m_bigWillGuid = temp->GetObjectGuid(); temp->setFaction(35); temp->GetMotionMaster()->MovePoint(0, -1682.31f, -4329.68f, 2.78f); } @@ -437,7 +437,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI ++Step; break; case 3: - if (Creature *will = m_creature->GetMap()->GetCreature(BigWillGUID)) + if (Creature *will = m_creature->GetMap()->GetCreature(m_bigWillGuid)) { will->setFaction(32); DoScriptText(SAY_BIG_WILL_READY, will, pPlayer); @@ -446,7 +446,7 @@ struct MANGOS_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI ++Step; break; case 4: - Creature *will = m_creature->GetMap()->GetCreature(BigWillGUID); + Creature *will = m_creature->GetMap()->GetCreature(m_bigWillGuid); if (will && will->isDead()) { DoScriptText(SAY_TWIGGY_OVER, m_creature); @@ -638,7 +638,7 @@ bool QuestAccept_npc_wizzlecranks_shredder(Player* pPlayer, Creature* pCreature, pCreature->setFaction(FACTION_RATCHET); if (npc_wizzlecranks_shredderAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); } return true; } diff --git a/scripts/kalimdor/thousand_needles.cpp b/scripts/kalimdor/thousand_needles.cpp index 38a830c..8c104a1 100644 --- a/scripts/kalimdor/thousand_needles.cpp +++ b/scripts/kalimdor/thousand_needles.cpp @@ -91,7 +91,7 @@ bool QuestAccept_npc_kanati(Player* pPlayer, Creature* pCreature, const Quest* p if (pQuest->GetQuestId() == QUEST_PROTECT_KANATI) { if (npc_kanatiAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); } return true; } @@ -177,7 +177,7 @@ bool QuestAccept_npc_lakota_windsong(Player* pPlayer, Creature* pCreature, const pCreature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE); if (npc_lakota_windsongAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -249,7 +249,7 @@ bool QuestAccept_npc_paoka_swiftmountain(Player* pPlayer, Creature* pCreature, c pCreature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE); if (npc_paoka_swiftmountainAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -352,7 +352,7 @@ bool GossipHello_npc_plucky_johnson(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_SCOOP) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_QUEST, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(720, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(720, pCreature->GetObjectGuid()); return true; } @@ -360,7 +360,7 @@ bool GossipSelect_npc_plucky_johnson(Player* pPlayer, Creature* pCreature, uint3 { if (uiAction == GOSSIP_ACTION_INFO_DEF) { - pPlayer->SEND_GOSSIP_MENU(738, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(738, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens(QUEST_SCOOP); } diff --git a/scripts/kalimdor/thunder_bluff.cpp b/scripts/kalimdor/thunder_bluff.cpp index ef609f8..d4938dc 100644 --- a/scripts/kalimdor/thunder_bluff.cpp +++ b/scripts/kalimdor/thunder_bluff.cpp @@ -101,12 +101,12 @@ CreatureAI* GetAI_npc_cairne_bloodhoof(Creature* pCreature) bool GossipHello_npc_cairne_bloodhoof(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(925) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I know this is rather silly but a young ward who is a bit shy would like your hoofprint.", GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO); - pPlayer->SEND_GOSSIP_MENU(7013, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7013, pCreature->GetObjectGuid()); return true; } @@ -116,7 +116,7 @@ bool GossipSelect_npc_cairne_bloodhoof(Player* pPlayer, Creature* pCreature, uin if (uiAction == GOSSIP_SENDER_INFO) { pPlayer->CastSpell(pPlayer, 23123, false); - pPlayer->SEND_GOSSIP_MENU(7014, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7014, pCreature->GetObjectGuid()); } return true; } diff --git a/scripts/kalimdor/ungoro_crater.cpp b/scripts/kalimdor/ungoro_crater.cpp index 9ff7250..788bff9 100644 --- a/scripts/kalimdor/ungoro_crater.cpp +++ b/scripts/kalimdor/ungoro_crater.cpp @@ -102,7 +102,7 @@ bool QuestAccept_npc_ame01(Player* pPlayer, Creature* pCreature, const Quest* pQ else if (pPlayer->GetTeam() == HORDE) pCreature->setFaction(FACTION_ESCORT_H_PASSIVE); - pAmeAI->Start(false, pPlayer->GetGUID(), pQuest); + pAmeAI->Start(false, pPlayer, pQuest); } } return true; diff --git a/scripts/kalimdor/wailing_caverns/wailing_caverns.cpp b/scripts/kalimdor/wailing_caverns/wailing_caverns.cpp index d98fe3e..58c27a7 100644 --- a/scripts/kalimdor/wailing_caverns/wailing_caverns.cpp +++ b/scripts/kalimdor/wailing_caverns/wailing_caverns.cpp @@ -445,7 +445,7 @@ bool GossipHello_npc_disciple_of_naralex(Player* pPlayer, Creature* pCreature) ScriptedInstance* m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); // Buff the players pCreature->CastSpell(pPlayer, SPELL_MARK, false); @@ -453,10 +453,10 @@ bool GossipHello_npc_disciple_of_naralex(Player* pPlayer, Creature* pCreature) if (m_pInstance && m_pInstance->GetData(TYPE_DISCIPLE) == SPECIAL) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DISCIPLE, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DISCIPLE, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -472,7 +472,7 @@ bool GossipSelect_npc_disciple_of_naralex(Player* pPlayer, Creature* pCreature, { if (npc_disciple_of_naralexAI* pEscortAI = dynamic_cast(pCreature->AI())) { - pEscortAI->Start(false, pPlayer->GetGUID()); // Note: after 4.0.3 set him run = true + pEscortAI->Start(false, pPlayer); // Note: after 4.0.3 set him run = true pCreature->setFaction(FACTION_ESCORT_N_ACTIVE); } pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/kalimdor/winterspring.cpp b/scripts/kalimdor/winterspring.cpp index c3126e7..e41dfcd 100644 --- a/scripts/kalimdor/winterspring.cpp +++ b/scripts/kalimdor/winterspring.cpp @@ -36,12 +36,12 @@ EndContentData */ bool GossipHello_npc_lorax(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(5126) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Talk to me", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -52,23 +52,23 @@ bool GossipSelect_npc_lorax(Player* pPlayer, Creature* pCreature, uint32 uiSende { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What do you do here?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(3759, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3759, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I can help you", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(3760, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3760, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What deal?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(3761, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3761, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Then what happened?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(3762, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3762, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "He is not safe, i'll make sure of that.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(3763, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3763, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->CLOSE_GOSSIP_MENU(); @@ -85,12 +85,12 @@ bool GossipSelect_npc_lorax(Player* pPlayer, Creature* pCreature, uint32 uiSende bool GossipHello_npc_rivern_frostwind(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor() && pPlayer->GetReputationRank(589) == REP_EXALTED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -98,7 +98,7 @@ bool GossipHello_npc_rivern_frostwind(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_rivern_frostwind(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -110,14 +110,14 @@ bool GossipSelect_npc_rivern_frostwind(Player* pPlayer, Creature* pCreature, uin bool GossipHello_npc_witch_doctor_mauari(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestRewardStatus(975)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I'd like you to make me a new Cache of Mau'ari please.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(3377, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3377, pCreature->GetObjectGuid()); }else - pPlayer->SEND_GOSSIP_MENU(3375, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(3375, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/kalimdor/zulfarrak/zulfarrak.cpp b/scripts/kalimdor/zulfarrak/zulfarrak.cpp index 4e922b0..4aeee64 100644 --- a/scripts/kalimdor/zulfarrak/zulfarrak.cpp +++ b/scripts/kalimdor/zulfarrak/zulfarrak.cpp @@ -116,12 +116,12 @@ bool GossipHello_npc_sergeant_bly(Player* pPlayer, Creature* pCreature) /*if (m_pInstance->GetData(0) == DONE) {*/ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BLY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(1517, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1517, pCreature->GetObjectGuid()); /*} else if (m_pInstance->GetData(0) == IN_PROGRESS) - pPlayer->SEND_GOSSIP_MENU(1516, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(1516, pCreature->GetObjectGuid()); else - pPlayer->SEND_GOSSIP_MENU(1515, pCreature->GetGUID());*/ + pPlayer->SEND_GOSSIP_MENU(1515, pCreature->GetObjectGuid());*/ return true; } @@ -199,12 +199,12 @@ bool GossipHello_npc_weegli_blastfuse(Player* pPlayer, Creature* pCreature) /*if (m_pInstance->GetData(0) == DONE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WEEGLI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(1514, pCreature->GetGUID());//if event can proceed to end + pPlayer->SEND_GOSSIP_MENU(1514, pCreature->GetObjectGuid());//if event can proceed to end } else if (m_pInstance->GetData(0) == IN_PROGRESS) - pPlayer->SEND_GOSSIP_MENU(1513, pCreature->GetGUID());//if event are in progress + pPlayer->SEND_GOSSIP_MENU(1513, pCreature->GetObjectGuid());//if event are in progress else*/ - pPlayer->SEND_GOSSIP_MENU(1511, pCreature->GetGUID()); //if event not started + pPlayer->SEND_GOSSIP_MENU(1511, pCreature->GetObjectGuid()); //if event not started return true; } diff --git a/scripts/northrend/borean_tundra.cpp b/scripts/northrend/borean_tundra.cpp index 8d66596..ae9a62c 100644 --- a/scripts/northrend/borean_tundra.cpp +++ b/scripts/northrend/borean_tundra.cpp @@ -66,12 +66,12 @@ enum bool GossipHello_npc_fizzcrank_fullthrottle(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_THE_MECHAGNOMES) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELL_ME, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -81,38 +81,38 @@ bool GossipSelect_npc_fizzcrank_fullthrottle(Player* pPlayer, Creature* pCreatur { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK5, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK5, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK6, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK6, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK7, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK7, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+8: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK8, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK8, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+9: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK9, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_FIZZCRANK9, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens(QUEST_THE_MECHAGNOMES); break; } @@ -136,7 +136,7 @@ bool GossipHello_npc_iruk(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_SPIRITS_WATCH_OVER_US) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_IRUK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -172,7 +172,7 @@ bool GossipHello_npc_kara_thricestar(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_CHECK_IN_WITH_BIXIE) == QUEST_STATUS_COMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_THRICESTAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -213,23 +213,23 @@ struct MANGOS_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI uint8 m_uiPhase; uint32 m_uiPhaseTimer; - uint64 m_uiPlayerGUID; - uint64 m_uiGobjectTrapGUID; + ObjectGuid m_playerGuid; + ObjectGuid m_trapGuid; void Reset() { m_uiPhase = 0; m_uiPhaseTimer = 0; - m_uiPlayerGUID = 0; - m_uiGobjectTrapGUID = 0; + m_playerGuid.Clear(); + m_trapGuid.Clear(); } - void StartAction(uint64 uiPlayerGUID, uint64 uiGoTrapGUID) + void StartAction(Player* pPlayer, GameObject* pTrap) { m_uiPhase = 1; m_uiPhaseTimer = 3000; - m_uiPlayerGUID = uiPlayerGUID; - m_uiGobjectTrapGUID = uiGoTrapGUID; + m_playerGuid = pPlayer->GetObjectGuid(); + m_trapGuid = pTrap->GetObjectGuid(); switch (urand(0, 3)) { @@ -249,20 +249,20 @@ struct MANGOS_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI switch(m_uiPhase) { case 1: - if (GameObject* pTrap = m_creature->GetMap()->GetGameObject(m_uiGobjectTrapGUID)) + if (GameObject* pTrap = m_creature->GetMap()->GetGameObject(m_trapGuid)) { if (pTrap->isSpawned()) m_creature->GetMotionMaster()->MovePoint(0, pTrap->GetPositionX(), pTrap->GetPositionY(), pTrap->GetPositionZ()); } break; case 2: - if (GameObject* pTrap = m_creature->GetMap()->GetGameObject(m_uiGobjectTrapGUID)) + if (GameObject* pTrap = m_creature->GetMap()->GetGameObject(m_trapGuid)) { if (pTrap->isSpawned()) { pTrap->Use(m_creature); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (pPlayer->isAlive()) pPlayer->KilledMonsterCredit(m_creature->GetEntry()); @@ -426,7 +426,7 @@ bool GOUse_go_caribou_trap(Player* pPlayer, GameObject* pGo) if (Creature* pCreature = pGo->SummonCreature(NPC_NESINGWARY_TRAPPER, fX, fY, fZ, pGo->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 10000)) { if (npc_nesingwary_trapperAI* pTrapperAI = dynamic_cast(pCreature->AI())) - pTrapperAI->StartAction(pPlayer->GetGUID(), pGo->GetGUID()); + pTrapperAI->StartAction(pPlayer, pGo); pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); @@ -552,7 +552,7 @@ enum bool GossipHello_npc_surristrasz(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isTaxi()) { @@ -560,7 +560,7 @@ bool GossipHello_npc_surristrasz(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_TAXIVENDOR); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -594,7 +594,7 @@ enum bool GossipHello_npc_tiare(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELEPORT, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_GOSSIP); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -738,7 +738,7 @@ bool QuestAccept_npc_lurgglbr(Player* pPlayer, Creature* pCreature, const Quest* if (npc_lurgglbrAI* pEscortAI = dynamic_cast(pCreature->AI())) { pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_PASSIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } return true; @@ -1019,19 +1019,4 @@ void AddSC_borean_tundra() pNewScript->GetAI = &GetAI_npc_lurgglbr; pNewScript->pQuestAcceptNPC = &QuestAccept_npc_lurgglbr; pNewScript->RegisterSelf(); - - pNewScript = new Script; - pNewScript->Name = "npc_nexus_drake"; - pNewScript->GetAI = &GetAI_npc_nexus_drake; - pNewScript->RegisterSelf(); - - pNewScript = new Script; - pNewScript->Name = "go_scourge_cage"; - pNewScript->pGOUse = &GOHello_go_scourge_cage; - pNewScript->RegisterSelf(); - - pNewScript = new Script; - pNewScript->Name = "npc_beryl_sorcerer"; - pNewScript->GetAI = &GetAI_npc_beryl_sorcerer; - pNewScript->RegisterSelf(); } diff --git a/scripts/northrend/dalaran.cpp b/scripts/northrend/dalaran.cpp index 2537121..40468f6 100644 --- a/scripts/northrend/dalaran.cpp +++ b/scripts/northrend/dalaran.cpp @@ -92,10 +92,10 @@ bool GossipHello_npc_zidormi(Player* pPlayer, Creature* pCreature) if (pPlayer->getLevel() >= 65) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ZIDORMI1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ZIDORMI1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ZIDORMI1, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/northrend/dragonblight.cpp b/scripts/northrend/dragonblight.cpp index 716bf05..58b2314 100644 --- a/scripts/northrend/dragonblight.cpp +++ b/scripts/northrend/dragonblight.cpp @@ -47,12 +47,12 @@ enum bool GossipHello_npc_afrasastrasz(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_MIDDLE_DOWN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_MIDDLE_TOP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -87,12 +87,12 @@ enum bool GossipHello_npc_alexstrasza_wr_gate(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestRewardStatus(QUEST_RETURN_TO_AG_A) || pPlayer->GetQuestRewardStatus(QUEST_RETURN_TO_AG_H)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_WHAT_HAPPENED, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -262,12 +262,12 @@ enum bool GossipHello_npc_tariolstrasz(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_BOTTOM_TOP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_BOTTOM_MIDDLE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -302,12 +302,12 @@ enum bool GossipHello_npc_torastrasza(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_TOP_MIDDLE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TAXI_TOP_BOTTOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/northrend/howling_fjord.cpp b/scripts/northrend/howling_fjord.cpp index b9c8c2f..dafaa35 100644 --- a/scripts/northrend/howling_fjord.cpp +++ b/scripts/northrend/howling_fjord.cpp @@ -168,12 +168,12 @@ struct MANGOS_DLL_DECL npc_daegarnAI : public ScriptedAI npc_daegarnAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } bool m_bEventInProgress; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; void Reset() { m_bEventInProgress = false; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); } void StartEvent(Player* pPlayer) @@ -181,14 +181,14 @@ struct MANGOS_DLL_DECL npc_daegarnAI : public ScriptedAI if (m_bEventInProgress) return; - m_uiPlayerGUID = pPlayer->GetGUID(); + m_playerGuid = pPlayer->GetObjectGuid(); SummonGladiator(NPC_FIRJUS); } void JustSummoned(Creature* pSummon) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (pPlayer->isAlive()) { @@ -208,7 +208,7 @@ struct MANGOS_DLL_DECL npc_daegarnAI : public ScriptedAI void SummonedMovementInform(Creature* pSummoned, uint32 uiMotionType, uint32 uiPointId) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); // could be group, so need additional here. if (!pPlayer || !pPlayer->isAlive()) @@ -271,15 +271,15 @@ enum bool GossipHello_npc_deathstalker_razael(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_REPORTS_FROM_THE_FIELD) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DEATHSTALKER_RAZAEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEATHSTALKER_RAZAEL1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEATHSTALKER_RAZAEL1, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -289,7 +289,7 @@ bool GossipSelect_npc_deathstalker_razael(Player* pPlayer, Creature* pCreature, switch(uiAction) { case GOSSIP_ACTION_INFO_DEF+1: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEATHSTALKER_RAZAEL2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEATHSTALKER_RAZAEL2, pCreature->GetObjectGuid()); pCreature->CastSpell(pPlayer, SPELL_RAZAEL_KILL_CREDIT, true); break; } @@ -313,15 +313,15 @@ enum bool GossipHello_npc_dark_ranger_lyana(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_REPORTS_FROM_THE_FIELD) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DARK_RANGER_LYANA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DARK_RANGER_LYANA1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DARK_RANGER_LYANA1, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -331,7 +331,7 @@ bool GossipSelect_npc_dark_ranger_lyana(Player* pPlayer, Creature* pCreature, ui switch(uiAction) { case GOSSIP_ACTION_INFO_DEF+1: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DARK_RANGER_LYANA2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DARK_RANGER_LYANA2, pCreature->GetObjectGuid()); pCreature->CastSpell(pPlayer, SPELL_DARK_RANGER_LYANA_KILL_CREDIT, true); break; } @@ -357,7 +357,7 @@ enum bool GossipHello_npc_greer_orehammer(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_MISSION_PLAGUE_THIS) == QUEST_STATUS_INCOMPLETE) { @@ -370,7 +370,7 @@ bool GossipHello_npc_greer_orehammer(Player* pPlayer, Creature* pCreature) if (pCreature->isTaxi()) pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_TAXI, GOSSIP_ITEM_TAXI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -383,7 +383,7 @@ bool GossipSelect_npc_greer_orehammer(Player* pPlayer, Creature* pCreature, uint if (Item* pItem = pPlayer->StoreNewItemInInventorySlot(ITEM_PRECISION_BOMBS, 10)) pPlayer->SendNewItem(pItem, 10, true, false); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->CLOSE_GOSSIP_MENU(); @@ -397,70 +397,6 @@ bool GossipSelect_npc_greer_orehammer(Player* pPlayer, Creature* pCreature, uint return true; } -/*###### -## npc_mcgoyver - TODO, can be moved to database -######*/ - -#define GOSSIP_ITEM_MCGOYVER1 "Walt sent me to pick up some dark iron ingots." -#define GOSSIP_ITEM_MCGOYVER2 "Yarp." - -enum -{ - QUEST_WE_CAN_REBUILD_IT = 11483, - GOSSIP_TEXTID_MCGOYVER = 12193, - ITEM_DARK_IRON_INGOTS = 34135, - SPELL_MCGOYVER_TAXI_EXPLORERSLEAGUE = 44280, - SPELL_MCGOYVER_CREATE_DARK_IRON_INGOTS = 44512 -}; - -bool GossipHello_npc_mcgoyver(Player* pPlayer, Creature* pCreature) -{ - switch(pPlayer->GetQuestStatus(QUEST_WE_CAN_REBUILD_IT)) - { - case QUEST_STATUS_INCOMPLETE: - if (!pPlayer->HasItemCount(ITEM_DARK_IRON_INGOTS, 1, true)) - { - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MCGOYVER1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); - } - else - { - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MCGOYVER2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_MCGOYVER, pCreature->GetGUID()); - } - break; - case QUEST_STATUS_COMPLETE: - if (!pPlayer->GetQuestRewardStatus(QUEST_WE_CAN_REBUILD_IT)) - { - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MCGOYVER2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_MCGOYVER, pCreature->GetGUID()); - break; - } - default: - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); - } - - return true; -} - -bool GossipSelect_npc_mcgoyver(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) -{ - switch(uiAction) - { - case GOSSIP_ACTION_INFO_DEF+1: - pCreature->CastSpell(pPlayer, SPELL_MCGOYVER_CREATE_DARK_IRON_INGOTS, true); - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MCGOYVER2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_MCGOYVER, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+2: - pPlayer->CLOSE_GOSSIP_MENU(); - pCreature->CastSpell(pPlayer, SPELL_MCGOYVER_TAXI_EXPLORERSLEAGUE, true); - break; - } - - return true; -} - /*###### ## npc_silvermoon_harry ######*/ @@ -584,7 +520,7 @@ CreatureAI* GetAI_npc_silvermoon_harry(Creature* pCreature) bool GossipHello_npc_silvermoon_harry(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); @@ -600,7 +536,7 @@ bool GossipHello_npc_silvermoon_harry(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -610,7 +546,7 @@ bool GossipSelect_npc_silvermoon_harry(Player* pPlayer, Creature* pCreature, uin switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->CLOSE_GOSSIP_MENU(); @@ -673,12 +609,6 @@ void AddSC_howling_fjord() pNewScript->pGossipSelect = &GossipSelect_npc_greer_orehammer; pNewScript->RegisterSelf(); - pNewScript = new Script; - pNewScript->Name = "npc_mcgoyver"; - pNewScript->pGossipHello = &GossipHello_npc_mcgoyver; - pNewScript->pGossipSelect = &GossipSelect_npc_mcgoyver; - pNewScript->RegisterSelf(); - pNewScript = new Script; pNewScript->Name = "npc_silvermoon_harry"; pNewScript->GetAI = &GetAI_npc_silvermoon_harry; diff --git a/scripts/northrend/icecrown.cpp b/scripts/northrend/icecrown.cpp index ac5ba85..363cac0 100644 --- a/scripts/northrend/icecrown.cpp +++ b/scripts/northrend/icecrown.cpp @@ -22,90 +22,11 @@ SDCategory: Icecrown EndScriptData */ /* ContentData -npc_arete npc_dame_evniki_kapsalis EndContentData */ #include "precompiled.h" -/*###### -## npc_arete -######*/ - -#define GOSSIP_ARETE_ITEM1 "Lord-Commander, I would hear your tale." -#define GOSSIP_ARETE_ITEM2 "" -#define GOSSIP_ARETE_ITEM3 "I thought that they now called themselves the Scarlet Onslaught?" -#define GOSSIP_ARETE_ITEM4 "Where did the grand admiral go?" -#define GOSSIP_ARETE_ITEM5 "That's fine. When do I start?" -#define GOSSIP_ARETE_ITEM6 "Let's finish this!" -#define GOSSIP_ARETE_ITEM7 "That's quite a tale, Lord-Commander." - -enum -{ - GOSSIP_TEXTID_ARETE1 = 13525, - GOSSIP_TEXTID_ARETE2 = 13526, - GOSSIP_TEXTID_ARETE3 = 13527, - GOSSIP_TEXTID_ARETE4 = 13528, - GOSSIP_TEXTID_ARETE5 = 13529, - GOSSIP_TEXTID_ARETE6 = 13530, - GOSSIP_TEXTID_ARETE7 = 13531, - - QUEST_THE_STORY_THUS_FAR = 12807 -}; - -bool GossipHello_npc_arete(Player* pPlayer, Creature* pCreature) -{ - if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); - - if (pPlayer->GetQuestStatus(QUEST_THE_STORY_THUS_FAR) == QUEST_STATUS_INCOMPLETE) - { - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE1, pCreature->GetGUID()); - return true; - } - - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); - return true; -} - -bool GossipSelect_npc_arete(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) -{ - switch(uiAction) - { - case GOSSIP_ACTION_INFO_DEF+1: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE2, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+2: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE3, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+3: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE4, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+4: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE5, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+5: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE6, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+6: - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARETE_ITEM7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ARETE7, pCreature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+7: - pPlayer->CLOSE_GOSSIP_MENU(); - pPlayer->AreaExploredOrEventHappens(QUEST_THE_STORY_THUS_FAR); - break; - } - - return true; -} - /*###### ## npc_dame_evniki_kapsalis ######*/ @@ -120,14 +41,14 @@ bool GossipHello_npc_dame_evniki_kapsalis(Player* pPlayer, Creature* pCreature) if (pPlayer->HasTitle(TITLE_CRUSADER)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } bool GossipSelect_npc_dame_evniki_kapsalis(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -135,12 +56,6 @@ void AddSC_icecrown() { Script* newscript; - newscript = new Script; - newscript->Name = "npc_arete"; - newscript->pGossipHello = &GossipHello_npc_arete; - newscript->pGossipSelect = &GossipSelect_npc_arete; - newscript->RegisterSelf(); - newscript = new Script; newscript->Name = "npc_dame_evniki_kapsalis"; newscript->pGossipHello = &GossipHello_npc_dame_evniki_kapsalis; diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_falric.cpp b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_falric.cpp index 8f651a8..efac480 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_falric.cpp +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_falric.cpp @@ -23,7 +23,7 @@ SDCategory: Halls of Reflection EndScriptData */ #include "precompiled.h" -#include "def_halls.h" +#include "halls_of_reflection.h" enum { @@ -55,12 +55,12 @@ struct MANGOS_DLL_DECL boss_falricAI : public BSWScriptedAI uint32 m_uiSummonTimer; uint32 m_uiLocNo; - uint64 m_uiSummonGUID[16]; + ObjectGuid m_uiSummonGUID[16]; uint32 m_uiCheckSummon; uint8 SummonCount; - uint64 pSummon; + uint32 pSummon; void Reset() { @@ -189,6 +189,7 @@ struct MANGOS_DLL_DECL boss_falricAI : public BSWScriptedAI if (m_uiSummonTimer < uiDiff) { ++SummonCount; + m_pInstance->SetData(DATA_WAVE_COUNT,SummonCount); if(SummonCount > 4) { m_pInstance->SetData(TYPE_FALRIC, IN_PROGRESS); diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_lich_king.cpp b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_lich_king.cpp index a6f5978..7cd7edc 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_lich_king.cpp +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_lich_king.cpp @@ -23,7 +23,7 @@ SDCategory: Halls of Reflection EndScriptData */ #include "precompiled.h" -#include "def_halls.h" +#include "halls_of_reflection.h" #include "escort_ai.h" enum @@ -166,7 +166,7 @@ struct MANGOS_DLL_DECL boss_lich_king_hrAI : public npc_escortAI pNewLeader->SetSpeedRate(MOVE_RUN, 1.0f, true); pNewLeader->SetRespawnDelay(DAY); pNewLeader->SetHealth(pNewLeader->GetMaxHealth()/10); - m_pInstance->SetData64(DATA_ESCAPE_LIDER, pNewLeader->GetGUID()); + m_pInstance->SetData64(DATA_ESCAPE_LIDER, pNewLeader->GetObjectGuid().GetRawValue()); } m_pInstance->DoOpenDoor(m_pInstance->GetData64(GO_ICECROWN_DOOR_2)); m_pInstance->SetData(TYPE_PHASE, 4); diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_marwyn.cpp b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_marwyn.cpp index 5b58a71..96bdbcd 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_marwyn.cpp +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/boss_marwyn.cpp @@ -23,7 +23,7 @@ SDCategory: Halls of Reflection EndScriptData */ #include "precompiled.h" -#include "def_halls.h" +#include "halls_of_reflection.h" enum { @@ -56,12 +56,12 @@ struct MANGOS_DLL_DECL boss_marwynAI : public BSWScriptedAI uint32 m_uiSummonTimer; uint32 m_uiLocNo; - uint64 m_uiSummonGUID[16]; + ObjectGuid m_uiSummonGUID[16]; uint32 m_uiCheckSummon; uint8 SummonCount; - uint64 pSummon; + uint32 pSummon; void Reset() { @@ -191,9 +191,10 @@ struct MANGOS_DLL_DECL boss_marwynAI : public BSWScriptedAI { if(m_uiSummonTimer < uiDiff) { - ++SummonCount; - if(SummonCount == 1) - DoScriptText(SAY_MARWYN_INTRO, m_creature); + ++SummonCount; + m_pInstance->SetData(DATA_WAVE_COUNT,SummonCount+5); + if(SummonCount == 1) + DoScriptText(SAY_MARWYN_INTRO, m_creature); if(SummonCount > 4) { diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.cpp b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.cpp index 22bf376..940a621 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.cpp +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.cpp @@ -24,7 +24,7 @@ SDAuthor: MaxXx2021 aka Mioka EndScriptData */ #include "precompiled.h" -#include "def_halls.h" +#include "halls_of_reflection.h" #include "escort_ai.h" enum @@ -139,6 +139,8 @@ enum SPELL_FROSTMOURNE_VISUAL = 73220, SPELL_SHIELD_DISRUPTION = 58291, + SPELL_ESCAPED_FROM_ARTHAS = 72830, + FACTION = 2076, }; @@ -551,9 +553,9 @@ struct MANGOS_DLL_DECL npc_jaina_and_sylvana_HRextroAI : public npc_escortAI m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + m_creature->CastSpell(m_creature, SPELL_ICE_BARRIER, false); if(m_creature->GetEntry() == NPC_JAINA_OUTRO) { - m_creature->CastSpell(m_creature, SPELL_ICE_BARRIER, false); m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2HL); } @@ -812,12 +814,12 @@ struct MANGOS_DLL_DECL npc_jaina_and_sylvana_HRextroAI : public npc_escortAI m_pInstance->SetNextEvent(107,m_creature->GetEntry(),2500); break; case 107: + m_creature->RemoveAurasDueToSpell(SPELL_ICE_BARRIER); if(m_creature->GetEntry() == NPC_JAINA_OUTRO) { if (Creature* pLichKing = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(BOSS_LICH_KING))) if (!pLichKing->HasAura(SPELL_ICE_PRISON)) pLichKing->CastSpell(pLichKing,SPELL_ICE_PRISON,true); - m_creature->RemoveAurasDueToSpell(SPELL_ICE_BARRIER); DoScriptText(SAY_JAINA_AGGRO, m_creature); } else if(m_creature->GetEntry() == NPC_SYLVANA_OUTRO) @@ -867,6 +869,7 @@ struct MANGOS_DLL_DECL npc_jaina_and_sylvana_HRextroAI : public npc_escortAI m_pInstance->SetNextEvent(612,m_creature->GetEntry(),10000); break; case 612: + m_creature->CastSpell(m_creature,SPELL_ESCAPED_FROM_ARTHAS,false); m_pInstance->SetData(TYPE_LICH_KING, DONE); DoScriptText(SAY_ESCAPE_02, m_creature); m_pInstance->SetNextEvent(613,m_creature->GetEntry(),10000); diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.h b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.h index 9702c1d..bd3e1ea 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.h +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/halls_of_reflection.h @@ -1,3 +1,139 @@ -/* Copyright (C) 2006 - 2011 ScriptDev2 +/* Copyright (C) 2006 - 2011 MaXx2021 && /dev/rsa for ScriptDev2 * This program is free software licensed under GPL version 2 * Please see the included DOCS/LICENSE.TXT for more information */ + +#ifndef DEF_HALL_OF_REFLECTION_H +#define DEF_HALL_OF_REFLECTION_H +#include "BSW_ai.h" +#include "BSW_instance.h" + +enum Data +{ + TYPE_PHASE = 0, + TYPE_EVENT = 1, + TYPE_FALRIC = 2, + TYPE_MARWYN = 3, + TYPE_FROST_GENERAL = 4, + TYPE_LICH_KING = 5, + TYPE_HALLS = 6, + MAX_ENCOUNTERS, + + DATA_ESCAPE_LIDER = 101, + DATA_SUMMONS = 102, + DATA_WAVE_COUNT = 103, + + /*UNITS*/ + NPC_DARK_1 = 38177, //Shadowy Mercenary + NPC_DARK_2 = 38176, //Tortured Rifleman + NPC_DARK_3 = 38173, //Spectral Footman + NPC_DARK_4 = 38172, //Phantom Mage + NPC_DARK_5 = 38567, //Phantom Hallucination + NPC_DARK_6 = 38175, //Ghostly Priest + NPC_JAINA = 37221, + NPC_SYLVANA = 37223, + NPC_JAINA_OUTRO = 36955, + NPC_SYLVANA_OUTRO = 37554, + NPC_ALTAR_TARGET = 37704, + NPC_UTHER = 37225, + NPC_LICH_KING = 36954, + BOSS_LICH_KING = 37226, + NPC_ICE_WALL = 37014, + NPC_FALRIC = 38112, + NPC_MARWYN = 38113, + NPC_GHOSTLY_ROGUE = 38177, + NPC_GHOSTLY_PRIEST = 38175, + NPC_GHOSTLY_MAGE = 38172, + NPC_GHOSTLY_FOOTMAN = 38173, + NPC_GHOSTLY_RIFLEMAN = 38176, + NPC_GLUK = 38567, + + NPC_RAGING_GNOUL = 36940, + NPC_RISEN_WITCH_DOCTOR = 36941, + NPC_ABON = 37069, + + NPC_FROST_GENERAL = 36723, + NPC_SPIRITUAL_REFLECTION = 37068, + +// NPC_QUEL_DELAR = 37704, + NPC_QUEL_DELAR = 37158, + + GO_ICECROWN_DOOR = 201976, //72802 + GO_ICECROWN_DOOR_2 = 197342, + GO_ICECROWN_DOOR_3 = 197343, + GO_IMPENETRABLE_DOOR = 197341, //72801 + GO_FROSTMOURNE_ALTAR = 202236, //3551 + GO_FROSTMOURNE = 202302, //364 + + GO_ICE_WALL = 201385, + GO_CAVE = 201596, + GO_PORTAL = 202079, + + GO_CAPTAIN_CHEST_1 = 202212, //3145 + GO_CAPTAIN_CHEST_2 = 201710, //30357 + GO_CAPTAIN_CHEST_3 = 202337, //3246 + GO_CAPTAIN_CHEST_4 = 202336, //3333 +}; + +struct _Locations +{ + float x, y, z, o; + uint32 id; +}; + +static _Locations SpawnLoc[]= +{ + //Wing 01 + {5277.409f, 1993.161f, 707.694f, 0.05f}, //27 + {5301.876f, 2041.699f, 707.694f, 4.71f}, //1 + {5339.830f, 2020.887f, 707.694f, 3.14f}, //13 + {5311.041f, 2042.935f, 707.694f, 4.71f}, //3 + {5314.750f, 2039.969f, 707.694f, 4.71f}, //4 + {5342.823f, 2003.801f, 707.694f, 3.14f}, //10 + {5311.579f, 1972.823f, 707.694f, 1.62f}, //16 + + //Wing 02 + {5272.491f, 2005.673f, 707.694f, 0.05f}, //23 + {5302.669f, 1973.050f, 707.694f, 1.62f}, //18 + {5346.187f, 2008.058f, 707.694f, 3.14f}, //9 + {5319.752f, 2041.321f, 707.694f, 4.71f}, //5 + {5344.882f, 1998.714f, 707.694f, 3.14f}, //11 + {5340.552f, 1994.735f, 707.694f, 3.14f}, //12 + {5306.441f, 2040.358f, 707.694f, 4.71f}, //2 + + //Wing 03 + {5273.297f, 2014.009f, 707.694f, 0.05f}, //25 + {5316.062f, 1970.777f, 707.694f, 1.62f}, //15 + {5322.498f, 2037.415f, 707.694f, 4.71f}, //6 + {5307.087f, 1970.065f, 707.694f, 1.62f}, //17 + {5342.460f, 2012.391f, 707.694f, 3.14f}, //8 + {5297.601f, 1971.420f, 707.694f, 1.62f}, //19 + {5295.668f, 1975.853f, 707.694f, 1.62f}, //20 + + //Wing 04 + {5273.661f, 1996.767f, 707.694f, 0.05f}, //21 + {5275.228f, 2001.275f, 707.694f, 0.05f}, //22 + {5344.153f, 2017.753f, 707.694f, 3.14f}, //7 + {5275.310f, 2009.686f, 707.694f, 0.05f}, //24 + {5319.835f, 1975.177f, 707.694f, 1.62f}, //14 + {5277.445f, 2017.197f, 707.694f, 0.05f}, //26 + {5298.198f, 2037.762f, 707.694f, 4.71f} //0 +}; + +static _Locations WallLoc[]= +{ + {5540.39f, 2086.48f, 731.066f, 1.00057f}, + {5494.3f, 1978.27f, 736.689f, 1.0885f}, + {5434.27f, 1881.12f, 751.303f, 0.923328f}, + {5323.61f, 1755.85f, 770.305f, 0.784186f}, + {5239.01f, 1932.64f, 707.695f, 0.8f}, // Spawn point for Jaina && Silvana intro + {5266.779785f, 1953.42f, 707.697f, 1.0f}, + {5547.27002f, 2256.949951f, 733.010986f, 0.9f}, // Spawn point for Jaina && Silvana outro +}; + +enum HallsOfReflectionWorldStates +{ + WORLD_STATE_HOR = 4884, + WORLD_STATE_HOR_WAVE_COUNT = 4882, +}; + +#endif \ No newline at end of file diff --git a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/instance_halls_of_reflection.cpp b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/instance_halls_of_reflection.cpp index 3cefc23..18156f3 100644 --- a/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/instance_halls_of_reflection.cpp +++ b/scripts/northrend/icecrown_citadel/frozen_halls/halls_of_reflection/instance_halls_of_reflection.cpp @@ -24,7 +24,7 @@ SDAuthor: /dev/rsa, modified by MaxXx2021 aka Mioka EndScriptData */ #include "precompiled.h" -#include "def_halls.h" +#include "halls_of_reflection.h" #include "World.h" struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance @@ -40,44 +40,37 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance uint8 Difficulty; uint8 m_uiSummons; + uint8 m_waveCount; uint32 m_auiLeader; - uint64 m_uiFalricGUID; - uint64 m_uiMarwynGUID; - uint64 m_uiLichKingGUID; - uint64 m_uiLiderGUID; - uint64 m_uiUtherGUID; + ObjectGuid m_uiFalricGUID; + ObjectGuid m_uiMarwynGUID; + ObjectGuid m_uiLichKingGUID; + ObjectGuid m_uiLiderGUID; + ObjectGuid m_uiUtherGUID; - uint64 m_uiQuelDelarGUID; + ObjectGuid m_uiQuelDelarGUID; - uint64 m_uiMainGateGUID; - uint64 m_uiExitGateGUID; - uint64 m_uiDoor2GUID; - uint64 m_uiDoor3GUID; + ObjectGuid m_uiMainGateGUID; + ObjectGuid m_uiExitGateGUID; + ObjectGuid m_uiDoor2GUID; + ObjectGuid m_uiDoor3GUID; - uint64 m_uiFrostGeneralGUID; - uint64 m_uiCaptainsChestHordeGUID; - uint64 m_uiCaptainsChestAllianceGUID; - uint64 m_uiFrostmourneGUID; - uint64 m_uiFrostmourneAltarGUID; - uint64 m_uiPortalGUID; - uint64 m_uiIceWallGUID; - uint64 m_uiCaveGUID; + ObjectGuid m_uiFrostGeneralGUID; + ObjectGuid m_uiCaptainsChestHordeGUID; + ObjectGuid m_uiCaptainsChestAllianceGUID; + ObjectGuid m_uiFrostmourneGUID; + ObjectGuid m_uiFrostmourneAltarGUID; + ObjectGuid m_uiPortalGUID; + ObjectGuid m_uiIceWallGUID; + ObjectGuid m_uiCaveGUID; void Initialize() { for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i) m_auiEncounter[i] = NOT_STARTED; - m_uiMainGateGUID = 0; - m_uiFrostmourneGUID = 0; - m_uiFalricGUID = 0; - m_uiLiderGUID = 0; - m_uiLichKingGUID = 0; - m_uiExitGateGUID = 0; - m_uiSummons = 0; - m_uiIceWallGUID = 0; - m_uiCaveGUID = 0; + m_waveCount = 0; } void OnCreatureCreate(Creature* pCreature) @@ -85,22 +78,22 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance switch(pCreature->GetEntry()) { case NPC_FALRIC: - m_uiFalricGUID = pCreature->GetGUID(); + m_uiFalricGUID = pCreature->GetObjectGuid(); break; case NPC_MARWYN: - m_uiMarwynGUID = pCreature->GetGUID(); + m_uiMarwynGUID = pCreature->GetObjectGuid(); break; case BOSS_LICH_KING: - m_uiLichKingGUID = pCreature->GetGUID(); + m_uiLichKingGUID = pCreature->GetObjectGuid(); break; case NPC_FROST_GENERAL: - m_uiFrostGeneralGUID = pCreature->GetGUID(); + m_uiFrostGeneralGUID = pCreature->GetObjectGuid(); break; case NPC_QUEL_DELAR: - m_uiQuelDelarGUID = pCreature->GetGUID(); + m_uiQuelDelarGUID = pCreature->GetObjectGuid(); break; case NPC_UTHER: - m_uiUtherGUID = pCreature->GetGUID(); + m_uiUtherGUID = pCreature->GetObjectGuid(); break; } } @@ -109,39 +102,39 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance { switch(pGo->GetEntry()) { - case GO_IMPENETRABLE_DOOR: m_uiMainGateGUID = pGo->GetGUID(); + case GO_IMPENETRABLE_DOOR: m_uiMainGateGUID = pGo->GetObjectGuid(); if (GetData(TYPE_MARWYN) == DONE) DoOpenDoor(m_uiMainGateGUID); break; - case GO_FROSTMOURNE: m_uiFrostmourneGUID = pGo->GetGUID(); break; - case GO_ICECROWN_DOOR: m_uiExitGateGUID = pGo->GetGUID(); break; - case GO_ICECROWN_DOOR_2: m_uiDoor2GUID = pGo->GetGUID(); + case GO_FROSTMOURNE: m_uiFrostmourneGUID = pGo->GetObjectGuid(); break; + case GO_ICECROWN_DOOR: m_uiExitGateGUID = pGo->GetObjectGuid(); break; + case GO_ICECROWN_DOOR_2: m_uiDoor2GUID = pGo->GetObjectGuid(); if (GetData(TYPE_FROST_GENERAL) == DONE) DoOpenDoor(m_uiDoor2GUID); break; - case GO_ICECROWN_DOOR_3: m_uiDoor3GUID = pGo->GetGUID(); break; - case GO_PORTAL: m_uiPortalGUID = pGo->GetGUID(); break; + case GO_ICECROWN_DOOR_3: m_uiDoor3GUID = pGo->GetObjectGuid(); break; + case GO_PORTAL: m_uiPortalGUID = pGo->GetObjectGuid(); break; case GO_CAPTAIN_CHEST_1: if (Difficulty == RAID_DIFFICULTY_10MAN_NORMAL) - m_uiCaptainsChestHordeGUID = pGo->GetGUID(); + m_uiCaptainsChestHordeGUID = pGo->GetObjectGuid(); break; case GO_CAPTAIN_CHEST_3: if (Difficulty == RAID_DIFFICULTY_25MAN_NORMAL) - m_uiCaptainsChestHordeGUID = pGo->GetGUID(); + m_uiCaptainsChestHordeGUID = pGo->GetObjectGuid(); break; case GO_CAPTAIN_CHEST_2: if (Difficulty == RAID_DIFFICULTY_10MAN_NORMAL) - m_uiCaptainsChestAllianceGUID = pGo->GetGUID(); + m_uiCaptainsChestAllianceGUID = pGo->GetObjectGuid(); break; case GO_CAPTAIN_CHEST_4: if (Difficulty == RAID_DIFFICULTY_25MAN_NORMAL) - m_uiCaptainsChestAllianceGUID = pGo->GetGUID(); + m_uiCaptainsChestAllianceGUID = pGo->GetObjectGuid(); break; - case GO_ICE_WALL: m_uiIceWallGUID = pGo->GetGUID(); + case GO_ICE_WALL: m_uiIceWallGUID = pGo->GetObjectGuid(); pGo->SetPhaseMask(65535, true); break; - case GO_CAVE: m_uiCaveGUID = pGo->GetGUID(); + case GO_CAVE: m_uiCaveGUID = pGo->GetObjectGuid(); DoOpenDoor(m_uiCaveGUID); break; } @@ -206,6 +199,15 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance break; case DATA_ESCAPE_LIDER: m_auiLeader = uiData; uiData = NOT_STARTED; + case DATA_WAVE_COUNT: m_waveCount = uiData; + uiData = NOT_STARTED; + if (m_waveCount > 0 && m_waveCount < 10) + { + DoUpdateWorldState(WORLD_STATE_HOR, 1); + DoUpdateWorldState(WORLD_STATE_HOR_WAVE_COUNT, m_waveCount-1); + } + else + DoUpdateWorldState(WORLD_STATE_HOR, 0); break; default: break; @@ -244,7 +246,7 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance case TYPE_FROST_GENERAL: return m_auiEncounter[uiType]; case TYPE_HALLS: return m_auiEncounter[uiType]; case DATA_SUMMONS: return m_uiSummons; - case DATA_ESCAPE_LIDER: return m_auiLeader; + case DATA_ESCAPE_LIDER: return m_auiLeader; default: return 0; } return 0; @@ -264,20 +266,20 @@ struct MANGOS_DLL_DECL instance_halls_of_reflection : public BSWScriptedInstance { switch(uiData) { - case GO_IMPENETRABLE_DOOR: return m_uiMainGateGUID; - case GO_FROSTMOURNE: return m_uiFrostmourneGUID; - case NPC_FALRIC: return m_uiFalricGUID; - case NPC_MARWYN: return m_uiMarwynGUID; - case NPC_UTHER: return m_uiUtherGUID; - case BOSS_LICH_KING: return m_uiLichKingGUID; - case DATA_ESCAPE_LIDER: return m_uiLiderGUID; - case NPC_FROST_GENERAL: return m_uiFrostGeneralGUID; - case NPC_QUEL_DELAR: return m_uiQuelDelarGUID; - case GO_ICECROWN_DOOR: return m_uiExitGateGUID; - case GO_ICECROWN_DOOR_2: return m_uiDoor2GUID; - case GO_ICECROWN_DOOR_3: return m_uiDoor3GUID; - case GO_ICE_WALL: return m_uiIceWallGUID; - case GO_CAVE: return m_uiCaveGUID; + case GO_IMPENETRABLE_DOOR: return m_uiMainGateGUID.GetRawValue(); + case GO_FROSTMOURNE: return m_uiFrostmourneGUID.GetRawValue(); + case NPC_FALRIC: return m_uiFalricGUID.GetRawValue(); + case NPC_MARWYN: return m_uiMarwynGUID.GetRawValue(); + case NPC_UTHER: return m_uiUtherGUID.GetRawValue(); + case BOSS_LICH_KING: return m_uiLichKingGUID.GetRawValue(); + case DATA_ESCAPE_LIDER: return m_uiLiderGUID.GetRawValue(); + case NPC_FROST_GENERAL: return m_uiFrostGeneralGUID.GetRawValue(); + case NPC_QUEL_DELAR: return m_uiQuelDelarGUID.GetRawValue(); + case GO_ICECROWN_DOOR: return m_uiExitGateGUID.GetRawValue(); + case GO_ICECROWN_DOOR_2: return m_uiDoor2GUID.GetRawValue(); + case GO_ICECROWN_DOOR_3: return m_uiDoor3GUID.GetRawValue(); + case GO_ICE_WALL: return m_uiIceWallGUID.GetRawValue(); + case GO_CAVE: return m_uiCaveGUID.GetRawValue(); } return 0; } diff --git a/scripts/northrend/icecrown_citadel/icecrown_citadel/boss_lord_marrowgar.cpp b/scripts/northrend/icecrown_citadel/icecrown_citadel/boss_lord_marrowgar.cpp index c640b70..9dfc09e 100644 --- a/scripts/northrend/icecrown_citadel/icecrown_citadel/boss_lord_marrowgar.cpp +++ b/scripts/northrend/icecrown_citadel/icecrown_citadel/boss_lord_marrowgar.cpp @@ -275,7 +275,7 @@ struct MANGOS_DLL_DECL mob_coldflameAI : public BSWScriptedAI if (!isCreator) { - if (m_creature->GetCreatorGuid() == m_pInstance->GetData64(NPC_LORD_MARROWGAR)) + if (m_creature->GetCreatorGuid().GetRawValue() == m_pInstance->GetData64(NPC_LORD_MARROWGAR)) { isFirst = true; uint32 m_tmpDirection = m_pInstance->GetData(DATA_DIRECTION); diff --git a/scripts/northrend/sholazar_basin.cpp b/scripts/northrend/sholazar_basin.cpp index b14d901..c775123 100644 --- a/scripts/northrend/sholazar_basin.cpp +++ b/scripts/northrend/sholazar_basin.cpp @@ -188,7 +188,7 @@ bool QuestAccept_npc_helice(Player* pPlayer, Creature* pCreature, const Quest* p if (npc_heliceAI* pEscortAI = dynamic_cast(pCreature->AI())) { - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); pCreature->SetFactionTemporary(FACTION_ESCORT_N_NEUTRAL_PASSIVE, TEMPFACTION_RESTORE_RESPAWN); } } @@ -288,7 +288,7 @@ bool QuestAccept_npc_injured_rainspeaker(Player* pPlayer, Creature* pCreature, c // Workaround, GossipHello/GossipSelect doesn't work well when object already has gossip from database if (npc_injured_rainspeakerAI* pEscortAI = dynamic_cast(pCreature->AI())) { - pEscortAI->Start(true, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(true, pPlayer, pQuest); pCreature->SetFactionTemporary(FACTION_ESCORT_N_NEUTRAL_PASSIVE, TEMPFACTION_RESTORE_RESPAWN); } } @@ -302,7 +302,7 @@ bool GossipHello_npc_injured_rainspeaker(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_FORTUNATE_MISUNDERSTAND) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_READY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -316,7 +316,7 @@ bool GossipSelect_npc_injured_rainspeaker(Player* pPlayer, Creature* pCreature, pPlayer->CLOSE_GOSSIP_MENU(); if (npc_injured_rainspeakerAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(true, pPlayer->GetGUID()); + pEscortAI->Start(true, pPlayer); } return false; @@ -362,7 +362,7 @@ bool GossipHello_npc_mosswalker_victim(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_PULSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); } - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_INJURED, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_INJURED, pCreature->GetObjectGuid()); return true; } @@ -431,16 +431,16 @@ enum bool GossipHello_npc_vekjik(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_MAKING_PEACE) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK1, pCreature->GetObjectGuid()); return true; } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -450,7 +450,7 @@ bool GossipSelect_npc_vekjik(Player* pPlayer, Creature* pCreature, uint32 uiSend { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); diff --git a/scripts/northrend/storm_peaks.cpp b/scripts/northrend/storm_peaks.cpp index 569c82c..ab90fbc 100644 --- a/scripts/northrend/storm_peaks.cpp +++ b/scripts/northrend/storm_peaks.cpp @@ -53,11 +53,11 @@ bool GossipHello_npc_frostborn_scout(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_MISSING_SCOUT) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SCOUT_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_1, pCreature->GetObjectGuid()); return true; } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -67,14 +67,14 @@ bool GossipSelect_npc_frostborn_scout(Player* pPlayer, Creature* pCreature, uint { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SCOUT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SCOUT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SCOUT_4, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens(QUEST_MISSING_SCOUT); break; } @@ -105,16 +105,16 @@ enum bool GossipHello_npc_loklira_the_crone(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_THE_HYLDSMEET) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELL_ME, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA1, pCreature->GetObjectGuid()); return true; } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -124,18 +124,18 @@ bool GossipSelect_npc_loklira_the_crone(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_WHAT_HAPPENED, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_YOU_WANT_ME, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERY_WELL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LOKLIRA4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: - pPlayer->TalkedToCreature(CREDIT_LOKLIRA, pCreature->GetGUID()); + pPlayer->TalkedToCreature(CREDIT_LOKLIRA, pCreature->GetObjectGuid()); pPlayer->CLOSE_GOSSIP_MENU(); break; } @@ -165,15 +165,15 @@ enum bool GossipHello_npc_thorim(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_SIBLING_RIVALRY) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_THORIM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM1, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -184,14 +184,14 @@ bool GossipSelect_npc_thorim(Player* pPlayer, Creature* pCreature, uint32 uiSend { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_THORIM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_THORIM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_THORIM4, pCreature->GetObjectGuid()); pCreature->CastSpell(pPlayer, SPELL_THORIM_STORY_KILL_CREDIT, true); break; } @@ -226,7 +226,7 @@ bool GossipHello_npc_roxi_ramrocket(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -235,10 +235,10 @@ bool GossipSelect_npc_roxi_ramrocket(Player* pPlayer, Creature* pCreature, uint3 switch(uiAction) { case GOSSIP_ACTION_TRAIN: - pPlayer->SEND_TRAINERLIST(pCreature->GetGUID()); + pPlayer->SEND_TRAINERLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; } diff --git a/scripts/northrend/ulduar/halls_of_lightning/boss_ionar.cpp b/scripts/northrend/ulduar/halls_of_lightning/boss_ionar.cpp index 8c697f9..329eb4f 100644 --- a/scripts/northrend/ulduar/halls_of_lightning/boss_ionar.cpp +++ b/scripts/northrend/ulduar/halls_of_lightning/boss_ionar.cpp @@ -278,7 +278,7 @@ struct MANGOS_DLL_DECL boss_ionarAI : public ScriptedAI if (m_uiBallLightning_Timer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - m_creature->CastSpell(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), m_bIsRegularMode ? SPELL_BALL_LIGHTNING_N : SPELL_BALL_LIGHTNING_H, false, NULL, NULL, m_creature->GetGUID()); + m_creature->CastSpell(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), m_bIsRegularMode ? SPELL_BALL_LIGHTNING_N : SPELL_BALL_LIGHTNING_H, false, NULL, NULL, m_creature->GetObjectGuid()); m_uiBallLightning_Timer = urand(10000, 11000); } else diff --git a/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp b/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp index b9b2731..192c6bb 100644 --- a/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp +++ b/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp @@ -144,7 +144,7 @@ struct MANGOS_DLL_DECL boss_lokenAI : public ScriptedAI if (m_fDist <= 1.0f) // Less than 1 yard dmg = (m_bIsRegularMode ? 800 : 850); // need to correct damage else // Further from 1 yard - dmg = int32((m_bIsRegularMode ? 200 : 250) * m_fDist) + (m_bIsRegularMode ? 800 : 850); // need to correct damage + dmg = uint32((m_bIsRegularMode ? 200 : 250) * m_fDist) + (m_bIsRegularMode ? 800 : 850); // need to correct damage m_creature->CastCustomSpell(i->getSource(), (m_bIsRegularMode ? 52942 : 59837), &dmg, 0, 0, false); } diff --git a/scripts/northrend/ulduar/halls_of_lightning/boss_volkhan.cpp b/scripts/northrend/ulduar/halls_of_lightning/boss_volkhan.cpp index def1c3f..c4ea4d1 100644 --- a/scripts/northrend/ulduar/halls_of_lightning/boss_volkhan.cpp +++ b/scripts/northrend/ulduar/halls_of_lightning/boss_volkhan.cpp @@ -81,7 +81,7 @@ struct MANGOS_DLL_DECL boss_volkhanAI : public ScriptedAI ScriptedInstance* m_pInstance; - std::list m_lGolemGUIDList; + GUIDList m_lGolemGUIDList; bool m_bIsRegularMode; @@ -149,7 +149,7 @@ struct MANGOS_DLL_DECL boss_volkhanAI : public ScriptedAI if (m_lGolemGUIDList.empty()) return; - for(std::list::iterator itr = m_lGolemGUIDList.begin(); itr != m_lGolemGUIDList.end(); ++itr) + for(GUIDList::const_iterator itr = m_lGolemGUIDList.begin(); itr != m_lGolemGUIDList.end(); ++itr) { if (Creature* pTemp = m_creature->GetMap()->GetCreature(*itr)) { @@ -183,11 +183,10 @@ struct MANGOS_DLL_DECL boss_volkhanAI : public ScriptedAI pSummoned->AI()->AttackStart(pTarget); //why healing when just summoned? - pSummoned->CastSpell(pSummoned, m_bIsRegularMode ? SPELL_HEAT_N : SPELL_HEAT_H, false, NULL, NULL, m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, m_bIsRegularMode ? SPELL_HEAT_N : SPELL_HEAT_H, false, NULL, NULL, m_creature->GetObjectGuid()); } } - void UpdateAI(const uint32 uiDiff) { //Return since we have no target diff --git a/scripts/northrend/ulduar/halls_of_stone/halls_of_stone.cpp b/scripts/northrend/ulduar/halls_of_stone/halls_of_stone.cpp index ede2a0b..0a0436c 100644 --- a/scripts/northrend/ulduar/halls_of_stone/halls_of_stone.cpp +++ b/scripts/northrend/ulduar/halls_of_stone/halls_of_stone.cpp @@ -731,7 +731,7 @@ bool GossipHello_npc_brann_hos(Player* pPlayer, Creature* pCreature) m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (m_pInstance->GetData(TYPE_BRANN) != DONE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_START, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); @@ -739,7 +739,7 @@ if (m_pInstance->GetData(TYPE_BRANN) != DONE) pPlayer->SEND_GOSSIP_MENU(TEXT_ID_START, pCreature->GetGUID()); //pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_PROGRESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - //pPlayer->SEND_GOSSIP_MENU(TEXT_ID_PROGRESS, pCreature->GetGUID()); + //pPlayer->SEND_GOSSIP_MENU(TEXT_ID_PROGRESS, pCreature->GetObjectGuid()); return true; } @@ -749,7 +749,7 @@ bool GossipSelect_npc_brann_hos(Player* pPlayer, Creature* pCreature, uint32 uiS { pPlayer->CLOSE_GOSSIP_MENU(); ((npc_brann_hosAI*)pCreature->AI())->m_uiStep = 1; - ((npc_brann_hosAI*)pCreature->AI())->Start(false, pPlayer->GetGUID()); + ((npc_brann_hosAI*)pCreature->AI())->Start(false, pPlayer); } return true; diff --git a/scripts/northrend/ulduar/ulduar/boss_thorim.cpp b/scripts/northrend/ulduar/ulduar/boss_thorim.cpp index 251cff2..5569f70 100644 --- a/scripts/northrend/ulduar/ulduar/boss_thorim.cpp +++ b/scripts/northrend/ulduar/ulduar/boss_thorim.cpp @@ -17,7 +17,8 @@ /* ScriptData SDName: boss_thorim SD%Complete: -SDComment: Implement lightning orbs, summon Sit on the platform in the first 3 min. +SDComment: better solution for teleport into arena + Implement lightning orbs, summon Sit on the platform in the first 3 min. Runic Smash from Runic Colossus need core support, unknow trigger spell 62406 and 62403 SDCategory: Ulduar EndScriptData */ @@ -374,10 +375,10 @@ struct MANGOS_DLL_DECL mob_dark_rune_commonerAI : public ScriptedAI { case 0: DoCast(m_creature->getVictim(), SPELL_LOW_BLOW); - break; + break; case 1: DoCast(m_creature->getVictim(), SPELL_PUMMEL); - break; + break; } m_uiSpell_Timer = urand(3000, 6000); }else m_uiSpell_Timer -= uiDiff; @@ -421,15 +422,15 @@ struct MANGOS_DLL_DECL mob_dark_rune_evokerAI : public ScriptedAI case 1: if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) DoCast(pTarget, m_bIsRegularMode ? SPELL_RUNIC_LIGHTNING : SPELL_RUNIC_LIGHTNING_H); - break; + break; case 2: case 3: if (Unit* pTarget = DoSelectLowestHpFriendly(50.0f)) DoCast(pTarget, m_bIsRegularMode ? SPELL_RUNIC_MENDING : SPELL_RUNIC_MENDING_H); - break; + break; case 4: DoCast(m_creature, m_bIsRegularMode ? SPELL_RUNIC_SHIELD : SPELL_RUNIC_SHIELD_H); - break; + break; } m_uiSpell_Timer = urand(3000, 6000); }else m_uiSpell_Timer -= uiDiff; @@ -594,6 +595,7 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI uint32 m_uiDeafeningThunderTimer; uint32 m_uiChargeOrbTimer; uint32 m_uiSummonWavesTimer; + uint32 m_uiJumpTimer; uint64 m_uiStormTargetGUID; uint32 m_uiChainLightningTimer; @@ -601,7 +603,6 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI uint32 m_uiOrbChargeTimer; uint32 m_uiUnbalancingStrikeTimer; - uint32 m_uiPhase2Timer; uint32 m_uiHardModeTimer; bool m_bIsPhaseOneEnd; @@ -633,13 +634,14 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI SetCombatMovement(false); m_bIsHardMode = true; - m_bIsPhaseOneEnd = false; + m_bIsPhaseOneEnd = false; m_uiArenaBerserkTimer = 280000; // 5 min - 20 secs intro m_uiBerserkTimer = 300000; // 5 min m_uiHardModeTimer = 160000; // 3 min - 20 sec intro m_uiArenaYellTimer = 30000; m_uiSummonWavesTimer = 10000; + m_uiJumpTimer = 5000; m_uiStormHammerTimer = 20000; m_uiDeafeningThunderTimer = 22000; @@ -706,13 +708,6 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI } }*/ // Respawn all Adds - if (m_pInstance) - { - for (GUIDList::iterator itr = m_pInstance->m_lThorimMobsGUIDs.begin(); itr != m_pInstance->m_lThorimMobsGUIDs.end(); itr++) - if (Creature *pTmp = m_pInstance->instance->GetCreature(*itr)) - if (!pTmp->isAlive()) - pTmp->Respawn(); - } for (GUIDList::iterator itr = m_lArenaSummonGUID.begin(); itr != m_lArenaSummonGUID.end(); itr++) { if (Creature *pTmp = m_creature->GetMap()->GetCreature(*itr)) @@ -720,6 +715,14 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI pTmp->ForcedDespawn(); } } + if (m_pInstance) + { + for (GUIDList::iterator itr = m_pInstance->m_lThorimMobsGUIDs.begin(); itr != m_pInstance->m_lThorimMobsGUIDs.end(); itr++) + if (Creature *pTmp = m_pInstance->instance->GetCreature(*itr)) + if (!pTmp->isAlive()) + pTmp->Respawn(); + } + } @@ -771,24 +774,8 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI // start phase 2 and outro void DamageTaken(Unit *done_by, uint32 &uiDamage) { - // phase 2 - if(uiDamage > 0 && m_uiPhase == PHASE_BALCONY && !m_bIsPhaseOneEnd) - { - if(m_pInstance->GetData(TYPE_RUNIC_COLOSSUS) == DONE && m_pInstance->GetData(TYPE_RUNE_GIANT) == DONE) - { - // say - DoScriptText(SAY_JUMP, m_creature); - // move in arena - m_creature->GetMotionMaster()->MovePoint(0, 2134.719f, -263.148f, 419.846f, false); - m_creature->RemoveSplineFlag(SPLINEFLAG_WALKMODE); - m_creature->SetSplineFlags(SPLINEFLAG_FALLING); - m_bIsPhaseOneEnd = true; - m_uiPhase2Timer = 9000; - } - } - // outro - if(m_creature->GetHealthPercent() < 1.0f && m_uiPhase == PHASE_ARENA) + if((m_creature->GetHealthPercent() < 1.0f || m_creature->GetHealth() <= uiDamage) && m_uiPhase == PHASE_ARENA) { uiDamage = 0; m_uiPhase = PHASE_OUTRO; @@ -907,36 +894,53 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - // phase 2 prepared - if(m_uiPhase2Timer < uiDiff && m_bIsPhaseOneEnd) + // phase 2 + if(!m_bIsPhaseOneEnd) { - m_creature->RemoveSplineFlag(SPLINEFLAG_FALLING); - m_creature->RemoveAurasDueToSpell(SPELL_SHEAT_OF_LIGHTNING); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - if(!m_bIsHardMode) - DoCast(m_creature, SPELL_TOUTCH_OF_DOMINION); - if(m_bIsHardMode) + if(m_pInstance->GetData(TYPE_RUNIC_COLOSSUS) == DONE && m_pInstance->GetData(TYPE_RUNE_GIANT) == DONE) { - if(Creature* Sif = m_pInstance->instance->GetCreature(m_uiSifGUID)) - { - Sif->setFaction(14); - DoScriptText(SAY_SIF_EVENT, Sif); - Sif->SetInCombatWithZone(); - Sif->GetMotionMaster()->MovePoint(0, 2134.719f, -263.148f, 419.846f, false); - // hacky way to complete achievements; use only if you have this function - //m_pInstance->DoCompleteAchievement(m_bIsRegularMode ? ACHIEV_SIFFED : ACHIEV_SIFFED_H); + if (GetPlayerAtMinimumRange(15.0f)) + { + // say + DoScriptText(SAY_JUMP, m_creature); + m_creature->RemoveAurasDueToSpell(SPELL_SHEAT_OF_LIGHTNING); + // move in arena + SetCombatMovement(true); + m_bIsPhaseOneEnd = true; + if(m_bIsHardMode) + { + if(Creature* Sif = m_pInstance->instance->GetCreature(m_uiSifGUID)) + { + Sif->setFaction(14); + DoScriptText(SAY_SIF_EVENT, Sif); + Sif->SetInCombatWithZone(); + Sif->MonsterJump(2134.719f, -263.148f, 419.846f, 0, 30, 30); + // hacky way to complete achievements; use only if you have this function + //m_pInstance->DoCompleteAchievement(m_bIsRegularMode ? ACHIEV_SIFFED : ACHIEV_SIFFED_H); + } + } + else + { + DoCast(m_creature, SPELL_TOUTCH_OF_DOMINION, true); + } + } } - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); - SetCombatMovement(true); - m_uiPhase = PHASE_ARENA; - m_bIsPhaseOneEnd = false; } - else m_uiPhase2Timer -= uiDiff; + if (m_bIsPhaseOneEnd) + { + if(m_uiJumpTimer < uiDiff && m_bIsPhaseOneEnd) + { + m_creature->GetMap()->CreatureRelocation(m_creature, 2134.719f, -263.148f, 419.846f, 0); + m_creature->SendMonsterMove(2134.719f, -263.148f, 419.846f, SPLINETYPE_NORMAL, SPLINEFLAG_DONE, 0); + m_creature->Relocate(2134.719f, -263.148f, 419.846f, 0); + m_creature->GetMotionMaster()->MovePoint(0, 2134.719f, -263.148f, 419.846f, false); - // return if jumping to second phase - if(m_bIsPhaseOneEnd) - return; + m_uiPhase = PHASE_ARENA; + } + else + m_uiJumpTimer -= uiDiff; + } // hard mode check if (m_uiHardModeTimer <= uiDiff && m_bIsHardMode) @@ -1067,9 +1071,9 @@ struct MANGOS_DLL_DECL boss_thorimAI : public ScriptedAI { switch(urand(0, 2)) { - case 0: DoScriptText(SAY_SPECIAL1, m_creature); break; - case 1: DoScriptText(SAY_SPECIAL2, m_creature); break; - case 2: DoScriptText(SAY_SPECIAL3, m_creature); break; + case 0: DoScriptText(SAY_SPECIAL1, m_creature); break; + case 1: DoScriptText(SAY_SPECIAL2, m_creature); break; + case 2: DoScriptText(SAY_SPECIAL3, m_creature); break; } m_uiArenaYellTimer = 30000; } @@ -1275,9 +1279,9 @@ struct MANGOS_DLL_DECL boss_runic_colossusAI : public ScriptedAI m_pInstance->SetData(TYPE_RUNIC_COLOSSUS, DONE); } - void Aggro(Unit* pWho) + void AttackedBy(Unit* pWho) { - if (m_bIsSmash && pWho->GetTypeId() == TYPEID_PLAYER && m_creature->IsWithinDistInMap(pWho, 10)) + if (m_bIsSmash && pWho->GetTypeId() == TYPEID_PLAYER) { m_creature->SetInCombatWith(pWho); m_bIsSmash = false; @@ -1388,8 +1392,8 @@ struct MANGOS_DLL_DECL boss_ancient_rune_giantAI : public ScriptedAI void Reset() { m_uiSpellTimer = urand(5000, 10000); - m_uiSummonTimer = 10000; - m_bIsSummoning = false; + m_uiSummonTimer = 5000; + m_bIsSummoning = true; if(m_pInstance) m_pInstance->SetData(TYPE_RUNE_GIANT, NOT_STARTED); @@ -1401,9 +1405,9 @@ struct MANGOS_DLL_DECL boss_ancient_rune_giantAI : public ScriptedAI m_pInstance->SetData(TYPE_RUNE_GIANT, DONE); } - void Aggro(Unit* pWho) + void AttackedBy(Unit* pWho) { - if (m_bIsSummoning && pWho->GetTypeId() == TYPEID_PLAYER && m_creature->IsWithinDistInMap(pWho, 10)) + if (m_bIsSummoning && pWho->GetTypeId() == TYPEID_PLAYER) { m_creature->SetInCombatWith(pWho); DoCast(m_creature, SPELL_RUNIC_FORTIFICATION, true); @@ -1413,23 +1417,21 @@ struct MANGOS_DLL_DECL boss_ancient_rune_giantAI : public ScriptedAI void UpdateAI(const uint32 uiDiff) { - if(m_pInstance->GetData(TYPE_RUNIC_COLOSSUS) == DONE && !m_bIsSummoning) + if ((m_pInstance->GetData(TYPE_RUNIC_COLOSSUS) == DONE) && m_bIsSummoning) { - m_bIsSummoning = true; - } - - // summon adds before aggro and after the runic colossus has died - if(m_uiSummonTimer < uiDiff && m_bIsSummoning) - { - // honor guard - if(Creature* pTemp = m_creature->SummonCreature(MOB_IRON_HONOR_GUARD, OrbLoc[0].x + 30, OrbLoc[0].y, OrbLoc[0].z, 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000)) + // summon adds before aggro and after the runic colossus has died + if(m_uiSummonTimer < uiDiff) { - pTemp->GetMotionMaster()->MovePoint(0, OrbLoc[1].x, OrbLoc[1].y, OrbLoc[1].z); - pTemp->SetInCombatWithZone(); + // honor guard + if(Creature* pTemp = m_creature->SummonCreature(MOB_IRON_HONOR_GUARD, OrbLoc[0].x + 30, OrbLoc[0].y, OrbLoc[0].z, 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000)) + { + pTemp->GetMotionMaster()->MovePoint(0, OrbLoc[1].x, OrbLoc[1].y, OrbLoc[1].z); + pTemp->SetInCombatWithZone(); + } + m_uiSummonTimer = 7000; } - m_uiSummonTimer = 7000; + else m_uiSummonTimer -= uiDiff; } - else m_uiSummonTimer -= uiDiff; if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; @@ -1613,8 +1615,8 @@ struct MANGOS_DLL_DECL npc_sifAI : public ScriptedAI npc_sifAI(Creature* pCreature) : ScriptedAI(pCreature) { m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + //pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + //pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_bIsRegularMode = pCreature->GetMap()->IsRegularDifficulty(); Reset(); } @@ -1806,4 +1808,5 @@ void AddSC_boss_thorim() newscript->GetAI = &GetAI_mob_thorim_trap_bunny; newscript->RegisterSelf(); + } \ No newline at end of file diff --git a/scripts/northrend/utgarde_keep/utgarde_pinnacle/utgarde_pinnacle.h b/scripts/northrend/utgarde_keep/utgarde_pinnacle/utgarde_pinnacle.h index 56638e8..1babe3d 100644 --- a/scripts/northrend/utgarde_keep/utgarde_pinnacle/utgarde_pinnacle.h +++ b/scripts/northrend/utgarde_keep/utgarde_pinnacle/utgarde_pinnacle.h @@ -2,8 +2,8 @@ * This program is free software licensed under GPL version 2 * Please see the included DOCS/LICENSE.TXT for more information */ -#ifndef DEF_NEXUS_H -#define DEF_NEXUS_H +#ifndef DEF_UTG_PINNACLE_H +#define DEF_UTG_PINNACLE_H enum { diff --git a/scripts/northrend/zuldrak.cpp b/scripts/northrend/zuldrak.cpp index 6f6e86c..aae705d 100644 --- a/scripts/northrend/zuldrak.cpp +++ b/scripts/northrend/zuldrak.cpp @@ -48,13 +48,16 @@ struct MANGOS_DLL_DECL npc_gurgthockAI : public ScriptedAI { npc_gurgthockAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; - void SetPlayerGUID(uint64 uiPlayerGUID) { m_uiPlayerGUID = uiPlayerGUID; } + void SetPlayer(Player* pPlayer) + { + m_playerGuid = pPlayer->GetObjectGuid(); + } void Reset() { - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); } void SummonedCreatureJustDied(Creature* pSummoned) @@ -64,10 +67,10 @@ struct MANGOS_DLL_DECL npc_gurgthockAI : public ScriptedAI { if (uiEntry == m_auiBosses[i]) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->GroupEventHappens(QUEST_FROM_BEYOND, m_creature); - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); return; } } @@ -81,7 +84,7 @@ bool QuestAccept_npc_gurgthock(Player* pPlayer, Creature* pCreature, const Quest pCreature->SummonCreature(m_auiBosses[urand(0, 3)], m_afSpawnLocation[0], m_afSpawnLocation[1], m_afSpawnLocation[2], 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000); if (npc_gurgthockAI* pGurthockAI = dynamic_cast(pCreature->AI())) - pGurthockAI->SetPlayerGUID(pPlayer->GetGUID()); + pGurthockAI->SetPlayer(pPlayer); } return true; } diff --git a/scripts/outland/auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp b/scripts/outland/auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp index e87c86e..7007e0f 100644 --- a/scripts/outland/auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp +++ b/scripts/outland/auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp @@ -103,7 +103,7 @@ struct MANGOS_DLL_DECL boss_ambassador_hellmawAI : public npc_escortAI if (m_pInstance->GetData(TYPE_HELLMAW) != FAIL) { DoScriptText(SAY_INTRO, m_creature); - Start(false, 0, NULL, false, true); + Start(false, NULL, NULL, false, true); } m_pInstance->SetData(TYPE_HELLMAW, IN_PROGRESS); diff --git a/scripts/outland/black_temple/black_temple.cpp b/scripts/outland/black_temple/black_temple.cpp index 5a0731d..f5c9970 100644 --- a/scripts/outland/black_temple/black_temple.cpp +++ b/scripts/outland/black_temple/black_temple.cpp @@ -42,7 +42,7 @@ bool GossipHello_npc_spirit_of_olum(Player* pPlayer, Creature* pCreature) if (pInstance && (pInstance->GetData(TYPE_SUPREMUS) >= DONE) && (pInstance->GetData(TYPE_NAJENTUS) >= DONE)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OLUM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/outland/black_temple/boss_illidan.cpp b/scripts/outland/black_temple/boss_illidan.cpp index 6fad313..731762c 100644 --- a/scripts/outland/black_temple/boss_illidan.cpp +++ b/scripts/outland/black_temple/boss_illidan.cpp @@ -576,7 +576,7 @@ struct MANGOS_DLL_DECL npc_akama_illidanAI : public ScriptedAI float dx = Illidan->GetPositionX() + rand()%15; float dy = Illidan->GetPositionY() + rand()%15; m_creature->GetMotionMaster()->MovePoint(13, dx, dy, Illidan->GetPositionZ()); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, IllidanGUID); + m_creature->SetTargetGuid(Illidan->GetObjectGuid()); } } } @@ -617,7 +617,7 @@ struct MANGOS_DLL_DECL npc_akama_illidanAI : public ScriptedAI for (ThreatList::const_iterator itr = tList.begin();itr != tList.end(); ++itr) { // Loop through threatlist till our GUID is found in it. - if ((*itr)->getUnitGuid() == m_creature->GetGUID()) + if ((*itr)->getUnitGuid() == m_creature->GetObjectGuid()) { (*itr)->removeReference(); // Delete ourself from his threatlist. return; // No need to continue anymore. @@ -1072,7 +1072,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI return; RefaceVictim = true; - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, victim->GetGUID()); + m_creature->SetTargetGuid(victim->GetObjectGuid()); m_creature->CastSpell(victim, Spell, triggered); } @@ -1113,7 +1113,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI else { pTrigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, pTrigger->GetGUID()); + m_creature->SetTargetGuid(pTrigger->GetObjectGuid()); DoCastSpellIfCan(pTrigger, SPELL_EYE_BLAST); } } @@ -1265,7 +1265,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI LandTimer = 0; Phase = PHASE_FLIGHT; m_creature->RemoveAllAuras(); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0); + m_creature->SetTargetGuid(ObjectGuid()); // So players don't shoot us down m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -1410,7 +1410,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI Maiev->NearTeleportTo(dx, dy, Maiev->GetPositionZ(), 0.0f); Maiev->CastSpell(Maiev, SPELL_TELEPORT_VISUAL, true); - Maiev->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); + Maiev->SetTargetGuid(m_creature->GetObjectGuid()); } } IsTalking = true; @@ -1468,9 +1468,9 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI // onoz she looks like she teleported! Maiev->CastSpell(Maiev, SPELL_TELEPORT_VISUAL, true); // Have her face us - Maiev->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); + Maiev->SetTargetGuid(m_creature->GetObjectGuid()); // Face her, so it's not rude =P - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Maiev->GetGUID()); + m_creature->SetTargetGuid(Maiev->GetObjectGuid()); } } break; @@ -1549,7 +1549,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI { if (FaceVictimTimer < diff) { - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->getVictim()->GetGUID()); + m_creature->SetTargetGuid(m_creature->getVictim()->GetObjectGuid()); FaceVictimTimer = 1000; RefaceVictim = false; }else FaceVictimTimer -= diff; @@ -1717,7 +1717,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI // We should let the raid fight us =) m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->getVictim()->GetGUID()); + m_creature->SetTargetGuid(m_creature->getVictim()->GetObjectGuid()); // Chase our victim! m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); @@ -1831,7 +1831,7 @@ struct MANGOS_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_TOPAGGRO, 0); if (target && target->isAlive()) { - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, target->GetGUID()); + m_creature->SetTargetGuid(target->GetObjectGuid()); DoCastSpellIfCan(target, SPELL_SHADOW_BLAST); ShadowBlastTimer = 4000; GlobalTimer += 1500; @@ -1936,8 +1936,8 @@ void npc_akama_illidanAI::BeginEvent(uint64 PlayerGUID) pIllidanAI->IsTalking = true; pIllidanAI->AkamaGUID = m_creature->GetGUID(); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET, pIllidan->GetGUID()); - pIllidan->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); + m_creature->SetTargetGuid(pIllidan->GetObjectGuid()); + pIllidan->SetTargetGuid(m_creature->GetObjectGuid()); IsTalking = true; // Prevent Akama from starting to attack him // Prevent players from talking again @@ -1964,7 +1964,7 @@ bool GossipHello_npc_akama_at_illidan(Player* pPlayer, Creature* pCreature) { // TODO: Add gossip item only when Council is done? pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(10465, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10465, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/outland/black_temple/boss_shade_of_akama.cpp b/scripts/outland/black_temple/boss_shade_of_akama.cpp index ed01452..3eeb93f 100644 --- a/scripts/outland/black_temple/boss_shade_of_akama.cpp +++ b/scripts/outland/black_temple/boss_shade_of_akama.cpp @@ -211,7 +211,7 @@ struct MANGOS_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI { pSorcerer->RemoveSplineFlag(SPLINEFLAG_WALKMODE); pSorcerer->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ()); - pSorcerer->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); + pSorcerer->SetTargetGuid(m_creature->GetObjectGuid()); m_lSorcerersGUIDList.push_back(pSorcerer->GetGUID()); @@ -470,7 +470,7 @@ struct MANGOS_DLL_DECL npc_akamaAI : public ScriptedAI m_creature->SetInCombatWith(pShade); pShade->HandleEmote(EMOTE_STATE_NONE); - pShade->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); + pShade->SetTargetGuid(m_creature->GetObjectGuid()); pShade->SetInCombatWithZone(); @@ -702,7 +702,7 @@ bool GossipHello_npc_akama(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); } - pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(907, pCreature->GetObjectGuid()); return true; } diff --git a/scripts/outland/black_temple/illidari_council.cpp b/scripts/outland/black_temple/illidari_council.cpp index 8c76625..65c9edb 100644 --- a/scripts/outland/black_temple/illidari_council.cpp +++ b/scripts/outland/black_temple/illidari_council.cpp @@ -489,7 +489,7 @@ struct MANGOS_DLL_DECL boss_gathios_the_shattererAI : public boss_illidari_counc for(uint8 i = 0; i < 4; ++i) { if (Creature* pCouncil = m_creature->GetMap()->GetCreature(Council[i])) - pCouncil->CastSpell(pCouncil, spellid, true, NULL, NULL, m_creature->GetGUID()); + pCouncil->CastSpell(pCouncil, spellid, true, NULL, NULL, m_creature->GetObjectGuid()); } } diff --git a/scripts/outland/blades_edge_mountains.cpp b/scripts/outland/blades_edge_mountains.cpp index db55d94..30edd39 100644 --- a/scripts/outland/blades_edge_mountains.cpp +++ b/scripts/outland/blades_edge_mountains.cpp @@ -274,7 +274,7 @@ bool GossipHello_npc_overseer_nuaar(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(10682) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Overseer, I am here to negotiate on behalf of the Cenarion Expedition.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10532, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10532, pCreature->GetObjectGuid()); return true; } @@ -283,7 +283,7 @@ bool GossipSelect_npc_overseer_nuaar(Player* pPlayer, Creature* pCreature, uint3 { if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { - pPlayer->SEND_GOSSIP_MENU(10533, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10533, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens(10682); } return true; @@ -298,7 +298,7 @@ bool GossipHello_npc_saikkal_the_elder(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(10980) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Yes... yes, it's me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10794, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10794, pCreature->GetObjectGuid()); return true; } @@ -309,11 +309,11 @@ bool GossipSelect_npc_saikkal_the_elder(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Yes elder. Tell me more of the book.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(10795, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10795, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); - pPlayer->SEND_GOSSIP_MENU(10796, pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); + pPlayer->SEND_GOSSIP_MENU(10796, pCreature->GetObjectGuid()); break; } return true; @@ -328,12 +328,12 @@ bool GossipSelect_npc_saikkal_the_elder(Player* pPlayer, Creature* pCreature, ui bool GossipHello_npc_skyguard_handler_irena(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetReputationRank(1031) >= REP_HONORED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SKYGUARD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/outland/coilfang_reservoir/serpent_shrine/boss_fathomlord_karathress.cpp b/scripts/outland/coilfang_reservoir/serpent_shrine/boss_fathomlord_karathress.cpp index 9d2175e..38bd46f 100644 --- a/scripts/outland/coilfang_reservoir/serpent_shrine/boss_fathomlord_karathress.cpp +++ b/scripts/outland/coilfang_reservoir/serpent_shrine/boss_fathomlord_karathress.cpp @@ -117,7 +117,7 @@ struct MANGOS_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI // TODO - unneeded workaround - the spell should be cast by adviser onto karathress; text can also be handled in their AI // select the spell and the text based on the advisor which died - void EventAdvisorDeath(uint8 uiAdvisor) + void EventAdvisorDeath(uint32 uiAdvisor) { if (!m_creature->isAlive()) return; @@ -127,15 +127,15 @@ struct MANGOS_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI switch(uiAdvisor) { - case DATA_SHARKKIS: + case NPC_SHARKKIS: iSayGainAbility = SAY_GAIN_ABILITY1; uiSpell = SPELL_POWER_OF_SHARKKIS; break; - case DATA_TIDALVESS: + case NPC_TIDALVESS: iSayGainAbility = SAY_GAIN_ABILITY2; uiSpell = SPELL_POWER_OF_TIDALVESS; break; - case DATA_CARIBDIS: + case NPC_CARIBDIS: iSayGainAbility = SAY_GAIN_ABILITY3; uiSpell = SPELL_POWER_OF_CARIBDIS; break; @@ -153,9 +153,9 @@ struct MANGOS_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI if (!m_pInstance) return; - m_auiAdvisorsGUID[0] = m_pInstance->GetData64(DATA_SHARKKIS); - m_auiAdvisorsGUID[1] = m_pInstance->GetData64(DATA_TIDALVESS); - m_auiAdvisorsGUID[2] = m_pInstance->GetData64(DATA_CARIBDIS); + m_auiAdvisorsGUID[0] = m_pInstance->GetData64(NPC_SHARKKIS); + m_auiAdvisorsGUID[1] = m_pInstance->GetData64(NPC_TIDALVESS); + m_auiAdvisorsGUID[2] = m_pInstance->GetData64(NPC_CARIBDIS); } void Aggro(Unit* pWho) @@ -279,11 +279,7 @@ struct MANGOS_DLL_DECL Advisor_Base_AI : public ScriptedAI m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); } - protected: - uint8 m_uiAdvisor; - - public: - ScriptedInstance* m_pInstance; + ScriptedInstance* m_pInstance; void JustReachedHome() { @@ -308,10 +304,10 @@ struct MANGOS_DLL_DECL Advisor_Base_AI : public ScriptedAI if (!m_pInstance) return; - if (Creature* pKarathress = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KARATHRESS))) + if (Creature* pKarathress = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_KARATHRESS))) { if (boss_fathomlord_karathressAI* pKaraAI = dynamic_cast(pKarathress->AI())) - pKaraAI->EventAdvisorDeath(m_uiAdvisor); + pKaraAI->EventAdvisorDeath(m_creature->GetEntry()); } } }; @@ -319,11 +315,7 @@ struct MANGOS_DLL_DECL Advisor_Base_AI : public ScriptedAI //Fathom-Guard Sharkkis AI struct MANGOS_DLL_DECL boss_fathomguard_sharkkisAI : public Advisor_Base_AI { - boss_fathomguard_sharkkisAI(Creature* pCreature) : Advisor_Base_AI(pCreature) - { - Reset(); - m_uiAdvisor = DATA_SHARKKIS; - } + boss_fathomguard_sharkkisAI(Creature* pCreature) : Advisor_Base_AI(pCreature) { Reset(); } // timers uint32 m_uiHurlTridentTimer; @@ -446,11 +438,7 @@ struct MANGOS_DLL_DECL boss_fathomguard_sharkkisAI : public Advisor_Base_AI //Fathom-Guard Tidalvess AI struct MANGOS_DLL_DECL boss_fathomguard_tidalvessAI : public Advisor_Base_AI { - boss_fathomguard_tidalvessAI(Creature* pCreature) : Advisor_Base_AI(pCreature) - { - Reset(); - m_uiAdvisor = DATA_TIDALVESS; - } + boss_fathomguard_tidalvessAI(Creature* pCreature) : Advisor_Base_AI(pCreature) { Reset(); } // timers uint32 m_uiFrostShockTimer; @@ -497,11 +485,7 @@ struct MANGOS_DLL_DECL boss_fathomguard_tidalvessAI : public Advisor_Base_AI //Fathom-Guard Caribdis AI struct MANGOS_DLL_DECL boss_fathomguard_caribdisAI : public Advisor_Base_AI { - boss_fathomguard_caribdisAI(Creature* pCreature) : Advisor_Base_AI(pCreature) - { - Reset(); - m_uiAdvisor = DATA_CARIBDIS; - } + boss_fathomguard_caribdisAI(Creature* pCreature) : Advisor_Base_AI(pCreature) { Reset(); } // timers uint32 m_uiWaterBoltVolleyTimer; @@ -564,9 +548,9 @@ struct MANGOS_DLL_DECL boss_fathomguard_caribdisAI : public Advisor_Base_AI { switch(urand(0, 3)) { - case 0: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_KARATHRESS)); break; - case 1: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_SHARKKIS)); break; - case 2: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_TIDALVESS)); break; + case 0: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_KARATHRESS)); break; + case 1: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_SHARKKIS)); break; + case 2: pUnit = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_TIDALVESS)); break; case 3: pUnit = m_creature; break; } } diff --git a/scripts/outland/coilfang_reservoir/serpent_shrine/boss_lady_vashj.cpp b/scripts/outland/coilfang_reservoir/serpent_shrine/boss_lady_vashj.cpp index d119f64..d1dcf94 100644 --- a/scripts/outland/coilfang_reservoir/serpent_shrine/boss_lady_vashj.cpp +++ b/scripts/outland/coilfang_reservoir/serpent_shrine/boss_lady_vashj.cpp @@ -507,13 +507,13 @@ struct MANGOS_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI { if (m_pInstance) { - if (Creature* pVashj = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_LADYVASHJ))) + if (Creature* pVashj = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_LADYVASHJ))) { if (pVashj->IsWithinDistInMap(m_creature, INTERACTION_DISTANCE)) { //increase lady vashj damage if (pVashj->isAlive() && pVashj->isInCombat()) - m_creature->CastSpell(pVashj, SPELL_SURGE, false, 0, 0, pVashj->GetGUID()); + m_creature->CastSpell(pVashj, SPELL_SURGE, false, NULL, NULL, pVashj->GetObjectGuid()); else m_creature->SetDeathState(JUST_DIED); } @@ -607,7 +607,7 @@ struct MANGOS_DLL_DECL mob_toxic_sporebatAI : public ScriptedAI if (m_pInstance) { //check if vashj is death - Creature* pVashj = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_LADYVASHJ)); + Creature* pVashj = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_LADYVASHJ)); if (!pVashj || !pVashj->isAlive()) { //remove @@ -657,7 +657,7 @@ bool ItemUse_item_tainted_core(Player* pPlayer, Item* pItem, SpellCastTargets co return true; } - Creature* pVashj = pPlayer->GetMap()->GetCreature(pInstance->GetData64(DATA_LADYVASHJ)); + Creature* pVashj = pPlayer->GetMap()->GetCreature(pInstance->GetData64(NPC_LADYVASHJ)); if (!pVashj) return true; diff --git a/scripts/outland/coilfang_reservoir/serpent_shrine/instance_serpent_shrine.cpp b/scripts/outland/coilfang_reservoir/serpent_shrine/instance_serpent_shrine.cpp index 84326c0..83db493 100644 --- a/scripts/outland/coilfang_reservoir/serpent_shrine/instance_serpent_shrine.cpp +++ b/scripts/outland/coilfang_reservoir/serpent_shrine/instance_serpent_shrine.cpp @@ -33,168 +33,166 @@ EndScriptData */ 5 - Lady Vashj Event */ -const int MAX_ENCOUNTER = 6; -const int MAX_GENERATOR = 4; - -struct MANGOS_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance +instance_serpentshrine_cavern::instance_serpentshrine_cavern(Map* pMap) : ScriptedInstance(pMap), + m_uiSharkkis(0), + m_uiTidalvess(0), + m_uiCaribdis(0), + m_uiLadyVashj(0), + m_uiKarathress(0), + m_uiKarathressEvent_Starter(0) { - instance_serpentshrine_cavern(Map* pMap) : ScriptedInstance(pMap) { Initialize(); }; - - uint64 m_uiSharkkis; - uint64 m_uiTidalvess; - uint64 m_uiCaribdis; - uint64 m_uiLadyVashj; - uint64 m_uiKarathress; - uint64 m_uiKarathressEvent_Starter; + Initialize(); +} - uint32 m_auiShieldGenerator[MAX_GENERATOR]; - uint32 m_auiEncounter[MAX_ENCOUNTER]; +void instance_serpentshrine_cavern::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + memset(&m_auiShieldGenerator, 0, sizeof(m_auiShieldGenerator)); +} - void Initialize() +bool instance_serpentshrine_cavern::IsEncounterInProgress() const +{ + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - memset(&m_auiShieldGenerator, 0, sizeof(m_auiShieldGenerator)); - - m_uiSharkkis = 0; - m_uiTidalvess = 0; - m_uiCaribdis = 0; - m_uiLadyVashj = 0; - m_uiKarathress = 0; - m_uiKarathressEvent_Starter = 0; + if (m_auiEncounter[i] == IN_PROGRESS) + return true; } - bool IsEncounterInProgress() const - { - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - - return false; - } + return false; +} - void OnCreatureCreate(Creature* pCreature) +void instance_serpentshrine_cavern::OnCreatureCreate(Creature* pCreature) +{ + switch (pCreature->GetEntry()) { - switch(pCreature->GetEntry()) - { - case 21212: m_uiLadyVashj = pCreature->GetGUID(); break; - case 21214: m_uiKarathress = pCreature->GetGUID(); break; - case 21966: m_uiSharkkis = pCreature->GetGUID(); break; - case 21965: m_uiTidalvess = pCreature->GetGUID(); break; - case 21964: m_uiCaribdis = pCreature->GetGUID(); break; - } + case NPC_LADYVASHJ: m_uiLadyVashj = pCreature->GetGUID(); break; + case NPC_KARATHRESS: m_uiKarathress = pCreature->GetGUID(); break; + case NPC_SHARKKIS: m_uiSharkkis = pCreature->GetGUID(); break; + case NPC_TIDALVESS: m_uiTidalvess = pCreature->GetGUID(); break; + case NPC_CARIBDIS: m_uiCaribdis = pCreature->GetGUID(); break; } +} - void SetData64(uint32 uiType, uint64 uiData) - { - if (uiType == DATA_KARATHRESS_STARTER) - m_uiKarathressEvent_Starter = uiData; - } +void instance_serpentshrine_cavern::SetData64(uint32 uiType, uint64 uiData) +{ + if (uiType == DATA_KARATHRESS_STARTER) + m_uiKarathressEvent_Starter = uiData; +} - uint64 GetData64(uint32 uiIdentifier) +uint64 instance_serpentshrine_cavern::GetData64(uint32 uiData) +{ + switch (uiData) { - switch(uiIdentifier) - { - case DATA_SHARKKIS: - return m_uiSharkkis; - case DATA_TIDALVESS: - return m_uiTidalvess; - case DATA_CARIBDIS: - return m_uiCaribdis; - case DATA_LADYVASHJ: - return m_uiLadyVashj; - case DATA_KARATHRESS: - return m_uiKarathress; - case DATA_KARATHRESS_STARTER: - return m_uiKarathressEvent_Starter; - } - return 0; + case NPC_SHARKKIS: return m_uiSharkkis; + case NPC_TIDALVESS: return m_uiTidalvess; + case NPC_CARIBDIS: return m_uiCaribdis; + case NPC_LADYVASHJ: return m_uiLadyVashj; + case NPC_KARATHRESS: return m_uiKarathress; + case DATA_KARATHRESS_STARTER: return m_uiKarathressEvent_Starter; + + default: + return 0; } +} - void SetData(uint32 uiType, uint32 uiData) +void instance_serpentshrine_cavern::SetData(uint32 uiType, uint32 uiData) +{ + switch (uiType) { - switch(uiType) - { - case TYPE_HYDROSS_EVENT: - m_auiEncounter[0] = uiData; - break; - case TYPE_LEOTHERAS_EVENT: - m_auiEncounter[1] = uiData; - break; - case TYPE_THELURKER_EVENT: - m_auiEncounter[2] = uiData; - break; - case TYPE_KARATHRESS_EVENT: - m_auiEncounter[3] = uiData; - break; - case TYPE_MOROGRIM_EVENT: - m_auiEncounter[4] = uiData; - break; - case TYPE_LADYVASHJ_EVENT: - if (uiData == NOT_STARTED) - memset(&m_auiShieldGenerator, 0, sizeof(m_auiShieldGenerator)); - m_auiEncounter[5] = uiData; - break; - case TYPE_SHIELDGENERATOR1: - m_auiShieldGenerator[0] = uiData; - break; - case TYPE_SHIELDGENERATOR2: - m_auiShieldGenerator[1] = uiData; - break; - case TYPE_SHIELDGENERATOR3: - m_auiShieldGenerator[2] = uiData; - break; - case TYPE_SHIELDGENERATOR4: - m_auiShieldGenerator[3] = uiData; - break; - } + case TYPE_HYDROSS_EVENT: + m_auiEncounter[0] = uiData; + break; + case TYPE_LEOTHERAS_EVENT: + m_auiEncounter[1] = uiData; + break; + case TYPE_THELURKER_EVENT: + m_auiEncounter[2] = uiData; + break; + case TYPE_KARATHRESS_EVENT: + m_auiEncounter[3] = uiData; + break; + case TYPE_MOROGRIM_EVENT: + m_auiEncounter[4] = uiData; + break; + case TYPE_LADYVASHJ_EVENT: + if (uiData == NOT_STARTED) + memset(&m_auiShieldGenerator, 0, sizeof(m_auiShieldGenerator)); + m_auiEncounter[5] = uiData; + break; + case TYPE_SHIELDGENERATOR1: + case TYPE_SHIELDGENERATOR2: + case TYPE_SHIELDGENERATOR3: + case TYPE_SHIELDGENERATOR4: + m_auiShieldGenerator[uiType - TYPE_SHIELDGENERATOR1] = uiData; + return; } - uint32 GetData(uint32 uiType) + if (uiData == DONE) { - switch(uiType) - { - case TYPE_HYDROSS_EVENT: - return m_auiEncounter[0]; - - case TYPE_LEOTHERAS_EVENT: - return m_auiEncounter[1]; - - case TYPE_THELURKER_EVENT: - return m_auiEncounter[2]; + OUT_SAVE_INST_DATA; - case TYPE_KARATHRESS_EVENT: - return m_auiEncounter[3]; + std::ostringstream saveStream; + saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " + << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5]; - case TYPE_MOROGRIM_EVENT: - return m_auiEncounter[4]; + m_strInstData = saveStream.str(); - case TYPE_LADYVASHJ_EVENT: - return m_auiEncounter[5]; + SaveToDB(); + OUT_SAVE_INST_DATA_COMPLETE; + } +} - case TYPE_SHIELDGENERATOR1: - return m_auiShieldGenerator[0]; +void instance_serpentshrine_cavern::Load(const char* chrIn) +{ + if (!chrIn) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } - case TYPE_SHIELDGENERATOR2: - return m_auiShieldGenerator[1]; + OUT_LOAD_INST_DATA(chrIn); - case TYPE_SHIELDGENERATOR3: - return m_auiShieldGenerator[2]; + std::istringstream loadStream(chrIn); + loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] + >> m_auiEncounter[4] >> m_auiEncounter[5]; - case TYPE_SHIELDGENERATOR4: - return m_auiShieldGenerator[3]; + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) + { + if (m_auiEncounter[i] == IN_PROGRESS) + m_auiEncounter[i] = NOT_STARTED; + } - case TYPE_VASHJ_PHASE3_CHECK: - for(uint8 i = 0; i < MAX_GENERATOR; ++i) - { - if (m_auiShieldGenerator[i] != DONE) - return NOT_STARTED; - } - return DONE; - } + OUT_LOAD_INST_DATA_COMPLETE; +} - return 0; +uint32 instance_serpentshrine_cavern::GetData(uint32 uiType) +{ + switch (uiType) + { + case TYPE_HYDROSS_EVENT: return m_auiEncounter[0]; + case TYPE_LEOTHERAS_EVENT: return m_auiEncounter[1]; + case TYPE_THELURKER_EVENT: return m_auiEncounter[2]; + case TYPE_KARATHRESS_EVENT: return m_auiEncounter[3]; + case TYPE_MOROGRIM_EVENT: return m_auiEncounter[4]; + case TYPE_LADYVASHJ_EVENT: return m_auiEncounter[5]; + + case TYPE_SHIELDGENERATOR1: return m_auiShieldGenerator[0]; + case TYPE_SHIELDGENERATOR2: return m_auiShieldGenerator[1]; + case TYPE_SHIELDGENERATOR3: return m_auiShieldGenerator[2]; + case TYPE_SHIELDGENERATOR4: return m_auiShieldGenerator[3]; + + case TYPE_VASHJ_PHASE3_CHECK: + for(uint8 i = 0; i < MAX_GENERATOR; ++i) + { + if (m_auiShieldGenerator[i] != DONE) + return NOT_STARTED; + } + return DONE; + + default: + return 0; } -}; +} InstanceData* GetInstanceData_instance_serpentshrine_cavern(Map* pMap) { @@ -203,9 +201,10 @@ InstanceData* GetInstanceData_instance_serpentshrine_cavern(Map* pMap) void AddSC_instance_serpentshrine_cavern() { - Script *newscript; - newscript = new Script; - newscript->Name = "instance_serpent_shrine"; - newscript->GetInstanceData = &GetInstanceData_instance_serpentshrine_cavern; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_serpent_shrine"; + pNewScript->GetInstanceData = &GetInstanceData_instance_serpentshrine_cavern; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/coilfang_reservoir/serpent_shrine/serpent_shrine.h b/scripts/outland/coilfang_reservoir/serpent_shrine/serpent_shrine.h index a87229f..f15da1d 100644 --- a/scripts/outland/coilfang_reservoir/serpent_shrine/serpent_shrine.h +++ b/scripts/outland/coilfang_reservoir/serpent_shrine/serpent_shrine.h @@ -7,25 +7,60 @@ enum { + MAX_ENCOUNTER = 6, + MAX_GENERATOR = 4, + TYPE_HYDROSS_EVENT = 1, TYPE_KARATHRESS_EVENT = 2, TYPE_LADYVASHJ_EVENT = 3, TYPE_LEOTHERAS_EVENT = 4, TYPE_MOROGRIM_EVENT = 5, TYPE_THELURKER_EVENT = 6, + TYPE_VASHJ_PHASE3_CHECK = 7, - DATA_KARATHRESS_STARTER = 10, - DATA_KARATHRESS = 11, - DATA_CARIBDIS = 12, - DATA_SHARKKIS = 13, - DATA_TIDALVESS = 14, + TYPE_SHIELDGENERATOR1 = 8, + TYPE_SHIELDGENERATOR2 = TYPE_SHIELDGENERATOR1 + 1, + TYPE_SHIELDGENERATOR3 = TYPE_SHIELDGENERATOR1 + 2, + TYPE_SHIELDGENERATOR4 = TYPE_SHIELDGENERATOR1 + 3, - DATA_LADYVASHJ = 15, - TYPE_VASHJ_PHASE3_CHECK = 16, + DATA_KARATHRESS_STARTER = 12, // Player who started the Karathress encounter - TYPE_SHIELDGENERATOR1 = 20, - TYPE_SHIELDGENERATOR2 = 21, - TYPE_SHIELDGENERATOR3 = 22, - TYPE_SHIELDGENERATOR4 = 23 + NPC_KARATHRESS = 21214, + NPC_CARIBDIS = 21964, + NPC_SHARKKIS = 21966, + NPC_TIDALVESS = 21965, + NPC_LADYVASHJ = 21212, }; + +class MANGOS_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance +{ + public: + instance_serpentshrine_cavern(Map* pMap); + + void Initialize(); + bool IsEncounterInProgress() const; + + void OnCreatureCreate(Creature* pCreature); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + void SetData64(uint32 uiType, uint64 uiData); + uint64 GetData64(uint32 uiData); + + const char* Save() { return m_strInstData.c_str(); } + void Load(const char* chrIn); + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + uint32 m_auiShieldGenerator[MAX_GENERATOR]; + std::string m_strInstData; + + uint64 m_uiSharkkis; + uint64 m_uiTidalvess; + uint64 m_uiCaribdis; + uint64 m_uiLadyVashj; + uint64 m_uiKarathress; + uint64 m_uiKarathressEvent_Starter; +}; + #endif diff --git a/scripts/outland/coilfang_reservoir/steam_vault/boss_mekgineer_steamrigger.cpp b/scripts/outland/coilfang_reservoir/steam_vault/boss_mekgineer_steamrigger.cpp index c494dd8..402772b 100644 --- a/scripts/outland/coilfang_reservoir/steam_vault/boss_mekgineer_steamrigger.cpp +++ b/scripts/outland/coilfang_reservoir/steam_vault/boss_mekgineer_steamrigger.cpp @@ -226,9 +226,9 @@ struct MANGOS_DLL_DECL mob_steamrigger_mechanicAI : public ScriptedAI { if (Repair_Timer < diff) { - if (m_pInstance && m_pInstance->GetData64(DATA_MEKGINEERSTEAMRIGGER) && m_pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == IN_PROGRESS) + if (m_pInstance && m_pInstance->GetData64(NPC_STEAMRIGGER) && m_pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == IN_PROGRESS) { - if (Creature* pMekgineer = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_MEKGINEERSTEAMRIGGER))) + if (Creature* pMekgineer = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_STEAMRIGGER))) { if (m_creature->IsWithinDistInMap(pMekgineer, MAX_REPAIR_RANGE)) { diff --git a/scripts/outland/coilfang_reservoir/steam_vault/instance_steam_vault.cpp b/scripts/outland/coilfang_reservoir/steam_vault/instance_steam_vault.cpp index 3b2b3ea..26b9b8d 100644 --- a/scripts/outland/coilfang_reservoir/steam_vault/instance_steam_vault.cpp +++ b/scripts/outland/coilfang_reservoir/steam_vault/instance_steam_vault.cpp @@ -24,11 +24,6 @@ EndScriptData */ #include "precompiled.h" #include "steam_vault.h" -#define MAX_ENCOUNTER 4 - -#define MAIN_CHAMBERS_DOOR 183049 -#define ACCESS_PANEL_HYDRO 184125 -#define ACCESS_PANEL_MEK 184126 /* Steam Vaults encounters: 1 - Hydromancer Thespia Event @@ -43,145 +38,114 @@ bool GOUse_go_main_chambers_access_panel(Player* pPlayer, GameObject* pGo) if (!pInstance) return false; - if (pGo->GetEntry() == ACCESS_PANEL_HYDRO && pInstance->GetData(TYPE_HYDROMANCER_THESPIA) == DONE) - pInstance->SetData(TYPE_HYDROMANCER_THESPIA,SPECIAL); + if (pGo->GetEntry() == GO_ACCESS_PANEL_HYDRO && pInstance->GetData(TYPE_HYDROMANCER_THESPIA) == DONE) + pInstance->SetData(TYPE_HYDROMANCER_THESPIA, SPECIAL); - if (pGo->GetEntry() == ACCESS_PANEL_MEK && pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE) - pInstance->SetData(TYPE_MEKGINEER_STEAMRIGGER,SPECIAL); + if (pGo->GetEntry() == GO_ACCESS_PANEL_MEK && pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE) + pInstance->SetData(TYPE_MEKGINEER_STEAMRIGGER, SPECIAL); return true; } -struct MANGOS_DLL_DECL instance_steam_vault : public ScriptedInstance +instance_steam_vault::instance_steam_vault(Map* pMap) : ScriptedInstance(pMap), + m_uiThespiaGUID(0), + m_uiMekgineerGUID(0), + m_uiKalithreshGUID(0), + m_uiMainChambersDoor(0), + m_uiAccessPanelHydro(0), + m_uiAccessPanelMek(0) { - instance_steam_vault(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - - uint64 m_uiThespiaGUID; - uint64 m_uiMekgineerGUID; - uint64 m_uiKalithreshGUID; + Initialize(); +} - uint64 m_uiMainChambersDoor; - uint64 m_uiAccessPanelHydro; - uint64 m_uiAccessPanelMek; +void instance_steam_vault::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - void Initialize() +void instance_steam_vault::OnCreatureCreate(Creature* pCreature) +{ + switch(pCreature->GetEntry()) { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiThespiaGUID = 0; - m_uiMekgineerGUID = 0; - m_uiKalithreshGUID = 0; - m_uiMainChambersDoor = 0; - m_uiAccessPanelHydro = 0; - m_uiAccessPanelMek = 0; + case NPC_THESPIA: m_uiThespiaGUID = pCreature->GetGUID(); break; + case NPC_STEAMRIGGER: m_uiMekgineerGUID = pCreature->GetGUID(); break; + case NPC_KALITRESH: m_uiKalithreshGUID = pCreature->GetGUID(); break; } +} - bool IsEncounterInProgress() const +void instance_steam_vault::OnObjectCreate(GameObject* pGo) +{ + switch(pGo->GetEntry()) { - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - - return false; + case GO_MAIN_CHAMBERS_DOOR: m_uiMainChambersDoor = pGo->GetGUID(); break; + case GO_ACCESS_PANEL_HYDRO: m_uiAccessPanelHydro = pGo->GetGUID(); break; + case GO_ACCESS_PANEL_MEK: m_uiAccessPanelMek = pGo->GetGUID(); break; } +} - void OnCreatureCreate(Creature* pCreature) +void instance_steam_vault::SetData(uint32 uiType, uint32 uiData) +{ + switch (uiType) { - switch(pCreature->GetEntry()) - { - case 17797: m_uiThespiaGUID = pCreature->GetGUID(); break; - case 17796: m_uiMekgineerGUID = pCreature->GetGUID(); break; - case 17798: m_uiKalithreshGUID = pCreature->GetGUID(); break; - } - } + case TYPE_HYDROMANCER_THESPIA: + if (uiData == SPECIAL) + { + DoUseDoorOrButton(m_uiAccessPanelHydro); + + if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL) + DoUseDoorOrButton(m_uiMainChambersDoor); + + debug_log("SD2: Instance Steamvault: Access panel used."); + } + m_auiEncounter[0] = uiData; + break; + case TYPE_MEKGINEER_STEAMRIGGER: + if (uiData == SPECIAL) + { + DoUseDoorOrButton(m_uiAccessPanelMek); + + if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL) + DoUseDoorOrButton(m_uiMainChambersDoor); - void OnObjectCreate(GameObject* pGo) - { - switch(pGo->GetEntry()) - { - case MAIN_CHAMBERS_DOOR: m_uiMainChambersDoor = pGo->GetGUID(); break; - case ACCESS_PANEL_HYDRO: m_uiAccessPanelHydro = pGo->GetGUID(); break; - case ACCESS_PANEL_MEK: m_uiAccessPanelMek = pGo->GetGUID(); break; - } + debug_log("SD2: Instance Steamvault: Access panel used."); + } + m_auiEncounter[1] = uiData; + break; + case TYPE_WARLORD_KALITHRESH: + m_auiEncounter[2] = uiData; + break; + case TYPE_DISTILLER: + m_auiEncounter[3] = uiData; + break; } +} - void SetData(uint32 type, uint32 data) +uint32 instance_steam_vault::GetData(uint32 uiType) +{ + switch(uiType) { - switch(type) - { - case TYPE_HYDROMANCER_THESPIA: - if (data == SPECIAL) - { - if (GameObject* pGo = instance->GetGameObject(m_uiAccessPanelHydro)) - pGo->SetGoState(GO_STATE_ACTIVE); - - if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL) - { - if (GameObject* pGo = instance->GetGameObject(m_uiMainChambersDoor)) - pGo->SetGoState(GO_STATE_ACTIVE); - } - - debug_log("SD2: Instance Steamvault: Access panel used."); - } - m_auiEncounter[0] = data; - break; - case TYPE_MEKGINEER_STEAMRIGGER: - if (data == SPECIAL) - { - if (GameObject* pGo = instance->GetGameObject(m_uiAccessPanelMek)) - pGo->SetGoState(GO_STATE_ACTIVE); - - if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL) - { - if (GameObject* pGo = instance->GetGameObject(m_uiMainChambersDoor)) - pGo->SetGoState(GO_STATE_ACTIVE); - } + case TYPE_HYDROMANCER_THESPIA: return m_auiEncounter[0]; + case TYPE_MEKGINEER_STEAMRIGGER: return m_auiEncounter[1]; + case TYPE_WARLORD_KALITHRESH: return m_auiEncounter[2]; + case TYPE_DISTILLER: return m_auiEncounter[3]; - debug_log("SD2: Instance Steamvault: Access panel used."); - } - m_auiEncounter[1] = data; - break; - case TYPE_WARLORD_KALITHRESH: - m_auiEncounter[2] = data; - break; - case TYPE_DISTILLER: - m_auiEncounter[3] = data; - break; - } + default: + return 0; } +} - uint32 GetData(uint32 type) +uint64 instance_steam_vault::GetData64(uint32 uiType) +{ + switch (uiType) { - switch(type) - { - case TYPE_HYDROMANCER_THESPIA: - return m_auiEncounter[0]; - case TYPE_MEKGINEER_STEAMRIGGER: - return m_auiEncounter[1]; - case TYPE_WARLORD_KALITHRESH: - return m_auiEncounter[2]; - case TYPE_DISTILLER: - return m_auiEncounter[3]; - } - return 0; - } + case NPC_THESPIA: return m_uiThespiaGUID; + case NPC_STEAMRIGGER: return m_uiMekgineerGUID; + case NPC_KALITRESH: return m_uiKalithreshGUID; - uint64 GetData64(uint32 data) - { - switch(data) - { - case DATA_THESPIA: - return m_uiThespiaGUID; - case DATA_MEKGINEERSTEAMRIGGER: - return m_uiMekgineerGUID; - case DATA_KALITRESH: - return m_uiKalithreshGUID; - } - return 0; + default: + return 0; } -}; +} InstanceData* GetInstanceData_instance_steam_vault(Map* pMap) { @@ -190,15 +154,15 @@ InstanceData* GetInstanceData_instance_steam_vault(Map* pMap) void AddSC_instance_steam_vault() { - Script *newscript; + Script* pNewScript; - newscript = new Script; - newscript->Name = "go_main_chambers_access_panel"; - newscript->pGOUse = &GOUse_go_main_chambers_access_panel; - newscript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "go_main_chambers_access_panel"; + pNewScript->pGOUse = &GOUse_go_main_chambers_access_panel; + pNewScript->RegisterSelf(); - newscript = new Script; - newscript->Name = "instance_steam_vault"; - newscript->GetInstanceData = &GetInstanceData_instance_steam_vault; - newscript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "instance_steam_vault"; + pNewScript->GetInstanceData = &GetInstanceData_instance_steam_vault; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/coilfang_reservoir/steam_vault/steam_vault.h b/scripts/outland/coilfang_reservoir/steam_vault/steam_vault.h index 5514f10..1fc33e6 100644 --- a/scripts/outland/coilfang_reservoir/steam_vault/steam_vault.h +++ b/scripts/outland/coilfang_reservoir/steam_vault/steam_vault.h @@ -5,12 +5,48 @@ #ifndef DEF_STEAM_VAULT_H #define DEF_STEAM_VAULT_H -#define TYPE_HYDROMANCER_THESPIA 1 -#define TYPE_MEKGINEER_STEAMRIGGER 2 -#define TYPE_WARLORD_KALITHRESH 3 -#define TYPE_DISTILLER 4 - -#define DATA_MEKGINEERSTEAMRIGGER 5 -#define DATA_KALITRESH 6 -#define DATA_THESPIA 7 +enum +{ + MAX_ENCOUNTER = 4, + + TYPE_HYDROMANCER_THESPIA = 1, + TYPE_MEKGINEER_STEAMRIGGER = 2, + TYPE_WARLORD_KALITHRESH = 3, + TYPE_DISTILLER = 4, + + NPC_STEAMRIGGER = 17796, + NPC_KALITRESH = 17798, + NPC_THESPIA = 17797, + + GO_MAIN_CHAMBERS_DOOR = 183049, + GO_ACCESS_PANEL_HYDRO = 184125, + GO_ACCESS_PANEL_MEK = 184126, +}; + +class MANGOS_DLL_DECL instance_steam_vault : public ScriptedInstance +{ + public: + instance_steam_vault(Map* pMap); + + void Initialize(); + + void OnCreatureCreate(Creature* pCreature); + void OnObjectCreate(GameObject* pGo); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiType); + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + + uint64 m_uiThespiaGUID; + uint64 m_uiMekgineerGUID; + uint64 m_uiKalithreshGUID; + + uint64 m_uiMainChambersDoor; + uint64 m_uiAccessPanelHydro; + uint64 m_uiAccessPanelMek; +}; + #endif diff --git a/scripts/outland/gruuls_lair/boss_gruul.cpp b/scripts/outland/gruuls_lair/boss_gruul.cpp index f1c59aa..8f92e7c 100644 --- a/scripts/outland/gruuls_lair/boss_gruul.cpp +++ b/scripts/outland/gruuls_lair/boss_gruul.cpp @@ -128,8 +128,8 @@ struct MANGOS_DLL_DECL boss_gruulAI : public ScriptedAI { switch(urand(0, 1)) { - case 0: pTarget->CastSpell(pTarget, SPELL_MAGNETIC_PULL, true, NULL, NULL, m_creature->GetGUID()); break; - case 1: pTarget->CastSpell(pTarget, SPELL_KNOCK_BACK, true, NULL, NULL, m_creature->GetGUID()); break; + case 0: pTarget->CastSpell(pTarget, SPELL_MAGNETIC_PULL, true, NULL, NULL, m_creature->GetObjectGuid()); break; + case 1: pTarget->CastSpell(pTarget, SPELL_KNOCK_BACK, true, NULL, NULL, m_creature->GetObjectGuid()); break; } } } diff --git a/scripts/outland/gruuls_lair/boss_high_king_maulgar.cpp b/scripts/outland/gruuls_lair/boss_high_king_maulgar.cpp index 658c91e..adedc27 100644 --- a/scripts/outland/gruuls_lair/boss_high_king_maulgar.cpp +++ b/scripts/outland/gruuls_lair/boss_high_king_maulgar.cpp @@ -165,10 +165,10 @@ struct MANGOS_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI return; //get council member's guid to respawn them if needed - m_auiCouncil[0] = m_pInstance->GetData64(DATA_KIGGLER); - m_auiCouncil[1] = m_pInstance->GetData64(DATA_BLINDEYE); - m_auiCouncil[2] = m_pInstance->GetData64(DATA_OLM); - m_auiCouncil[3] = m_pInstance->GetData64(DATA_KROSH); + m_auiCouncil[0] = m_pInstance->GetData64(NPC_KIGGLER); + m_auiCouncil[1] = m_pInstance->GetData64(NPC_BLINDEYE); + m_auiCouncil[2] = m_pInstance->GetData64(NPC_OLM); + m_auiCouncil[3] = m_pInstance->GetData64(NPC_KROSH); } void EventCouncilDeath() @@ -286,7 +286,7 @@ struct MANGOS_DLL_DECL Council_Base_AI : public ScriptedAI if (!m_pInstance) return; - Creature* pMaulgar = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_MAULGAR)); + Creature* pMaulgar = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_MAULGAR)); if (pMaulgar->isAlive()) { diff --git a/scripts/outland/gruuls_lair/gruuls_lair.h b/scripts/outland/gruuls_lair/gruuls_lair.h index 35d040b..1d71c12 100644 --- a/scripts/outland/gruuls_lair/gruuls_lair.h +++ b/scripts/outland/gruuls_lair/gruuls_lair.h @@ -17,11 +17,42 @@ enum GO_PORT_GRONN_2 = 184662, // NPC GUIDs - DATA_MAULGAR = 3, - DATA_BLINDEYE = 4, - DATA_KIGGLER = 5, - DATA_KROSH = 6, - DATA_OLM = 7 + NPC_MAULGAR = 18831, + NPC_BLINDEYE = 18836, + NPC_KIGGLER = 18835, + NPC_KROSH = 18832, + NPC_OLM = 18834, +}; + +struct MANGOS_DLL_DECL instance_gruuls_lair : public ScriptedInstance +{ + public: + instance_gruuls_lair(Map *pMap); + + void Initialize(); + bool IsEncounterInProgress() const; + + void OnCreatureCreate(Creature* pCreature); + void OnObjectCreate(GameObject* pGo); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiData); + + const char* Save() { return m_strSaveData.c_str(); } + void Load(const char* chrIn); + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + std::string m_strSaveData; + + uint64 m_uiMaulgarGUID; + uint64 m_uiKigglerGUID; + uint64 m_uiBlindeyeGUID; + uint64 m_uiOlmGUID; + uint64 m_uiKroshGUID; + uint64 m_uiMaulgarDoorGUID; + uint64 m_uiGruulEncounterDoorGUID; }; #endif diff --git a/scripts/outland/gruuls_lair/instance_gruuls_lair.cpp b/scripts/outland/gruuls_lair/instance_gruuls_lair.cpp index 6ce5cea..7c818dd 100644 --- a/scripts/outland/gruuls_lair/instance_gruuls_lair.cpp +++ b/scripts/outland/gruuls_lair/instance_gruuls_lair.cpp @@ -29,149 +29,136 @@ EndScriptData */ 2 - Gruul event */ -struct MANGOS_DLL_DECL instance_gruuls_lair : public ScriptedInstance +instance_gruuls_lair::instance_gruuls_lair(Map *pMap) : ScriptedInstance(pMap), + m_uiMaulgarGUID(0), + m_uiKigglerGUID(0), + m_uiBlindeyeGUID(0), + m_uiOlmGUID(0), + m_uiKroshGUID(0), + + m_uiMaulgarDoorGUID(0), + m_uiGruulEncounterDoorGUID(0) { - instance_gruuls_lair(Map *pMap) : ScriptedInstance(pMap) {Initialize();} - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - std::string strSaveData; - - uint64 m_uiMaulgarGUID; - uint64 m_uiKigglerGUID; - uint64 m_uiBlindeyeGUID; - uint64 m_uiOlmGUID; - uint64 m_uiKroshGUID; - uint64 m_uiMaulgarDoorGUID; - uint64 m_uiGruulEncounterDoorGUID; + Initialize(); +} - void Initialize() - { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +void instance_gruuls_lair::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - m_uiMaulgarGUID = 0; - m_uiKigglerGUID = 0; - m_uiBlindeyeGUID = 0; - m_uiOlmGUID = 0; - m_uiKroshGUID = 0; +bool instance_gruuls_lair::IsEncounterInProgress() const +{ + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) + if (m_auiEncounter[i] == IN_PROGRESS) + return true; - m_uiMaulgarDoorGUID = 0; - m_uiGruulEncounterDoorGUID = 0; - } + return false; +} - bool IsEncounterInProgress() const +void instance_gruuls_lair::OnCreatureCreate(Creature* pCreature) +{ + switch (pCreature->GetEntry()) { - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - - return false; + case NPC_MAULGAR: m_uiMaulgarGUID = pCreature->GetGUID(); break; + case NPC_KROSH: m_uiKroshGUID = pCreature->GetGUID(); break; + case NPC_OLM: m_uiOlmGUID = pCreature->GetGUID(); break; + case NPC_KIGGLER: m_uiKigglerGUID = pCreature->GetGUID(); break; + case NPC_BLINDEYE: m_uiBlindeyeGUID = pCreature->GetGUID(); break; } +} - void OnCreatureCreate(Creature* pCreature) +void instance_gruuls_lair::OnObjectCreate(GameObject* pGo) +{ + switch (pGo->GetEntry()) { - switch (pCreature->GetEntry()) - { - case 18831: m_uiMaulgarGUID = pCreature->GetGUID(); break; - case 18832: m_uiKroshGUID = pCreature->GetGUID(); break; - case 18834: m_uiOlmGUID = pCreature->GetGUID(); break; - case 18835: m_uiKigglerGUID = pCreature->GetGUID(); break; - case 18836: m_uiBlindeyeGUID = pCreature->GetGUID(); break; - } + case GO_PORT_GRONN_1: + m_uiMaulgarDoorGUID = pGo->GetGUID(); + if (m_auiEncounter[0] == DONE) + pGo->SetGoState(GO_STATE_ACTIVE); + break; + case GO_PORT_GRONN_2: + m_uiGruulEncounterDoorGUID = pGo->GetGUID(); + break; } +} - void OnObjectCreate(GameObject* pGo) +void instance_gruuls_lair::SetData(uint32 uiType, uint32 uiData) +{ + switch (uiType) { - switch (pGo->GetEntry()) - { - case GO_PORT_GRONN_1: - m_uiMaulgarDoorGUID = pGo->GetGUID(); - if (m_auiEncounter[0] == DONE) - pGo->SetGoState(GO_STATE_ACTIVE); - break; - case GO_PORT_GRONN_2: - m_uiGruulEncounterDoorGUID = pGo->GetGUID(); - break; - } + case TYPE_MAULGAR_EVENT: + if (uiData == DONE) + DoUseDoorOrButton(m_uiMaulgarDoorGUID); + m_auiEncounter[0] = uiData; + break; + case TYPE_GRUUL_EVENT: + DoUseDoorOrButton(m_uiGruulEncounterDoorGUID); + m_auiEncounter[1] = uiData; + break; } - void SetData(uint32 uiType, uint32 uiData) + if (uiData == DONE) { - switch (uiType) - { - case TYPE_MAULGAR_EVENT: - if (uiData == DONE) - DoUseDoorOrButton(m_uiMaulgarDoorGUID); - m_auiEncounter[0] = uiData; - break; - case TYPE_GRUUL_EVENT: - DoUseDoorOrButton(m_uiGruulEncounterDoorGUID); - m_auiEncounter[1] = uiData; - break; - } - - if (uiData == DONE) - { - OUT_SAVE_INST_DATA; - - std::ostringstream saveStream; - saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1]; - - strSaveData = saveStream.str(); - - SaveToDB(); - OUT_SAVE_INST_DATA_COMPLETE; - } - } + OUT_SAVE_INST_DATA; - const char* Save() - { - return strSaveData.c_str(); + std::ostringstream saveStream; + saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1]; + + m_strSaveData = saveStream.str(); + + SaveToDB(); + OUT_SAVE_INST_DATA_COMPLETE; } +} - uint32 GetData(uint32 uiType) +uint32 instance_gruuls_lair::GetData(uint32 uiType) +{ + switch (uiType) { - switch (uiType) - { - case TYPE_MAULGAR_EVENT: return m_auiEncounter[0]; - case TYPE_GRUUL_EVENT: return m_auiEncounter[1]; - } + case TYPE_MAULGAR_EVENT: return m_auiEncounter[0]; + case TYPE_GRUUL_EVENT: return m_auiEncounter[1]; + + default: return 0; } +} - uint64 GetData64(uint32 uiData) +uint64 instance_gruuls_lair::GetData64(uint32 uiData) +{ + switch (uiData) { - switch (uiData) - { - case DATA_MAULGAR: return m_uiMaulgarGUID; - case DATA_BLINDEYE: return m_uiBlindeyeGUID; - case DATA_KIGGLER: return m_uiKigglerGUID; - case DATA_KROSH: return m_uiKroshGUID; - case DATA_OLM: return m_uiOlmGUID; - } - return 0; + case NPC_MAULGAR: return m_uiMaulgarGUID; + case NPC_BLINDEYE: return m_uiBlindeyeGUID; + case NPC_KIGGLER: return m_uiKigglerGUID; + case NPC_KROSH: return m_uiKroshGUID; + case NPC_OLM: return m_uiOlmGUID; + + default: + return 0; } +} - void Load(const char* chrIn) +void instance_gruuls_lair::Load(const char* chrIn) +{ + if (!chrIn) { - if (!chrIn) - { - OUT_LOAD_INST_DATA_FAIL; - return; - } + OUT_LOAD_INST_DATA_FAIL; + return; + } - OUT_LOAD_INST_DATA(chrIn); + OUT_LOAD_INST_DATA(chrIn); - std::istringstream loadStream(chrIn); + std::istringstream loadStream(chrIn); - loadStream >> m_auiEncounter[0] >> m_auiEncounter[1]; + loadStream >> m_auiEncounter[0] >> m_auiEncounter[1]; - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - m_auiEncounter[i] = NOT_STARTED; + for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) + if (m_auiEncounter[i] == IN_PROGRESS) + m_auiEncounter[i] = NOT_STARTED; - OUT_LOAD_INST_DATA_COMPLETE; - } -}; + OUT_LOAD_INST_DATA_COMPLETE; +} InstanceData* GetInstanceData_instance_gruuls_lair(Map* pMap) { @@ -180,9 +167,10 @@ InstanceData* GetInstanceData_instance_gruuls_lair(Map* pMap) void AddSC_instance_gruuls_lair() { - Script *newscript; - newscript = new Script; - newscript->Name = "instance_gruuls_lair"; - newscript->GetInstanceData = &GetInstanceData_instance_gruuls_lair; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_gruuls_lair"; + pNewScript->GetInstanceData = &GetInstanceData_instance_gruuls_lair; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/hellfire_citadel/blood_furnace/blood_furnace.h b/scripts/outland/hellfire_citadel/blood_furnace/blood_furnace.h index 82d5761..458e376 100644 --- a/scripts/outland/hellfire_citadel/blood_furnace/blood_furnace.h +++ b/scripts/outland/hellfire_citadel/blood_furnace/blood_furnace.h @@ -7,6 +7,16 @@ enum { + MAX_ENCOUNTER = 3, + + TYPE_THE_MAKER_EVENT = 0, + TYPE_BROGGOK_EVENT = 1, + TYPE_KELIDAN_EVENT = 2, + + NPC_THE_MAKER = 17381, + NPC_BROGGOK = 17380, + NPC_KELIDAN_THE_MAKER = 17377, + GO_DOOR_FINAL_EXIT = 181766, GO_DOOR_MAKER_FRONT = 181811, GO_DOOR_MAKER_REAR = 181812, @@ -14,22 +24,56 @@ enum GO_DOOR_BROGGOK_REAR = 181819, GO_DOOR_KELIDAN_EXIT = 181823, - DATA_THE_MAKER = 1, - DATA_BROGGOK = 2, - DATA_KELIDAN_THE_MAKER = 3, - - TYPE_THE_MAKER_EVENT = 4, - TYPE_BROGGOK_EVENT = 5, - TYPE_KELIDAN_EVENT = 6, - - DATA_PRISON_CELL_MAKER1 = 10, - DATA_PRISON_CELL_MAKER2 = 11, - DATA_PRISON_CELL_MAKER3 = 12, - DATA_PRISON_CELL_MAKER4 = 13, - DATA_PRISON_CELL_BROGGOK1 = 14, - DATA_PRISON_CELL_BROGGOK2 = 15, - DATA_PRISON_CELL_BROGGOK3 = 16, - DATA_PRISON_CELL_BROGGOK4 = 17 + GO_PRISON_CELL_MAKER1 = 181813, // The maker cell front right + GO_PRISON_CELL_MAKER2 = 181814, // The maker cell back right + GO_PRISON_CELL_MAKER3 = 181816, // The maker cell front left + GO_PRISON_CELL_MAKER4 = 181815, // The maker cell back left + GO_PRISON_CELL_BROGGOK1 = 181821, // Broggok cell front right + GO_PRISON_CELL_BROGGOK2 = 181818, // Broggok cell back right + GO_PRISON_CELL_BROGGOK3 = 181820, // Broggok cell front left + GO_PRISON_CELL_BROGGOK4 = 181817, // Broggok cell back left +}; + +class MANGOS_DLL_DECL instance_blood_furnace : public ScriptedInstance +{ + public: + instance_blood_furnace(Map* pMap); + + void Initialize(); + + void OnCreatureCreate(Creature* pCreature); + void OnObjectCreate(GameObject* pGo); + + uint64 GetData64(uint32 uiData); + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + + void Load(const char* chrIn); + const char* Save() { return m_strInstData.c_str(); } + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + std::string m_strInstData; + + uint64 m_uiMakerGUID; + uint64 m_uiBroggokGUID; + uint64 m_uiKelidanGUID; + + uint64 m_uiDoorFinalExitGUID; + uint64 m_uiDoorMakerFrontGUID; + uint64 m_uiDoorMakerRearGUID; + uint64 m_uiDoorBroggokFrontGUID; + uint64 m_uiDoorBrokkokRearGUID; + uint64 m_uiDoorKelidanExitGUID; + + uint64 m_uiPrisonCell1GUID; + uint64 m_uiPrisonCell2GUID; + uint64 m_uiPrisonCell3GUID; + uint64 m_uiPrisonCell4GUID; + uint64 m_uiPrisonCell5GUID; + uint64 m_uiPrisonCell6GUID; + uint64 m_uiPrisonCell7GUID; + uint64 m_uiPrisonCell8GUID; }; #endif diff --git a/scripts/outland/hellfire_citadel/blood_furnace/boss_broggok.cpp b/scripts/outland/hellfire_citadel/blood_furnace/boss_broggok.cpp index c86898c..52c4810 100644 --- a/scripts/outland/hellfire_citadel/blood_furnace/boss_broggok.cpp +++ b/scripts/outland/hellfire_citadel/blood_furnace/boss_broggok.cpp @@ -79,7 +79,7 @@ struct MANGOS_DLL_DECL boss_broggokAI : public ScriptedAI summoned->setFaction(16); summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - summoned->CastSpell(summoned,SPELL_POISON,false,0,0,m_creature->GetGUID()); + summoned->CastSpell(summoned, SPELL_POISON, false, NULL, NULL, m_creature->GetObjectGuid()); } void JustDied(Unit *who) diff --git a/scripts/outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp b/scripts/outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp index d8d48c9..0a65360 100644 --- a/scripts/outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp +++ b/scripts/outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp @@ -24,222 +24,188 @@ EndScriptData */ #include "precompiled.h" #include "blood_furnace.h" -#define MAX_ENCOUNTER 3 - -struct MANGOS_DLL_DECL instance_blood_furnace : public ScriptedInstance +instance_blood_furnace::instance_blood_furnace(Map* pMap) : ScriptedInstance(pMap), + m_uiMakerGUID(0), + m_uiBroggokGUID(0), + m_uiKelidanGUID(0), + + m_uiDoorFinalExitGUID(0), + m_uiDoorMakerFrontGUID(0), + m_uiDoorMakerRearGUID(0), + m_uiDoorBroggokFrontGUID(0), + m_uiDoorBrokkokRearGUID(0), + m_uiDoorKelidanExitGUID(0), + + m_uiPrisonCell1GUID(0), + m_uiPrisonCell2GUID(0), + m_uiPrisonCell3GUID(0), + m_uiPrisonCell4GUID(0), + m_uiPrisonCell5GUID(0), + m_uiPrisonCell6GUID(0), + m_uiPrisonCell7GUID(0), + m_uiPrisonCell8GUID(0) { - instance_blood_furnace(Map* pMap) : ScriptedInstance(pMap) {Initialize();} - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - std::string strInstData; - - uint64 m_uiMakerGUID; - uint64 m_uiBroggokGUID; - uint64 m_uiKelidanGUID; - - uint64 m_uiDoorFinalExitGUID; - uint64 m_uiDoorMakerFrontGUID; - uint64 m_uiDoorMakerRearGUID; - uint64 m_uiDoorBroggokFrontGUID; - uint64 m_uiDoorBrokkokRearGUID; - uint64 m_uiDoorKelidanExitGUID; + Initialize(); +} - uint64 m_uiPrisonCell1GUID; - uint64 m_uiPrisonCell2GUID; - uint64 m_uiPrisonCell3GUID; - uint64 m_uiPrisonCell4GUID; - uint64 m_uiPrisonCell5GUID; - uint64 m_uiPrisonCell6GUID; - uint64 m_uiPrisonCell7GUID; - uint64 m_uiPrisonCell8GUID; +void instance_blood_furnace::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - void Initialize() +void instance_blood_furnace::OnCreatureCreate(Creature* pCreature) +{ + switch (pCreature->GetEntry()) { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiMakerGUID = 0; - m_uiBroggokGUID = 0; - m_uiKelidanGUID = 0; - - m_uiDoorFinalExitGUID = 0; - m_uiDoorMakerFrontGUID = 0; - m_uiDoorMakerRearGUID = 0; - m_uiDoorBroggokFrontGUID = 0; - m_uiDoorBrokkokRearGUID = 0; - m_uiDoorKelidanExitGUID = 0; - - m_uiPrisonCell1GUID = 0; - m_uiPrisonCell2GUID = 0; - m_uiPrisonCell3GUID = 0; - m_uiPrisonCell4GUID = 0; - m_uiPrisonCell5GUID = 0; - m_uiPrisonCell6GUID = 0; - m_uiPrisonCell7GUID = 0; - m_uiPrisonCell8GUID = 0; + case NPC_THE_MAKER: m_uiMakerGUID = pCreature->GetGUID(); break; + case NPC_BROGGOK: m_uiBroggokGUID = pCreature->GetGUID(); break; + case NPC_KELIDAN_THE_MAKER: m_uiKelidanGUID = pCreature->GetGUID(); break; } +} - void OnCreatureCreate(Creature* pCreature) +void instance_blood_furnace::OnObjectCreate(GameObject* pGo) +{ + switch (pGo->GetEntry()) { - switch(pCreature->GetEntry()) - { - case 17381: m_uiMakerGUID = pCreature->GetGUID(); break; - case 17380: m_uiBroggokGUID = pCreature->GetGUID(); break; - case 17377: m_uiKelidanGUID = pCreature->GetGUID(); break; - } + case GO_DOOR_MAKER_FRONT: // the maker front door + m_uiDoorMakerFrontGUID = pGo->GetGUID(); + break; + case GO_DOOR_MAKER_REAR: // the maker rear door + m_uiDoorMakerRearGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_THE_MAKER_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY) + DoUseDoorOrButton(m_uiDoorMakerRearGUID); + break; + case GO_DOOR_BROGGOK_FRONT: // broggok front door + m_uiDoorBroggokFrontGUID = pGo->GetGUID(); + break; + case GO_DOOR_BROGGOK_REAR: // broggok rear door + m_uiDoorBrokkokRearGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_BROGGOK_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY) + DoUseDoorOrButton(m_uiDoorBrokkokRearGUID); + break; + case GO_DOOR_KELIDAN_EXIT: // kelidan exit door + m_uiDoorKelidanExitGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY) + DoUseDoorOrButton(m_uiDoorKelidanExitGUID); + break; + case GO_DOOR_FINAL_EXIT: // final exit door + m_uiDoorFinalExitGUID = pGo->GetGUID(); + if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY) + DoUseDoorOrButton(m_uiDoorFinalExitGUID); + break; + case GO_PRISON_CELL_MAKER1: m_uiPrisonCell1GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_MAKER2: m_uiPrisonCell2GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_MAKER3: m_uiPrisonCell3GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_MAKER4: m_uiPrisonCell4GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_BROGGOK1: m_uiPrisonCell5GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_BROGGOK2: m_uiPrisonCell6GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_BROGGOK3: m_uiPrisonCell7GUID = pGo->GetGUID(); break; + case GO_PRISON_CELL_BROGGOK4: m_uiPrisonCell8GUID = pGo->GetGUID(); break; } +} - void OnObjectCreate(GameObject* pGo) +uint64 instance_blood_furnace::GetData64(uint32 uiData) +{ + switch (uiData) { - switch (pGo->GetEntry()) - { - case GO_DOOR_MAKER_FRONT: //the maker front door - m_uiDoorMakerFrontGUID = pGo->GetGUID(); - break; - case GO_DOOR_MAKER_REAR: //the maker rear door - m_uiDoorMakerRearGUID = pGo->GetGUID(); - if (m_auiEncounter[0] == DONE && pGo->GetGoState() == GO_STATE_READY) - DoUseDoorOrButton(m_uiDoorMakerRearGUID); - break; - case GO_DOOR_BROGGOK_FRONT: //broggok front door - m_uiDoorBroggokFrontGUID = pGo->GetGUID(); - break; - case GO_DOOR_BROGGOK_REAR: //broggok rear door - m_uiDoorBrokkokRearGUID = pGo->GetGUID(); - if (m_auiEncounter[1] == DONE && pGo->GetGoState() == GO_STATE_READY) - DoUseDoorOrButton(m_uiDoorBrokkokRearGUID); - break; - case GO_DOOR_KELIDAN_EXIT: //kelidan exit door - m_uiDoorKelidanExitGUID = pGo->GetGUID(); - if (m_auiEncounter[2] == DONE && pGo->GetGoState() == GO_STATE_READY) - DoUseDoorOrButton(m_uiDoorKelidanExitGUID); - break; - case GO_DOOR_FINAL_EXIT: //final exit door - m_uiDoorFinalExitGUID = pGo->GetGUID(); - if (m_auiEncounter[2] == DONE && pGo->GetGoState() == GO_STATE_READY) - DoUseDoorOrButton(m_uiDoorFinalExitGUID); - break; - case 181813: m_uiPrisonCell1GUID = pGo->GetGUID(); break;//the maker cell front right - case 181814: m_uiPrisonCell2GUID = pGo->GetGUID(); break;//the maker cell back right - case 181816: m_uiPrisonCell3GUID = pGo->GetGUID(); break;//the maker cell front left - case 181815: m_uiPrisonCell4GUID = pGo->GetGUID(); break;//the maker cell back left - case 181821: m_uiPrisonCell5GUID = pGo->GetGUID(); break;//broggok cell front right - case 181818: m_uiPrisonCell6GUID = pGo->GetGUID(); break;//broggok cell back right - case 181820: m_uiPrisonCell7GUID = pGo->GetGUID(); break;//broggok cell front left - case 181817: m_uiPrisonCell8GUID = pGo->GetGUID(); break;//broggok cell back left - } + case NPC_THE_MAKER: return m_uiMakerGUID; + case NPC_BROGGOK: return m_uiBroggokGUID; + case GO_PRISON_CELL_MAKER1: return m_uiPrisonCell1GUID; + case GO_PRISON_CELL_MAKER2: return m_uiPrisonCell2GUID; + case GO_PRISON_CELL_MAKER3: return m_uiPrisonCell3GUID; + case GO_PRISON_CELL_MAKER4: return m_uiPrisonCell4GUID; + case GO_PRISON_CELL_BROGGOK1: return m_uiPrisonCell5GUID; + case GO_PRISON_CELL_BROGGOK2: return m_uiPrisonCell6GUID; + case GO_PRISON_CELL_BROGGOK3: return m_uiPrisonCell7GUID; + case GO_PRISON_CELL_BROGGOK4: return m_uiPrisonCell8GUID; + + default: + return 0; } +} - uint64 GetData64(uint32 uiData) +void instance_blood_furnace::SetData(uint32 uiType, uint32 uiData) +{ + switch(uiType) { - switch(uiData) - { - case DATA_THE_MAKER: return m_uiMakerGUID; - case DATA_BROGGOK: return m_uiBroggokGUID; - case DATA_PRISON_CELL_MAKER1: return m_uiPrisonCell1GUID; - case DATA_PRISON_CELL_MAKER2: return m_uiPrisonCell2GUID; - case DATA_PRISON_CELL_MAKER3: return m_uiPrisonCell3GUID; - case DATA_PRISON_CELL_MAKER4: return m_uiPrisonCell4GUID; - case DATA_PRISON_CELL_BROGGOK1: return m_uiPrisonCell5GUID; - case DATA_PRISON_CELL_BROGGOK2: return m_uiPrisonCell6GUID; - case DATA_PRISON_CELL_BROGGOK3: return m_uiPrisonCell7GUID; - case DATA_PRISON_CELL_BROGGOK4: return m_uiPrisonCell8GUID; - } - - return 0; + case TYPE_THE_MAKER_EVENT: + if (uiData == IN_PROGRESS) + DoUseDoorOrButton(m_uiDoorMakerFrontGUID); + if (uiData == FAIL) + DoUseDoorOrButton(m_uiDoorMakerFrontGUID); + if (uiData == DONE) + { + DoUseDoorOrButton(m_uiDoorMakerFrontGUID); + DoUseDoorOrButton(m_uiDoorMakerRearGUID); + } + m_auiEncounter[uiType] = uiData; + break; + case TYPE_BROGGOK_EVENT: + if (uiData == IN_PROGRESS) + DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); + if (uiData == FAIL) + DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); + if (uiData == DONE) + { + DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); + DoUseDoorOrButton(m_uiDoorBrokkokRearGUID); + } + m_auiEncounter[uiType] = uiData; + break; + case TYPE_KELIDAN_EVENT: + if (uiData == DONE) + { + DoUseDoorOrButton(m_uiDoorKelidanExitGUID); + DoUseDoorOrButton(m_uiDoorFinalExitGUID); + } + m_auiEncounter[uiType] = uiData; + break; + default: + error_log("SD2: Instance Blood Furnace SetData with Type %u Data %u, but this is not implemented.", uiType, uiData); + return; } - void SetData(uint32 uiType, uint32 uiData) + if (uiData == DONE) { - switch(uiType) - { - case TYPE_THE_MAKER_EVENT: - if (uiData == IN_PROGRESS) - DoUseDoorOrButton(m_uiDoorMakerFrontGUID); - if (uiData == FAIL) - DoUseDoorOrButton(m_uiDoorMakerFrontGUID); - if (uiData == DONE) - { - DoUseDoorOrButton(m_uiDoorMakerFrontGUID); - DoUseDoorOrButton(m_uiDoorMakerRearGUID); - } - m_auiEncounter[0] = uiData; - break; - case TYPE_BROGGOK_EVENT: - if (uiData == IN_PROGRESS) - DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); - if (uiData == FAIL) - DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); - if (uiData == DONE) - { - DoUseDoorOrButton(m_uiDoorBroggokFrontGUID); - DoUseDoorOrButton(m_uiDoorBrokkokRearGUID); - } - m_auiEncounter[1] = uiData; - break; - case TYPE_KELIDAN_EVENT: - if (uiData == DONE) - { - DoUseDoorOrButton(m_uiDoorKelidanExitGUID); - DoUseDoorOrButton(m_uiDoorFinalExitGUID); - } - m_auiEncounter[2] = uiData; - break; - default: - error_log("SD2: Instance Blood Furnace SetData with Type %u Data %u, but this is not implemented.",uiType,uiData); - break; - } - - if (uiData == DONE) - { - OUT_SAVE_INST_DATA; + OUT_SAVE_INST_DATA; - std::ostringstream saveStream; - saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2]; + std::ostringstream saveStream; + saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2]; - strInstData = saveStream.str(); + m_strInstData = saveStream.str(); - SaveToDB(); - OUT_SAVE_INST_DATA_COMPLETE; - } + SaveToDB(); + OUT_SAVE_INST_DATA_COMPLETE; } +} - uint32 GetData(uint32 uiData) - { - switch(uiData) - { - case TYPE_THE_MAKER_EVENT: return m_auiEncounter[0]; - case TYPE_BROGGOK_EVENT: return m_auiEncounter[1]; - case TYPE_KELIDAN_EVENT: return m_auiEncounter[2]; - } +uint32 instance_blood_furnace::GetData(uint32 uiType) +{ + if (uiType < MAX_ENCOUNTER) + return m_auiEncounter[uiType]; - return 0; - } + return 0; +} - const char* Save() +void instance_blood_furnace::Load(const char* chrIn) +{ + if (!chrIn) { - return strInstData.c_str(); + OUT_LOAD_INST_DATA_FAIL; + return; } - void Load(const char* in) - { - if (!in) - { - OUT_LOAD_INST_DATA_FAIL; - return; - } - - OUT_LOAD_INST_DATA(in); + OUT_LOAD_INST_DATA(chrIn); - std::istringstream loadStream(in); - loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2]; + std::istringstream loadStream(chrIn); + loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2]; - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS || m_auiEncounter[i] == FAIL) - m_auiEncounter[i] = NOT_STARTED; + for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) + if (m_auiEncounter[i] == IN_PROGRESS || m_auiEncounter[i] == FAIL) + m_auiEncounter[i] = NOT_STARTED; - OUT_LOAD_INST_DATA_COMPLETE; - } -}; + OUT_LOAD_INST_DATA_COMPLETE; +} InstanceData* GetInstanceData_instance_blood_furnace(Map* pMap) { @@ -248,9 +214,10 @@ InstanceData* GetInstanceData_instance_blood_furnace(Map* pMap) void AddSC_instance_blood_furnace() { - Script *newscript; - newscript = new Script; - newscript->Name = "instance_blood_furnace"; - newscript->GetInstanceData = &GetInstanceData_instance_blood_furnace; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_blood_furnace"; + pNewScript->GetInstanceData = &GetInstanceData_instance_blood_furnace; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/hellfire_citadel/hellfire_ramparts/boss_nazan_and_vazruden.cpp b/scripts/outland/hellfire_citadel/hellfire_ramparts/boss_nazan_and_vazruden.cpp index e33f289..3a2a7ed 100644 --- a/scripts/outland/hellfire_citadel/hellfire_ramparts/boss_nazan_and_vazruden.cpp +++ b/scripts/outland/hellfire_citadel/hellfire_ramparts/boss_nazan_and_vazruden.cpp @@ -36,6 +36,8 @@ enum SAY_DEATH = -1543024, EMOTE_DESCEND = -1543025, + SPELL_SUMMON_VAZRUDEN = 30717, + //vazruden SPELL_REVENGE = 40392, @@ -105,7 +107,7 @@ struct MANGOS_DLL_DECL boss_vazrudenAI : public ScriptedAI void PrepareAndDescendMount() { - if (Creature* pHerald = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_HERALD))) + if (Creature* pHerald = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_HERALD))) { if (pHerald->HasSplineFlag(SPLINEFLAG_WALKMODE)) pHerald->RemoveSplineFlag(SPLINEFLAG_WALKMODE); @@ -264,7 +266,7 @@ struct MANGOS_DLL_DECL boss_vazruden_heraldAI : public ScriptedAI { m_creature->UpdateEntry(NPC_NAZAN); - m_creature->SummonCreature(NPC_VAZRUDEN, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0); + DoCastSpellIfCan(m_creature, SPELL_SUMMON_VAZRUDEN); m_uiMovementTimer = 3000; diff --git a/scripts/outland/hellfire_citadel/hellfire_ramparts/hellfire_ramparts.h b/scripts/outland/hellfire_citadel/hellfire_ramparts/hellfire_ramparts.h index 493f406..e0832ff 100644 --- a/scripts/outland/hellfire_citadel/hellfire_ramparts/hellfire_ramparts.h +++ b/scripts/outland/hellfire_citadel/hellfire_ramparts/hellfire_ramparts.h @@ -7,11 +7,39 @@ enum { - MAX_ENCOUNTER = 2, + MAX_ENCOUNTER = 2, - TYPE_VAZRUDEN = 1, - TYPE_NAZAN = 2, - DATA_HERALD = 3 + TYPE_VAZRUDEN = 1, + TYPE_NAZAN = 2, // Do not change, used in ACID (SetData(SPECIAL) on death of 17517 + + NPC_HERALD = 17307, + + GO_FEL_IRON_CHEST = 185168, + GO_FEL_IRON_CHEST_H = 185169, +}; + +class MANGOS_DLL_DECL instance_ramparts : public ScriptedInstance +{ + public: + instance_ramparts(Map* pMap); + + void Initialize(); + + void OnCreatureCreate(Creature* pCreature); + void OnObjectCreate(GameObject* pGo); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiData); + + // No need to save and load this instance (only one encounter needs special handling, no doors used) + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + + uint32 m_uiSentryCounter; + uint64 m_uiChestGUID; + uint64 m_uiHeraldGUID; }; #endif diff --git a/scripts/outland/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp b/scripts/outland/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp index 6455e30..52f1b69 100644 --- a/scripts/outland/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp +++ b/scripts/outland/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp @@ -24,90 +24,84 @@ EndScriptData */ #include "precompiled.h" #include "hellfire_ramparts.h" -struct MANGOS_DLL_DECL instance_ramparts : public ScriptedInstance +instance_ramparts::instance_ramparts(Map* pMap) : ScriptedInstance(pMap), + m_uiSentryCounter(0), + m_uiChestGUID(0), + m_uiHeraldGUID(0) { - instance_ramparts(Map* pMap) : ScriptedInstance(pMap) {Initialize();} - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - uint32 m_uiSentryCounter; - uint64 m_uiChestNGUID; - uint64 m_uiChestHGUID; - uint64 m_uiHeraldGUID; + Initialize(); +} - void Initialize() - { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +void instance_ramparts::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - m_uiSentryCounter = 0; - m_uiChestNGUID = 0; - m_uiChestHGUID = 0; - m_uiHeraldGUID = 0; - } +void instance_ramparts::OnCreatureCreate(Creature* pCreature) +{ + if (pCreature->GetEntry() == NPC_HERALD) + m_uiHeraldGUID = pCreature->GetGUID(); +} - void OnCreatureCreate(Creature* pCreature) +void instance_ramparts::OnObjectCreate(GameObject* pGo) +{ + switch(pGo->GetEntry()) { - if (pCreature->GetEntry() == 17307) - m_uiHeraldGUID = pCreature->GetGUID(); + case GO_FEL_IRON_CHEST: + case GO_FEL_IRON_CHEST_H: + m_uiChestGUID = pGo->GetGUID(); + break; } +} - void OnObjectCreate(GameObject* pGo) - { - switch(pGo->GetEntry()) - { - case 185168: m_uiChestNGUID = pGo->GetGUID(); break; - case 185169: m_uiChestHGUID = pGo->GetGUID(); break; - } - } +void instance_ramparts::SetData(uint32 uiType, uint32 uiData) +{ + debug_log("SD2: Instance Ramparts: SetData received for type %u with data %u",uiType,uiData); - void SetData(uint32 uiType, uint32 uiData) + switch(uiType) { - debug_log("SD2: Instance Ramparts: SetData received for type %u with data %u",uiType,uiData); - - switch(uiType) - { - case TYPE_VAZRUDEN: - if (uiData == DONE && m_auiEncounter[1] == DONE) - DoRespawnGameObject(instance->IsRegularDifficulty() ? m_uiChestNGUID : m_uiChestHGUID, HOUR*IN_MILLISECONDS); - m_auiEncounter[0] = uiData; - break; - case TYPE_NAZAN: - if (uiData == SPECIAL) - { - ++m_uiSentryCounter; - - if (m_uiSentryCounter == 2) - m_auiEncounter[1] = uiData; - } - if (uiData == DONE && m_auiEncounter[0] == DONE) - { - DoRespawnGameObject(instance->IsRegularDifficulty() ? m_uiChestNGUID : m_uiChestHGUID, HOUR*IN_MILLISECONDS); - m_auiEncounter[1] = uiData; - } - if (uiData == IN_PROGRESS) + case TYPE_VAZRUDEN: + if (uiData == DONE && m_auiEncounter[1] == DONE) + DoRespawnGameObject(m_uiChestGUID, HOUR*IN_MILLISECONDS); + m_auiEncounter[0] = uiData; + break; + case TYPE_NAZAN: + if (uiData == SPECIAL) + { + ++m_uiSentryCounter; + + if (m_uiSentryCounter == 2) m_auiEncounter[1] = uiData; - break; - } + } + if (uiData == DONE && m_auiEncounter[0] == DONE) + { + DoRespawnGameObject(m_uiChestGUID, HOUR*IN_MILLISECONDS); + m_auiEncounter[1] = uiData; + } + if (uiData == IN_PROGRESS) + m_auiEncounter[1] = uiData; + break; } +} - uint32 GetData(uint32 uiType) - { - if (uiType == TYPE_VAZRUDEN) - return m_auiEncounter[0]; +uint32 instance_ramparts::GetData(uint32 uiType) +{ + if (uiType == TYPE_VAZRUDEN) + return m_auiEncounter[0]; - if (uiType == TYPE_NAZAN) - return m_auiEncounter[1]; + if (uiType == TYPE_NAZAN) + return m_auiEncounter[1]; - return 0; - } + return 0; +} - uint64 GetData64(uint32 uiData) - { - if (uiData == DATA_HERALD) - return m_uiHeraldGUID; +uint64 instance_ramparts::GetData64(uint32 uiData) +{ + if (uiData == NPC_HERALD) + return m_uiHeraldGUID; - return 0; - } -}; + return 0; +} InstanceData* GetInstanceData_instance_ramparts(Map* pMap) { @@ -117,6 +111,7 @@ InstanceData* GetInstanceData_instance_ramparts(Map* pMap) void AddSC_instance_ramparts() { Script* pNewScript; + pNewScript = new Script; pNewScript->Name = "instance_ramparts"; pNewScript->GetInstanceData = &GetInstanceData_instance_ramparts; diff --git a/scripts/outland/hellfire_citadel/shattered_halls/boss_nethekurse.cpp b/scripts/outland/hellfire_citadel/shattered_halls/boss_nethekurse.cpp index 0b93c17..ffe19a1 100644 --- a/scripts/outland/hellfire_citadel/shattered_halls/boss_nethekurse.cpp +++ b/scripts/outland/hellfire_citadel/shattered_halls/boss_nethekurse.cpp @@ -245,7 +245,7 @@ struct MANGOS_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI // triggered spell of consumption does not properly show it's SpellVisual, wrong spellid? pSummoned->CastSpell(pSummoned, SPELL_TEMPORARY_VISUAL, true); - pSummoned->CastSpell(pSummoned, SPELL_CONSUMPTION, false, 0, 0, m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, SPELL_CONSUMPTION, false, NULL, NULL, m_creature->GetObjectGuid()); } void KilledUnit(Unit* pVictim) diff --git a/scripts/outland/hellfire_peninsula.cpp b/scripts/outland/hellfire_peninsula.cpp index 2530e81..02afe0d 100644 --- a/scripts/outland/hellfire_peninsula.cpp +++ b/scripts/outland/hellfire_peninsula.cpp @@ -149,29 +149,18 @@ struct MANGOS_DLL_DECL npc_ancestral_wolfAI : public npc_escortAI npc_ancestral_wolfAI(Creature* pCreature) : npc_escortAI(pCreature) { if (pCreature->GetOwner() && pCreature->GetOwner()->GetTypeId() == TYPEID_PLAYER) - Start(false, pCreature->GetOwner()->GetGUID()); + Start(false, (Player*)pCreature->GetOwner()); else error_log("SD2: npc_ancestral_wolf can not obtain owner or owner is not a player."); Reset(); } - Unit* pRyga; - void Reset() { - pRyga = NULL; m_creature->CastSpell(m_creature, SPELL_ANCESTRAL_WOLF_BUFF, true); } - void MoveInLineOfSight(Unit* pWho) - { - if (!pRyga && pWho->GetTypeId() == TYPEID_UNIT && pWho->GetEntry() == NPC_RYGA && m_creature->IsWithinDistInMap(pWho, 15.0f)) - pRyga = pWho; - - npc_escortAI::MoveInLineOfSight(pWho); - } - void WaypointReached(uint32 uiPointId) { switch(uiPointId) @@ -183,6 +172,7 @@ struct MANGOS_DLL_DECL npc_ancestral_wolfAI : public npc_escortAI DoScriptText(EMOTE_WOLF_HOWL, m_creature); break; case 50: + Creature* pRyga = GetClosestCreatureWithEntry(m_creature, NPC_RYGA, 30.0f); if (pRyga && pRyga->isAlive() && !pRyga->isInCombat()) DoScriptText(SAY_WOLF_WELCOME, pRyga); break; @@ -349,12 +339,12 @@ bool GossipHello_npc_demoniac_scryer(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_DEMONIAC) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ATTUNE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ATTUNED, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ATTUNED, pCreature->GetObjectGuid()); return true; } } - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_PROTECT, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_PROTECT, pCreature->GetObjectGuid()); return true; } @@ -388,7 +378,7 @@ enum bool GossipHello_npc_gryphoneer_windbellow(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); //Mission: The Abyssal Shelf || Return to the Abyssal Shelf if (pPlayer->GetQuestStatus(QUEST_ABYSSAL_A) == QUEST_STATUS_INCOMPLETE || @@ -400,7 +390,7 @@ bool GossipHello_npc_gryphoneer_windbellow(Player* pPlayer, Creature* pCreature) pPlayer->GetQuestRewardStatus(QUEST_TO_THE_FRONT)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM2_WIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -435,17 +425,17 @@ enum bool GossipHello_npc_naladu(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_NALADU_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } bool GossipSelect_npc_naladu(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_INFO_DEF+1) - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_NALADU1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_NALADU1, pCreature->GetObjectGuid()); return true; } @@ -467,7 +457,7 @@ enum bool GossipHello_npc_tracy_proudwell(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_REDEEM_MARKS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); @@ -475,7 +465,7 @@ bool GossipHello_npc_tracy_proudwell(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_DIGGING_FOR_PRAYER_BEADS) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TRACY_PROUDWELL_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -485,13 +475,13 @@ bool GossipSelect_npc_tracy_proudwell(Player* pPlayer, Creature* pCreature, uint { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TRACY_PROUDWELL_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TRACY_PROUDWELL1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TRACY_PROUDWELL1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; } @@ -516,11 +506,11 @@ enum bool GossipHello_npc_trollbane(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -530,13 +520,13 @@ bool GossipSelect_npc_trollbane(Player* pPlayer, Creature* pCreature, uint32 uiS { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE3, pCreature->GetObjectGuid()); break; } @@ -561,7 +551,7 @@ enum bool GossipHello_npc_wing_commander_dabiree(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); //Mission: The Murketh and Shaadraz Gateways if (pPlayer->GetQuestStatus(QUEST_MISSION_GATEWAYS_A) == QUEST_STATUS_INCOMPLETE) @@ -572,7 +562,7 @@ bool GossipHello_npc_wing_commander_dabiree(Player* pPlayer, Creature* pCreature pPlayer->GetQuestRewardStatus(QUEST_SHATTER_POINT)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM2_DAB, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -615,7 +605,7 @@ enum bool GossipHello_npc_wing_commander_brack(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); //Mission: The Murketh and Shaadraz Gateways if (pPlayer->GetQuestStatus(QUEST_MISSION_GATEWAYS_H) == QUEST_STATUS_INCOMPLETE) @@ -631,7 +621,7 @@ bool GossipHello_npc_wing_commander_brack(Player* pPlayer, Creature* pCreature) pPlayer->GetQuestRewardStatus(QUEST_SPINEBREAKER)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM3_BRA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -737,7 +727,7 @@ bool QuestAccept_npc_wounded_blood_elf(Player* pPlayer, Creature* pCreature, con pCreature->setFaction(FACTION_ESCORT_H_PASSIVE); if (npc_wounded_blood_elfAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; diff --git a/scripts/outland/nagrand.cpp b/scripts/outland/nagrand.cpp index f68e2be..529522d 100644 --- a/scripts/outland/nagrand.cpp +++ b/scripts/outland/nagrand.cpp @@ -17,14 +17,12 @@ /* ScriptData SDName: Nagrand SD%Complete: 90 -SDComment: Quest support: 9849, 9868, 9874, 9918, 9991, 10044, 10085, 10107, 10108, 10172, 10646. TextId's unknown for altruis_the_sufferer and greatmother_geyah (npc_text) +SDComment: Quest support: 9868, 9918, 9991, 10044, 10085, 10107, 10108, 10172, 10646. TextId's unknown for altruis_the_sufferer and greatmother_geyah (npc_text) SDCategory: Nagrand EndScriptData */ /* ContentData -mob_shattered_rumbler mob_lump -mob_sunspring_villager npc_altruis_the_sufferer npc_greatmother_geyah npc_lantresor_of_the_blade @@ -35,43 +33,6 @@ EndContentData */ #include "precompiled.h" #include "escort_ai.h" -/*###### -## mob_shattered_rumbler - this should be done with ACID -######*/ - -struct MANGOS_DLL_DECL mob_shattered_rumblerAI : public ScriptedAI -{ - bool Spawn; - - mob_shattered_rumblerAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - - void Reset() - { - Spawn = false; - } - - void SpellHit(Unit *Hitter, const SpellEntry *Spellkind) - { - if (Spellkind->Id == 32001 && !Spawn) - { - float x = m_creature->GetPositionX(); - float y = m_creature->GetPositionY(); - float z = m_creature->GetPositionZ(); - - Hitter->SummonCreature(18181,x+(0.7 * (rand()%30)),y+(rand()%5),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000); - Hitter->SummonCreature(18181,x+(rand()%5),y-(rand()%5),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000); - Hitter->SummonCreature(18181,x-(rand()%5),y+(0.5 *(rand()%60)),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000); - m_creature->SetDeathState(CORPSE); - Spawn = true; - } - return; - } -}; -CreatureAI* GetAI_mob_shattered_rumbler(Creature* pCreature) -{ - return new mob_shattered_rumblerAI(pCreature); -} - /*###### ## mob_lump - TODO: remove gossip, can be done in database ######*/ @@ -113,7 +74,6 @@ struct MANGOS_DLL_DECL mob_lumpAI : public ScriptedAI { m_uiResetTimer = MINUTE*IN_MILLISECONDS; m_uiSpearThrowTimer = 2000; - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); if (m_creature->getFaction() != m_creature->GetCreatureInfo()->faction_A) m_creature->setFaction(m_creature->GetCreatureInfo()->faction_A); @@ -138,14 +98,13 @@ struct MANGOS_DLL_DECL mob_lumpAI : public ScriptedAI if (!m_bReset && pPlayer && pPlayer->GetQuestStatus(QUEST_NOT_ON_MY_WATCH) == QUEST_STATUS_INCOMPLETE) { uiDamage = 0; //Take 0 damage - m_creature->setFaction(FACTION_FRIENDLY); - pPlayer->AttackStop(); + m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); m_creature->CombatStop(true); // should get unit_flags UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_PASSIVE at faction change, but unclear why/for what reason, skipped (no flags expected as default) - + m_creature->setFaction(FACTION_FRIENDLY); m_creature->SetStandState(UNIT_STAND_STATE_SIT); DoScriptText(SAY_LUMP_DEFEAT, m_creature, pPlayer); @@ -207,7 +166,7 @@ bool GossipHello_mob_lump(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_NOT_ON_MY_WATCH) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I need answers, ogre!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_1, pCreature->GetObjectGuid()); return true; } @@ -218,52 +177,24 @@ bool GossipSelect_mob_lump(Player* pPlayer, Creature* pCreature, uint32 uiSender { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Why are Boulderfist out this far? You know that this is Kurenai territory.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_2, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_2, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "And you think you can just eat anything you want? You're obviously trying to eat the Broken of Telaar.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_3, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_3, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "This means war, Lump! War I say!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_4, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_4, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_5, pCreature->GetGUID()); - pPlayer->TalkedToCreature(NPC_LUMPS_QUEST_CREDIT, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_LUMP_5, pCreature->GetObjectGuid()); + pPlayer->TalkedToCreature(NPC_LUMPS_QUEST_CREDIT, pCreature->GetObjectGuid()); break; } return true; } -/*#### -# mob_sunspring_villager - should be done with ACID -####*/ - -struct MANGOS_DLL_DECL mob_sunspring_villagerAI : public ScriptedAI -{ - mob_sunspring_villagerAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - - void Reset() - { - m_creature->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD); - m_creature->SetStandState(UNIT_STAND_STATE_DEAD); - } - - void SpellHit(Unit *caster, const SpellEntry *spell) - { - if (spell->Id == 32146) - { - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - m_creature->RemoveCorpse(); - } - } -}; -CreatureAI* GetAI_mob_sunspring_villager(Creature* pCreature) -{ - return new mob_sunspring_villagerAI(pCreature); -} - /*###### ## npc_altruis_the_sufferer ######*/ @@ -279,7 +210,7 @@ enum bool GossipHello_npc_altruis_the_sufferer(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); //gossip before obtaining Survey the Land if (pPlayer->GetQuestStatus(QUEST_SURVEY) == QUEST_STATUS_NONE) @@ -293,7 +224,7 @@ bool GossipHello_npc_altruis_the_sufferer(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_PUPIL) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] Story about Illidan's Pupil", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+30); - pPlayer->SEND_GOSSIP_MENU(9419, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9419, pCreature->GetObjectGuid()); return true; } @@ -303,27 +234,27 @@ bool GossipSelect_npc_altruis_the_sufferer(Player* pPlayer, Creature* pCreature, { case GOSSIP_ACTION_INFO_DEF+10: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Legion?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(9420, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9420, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+11: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "And now?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12); - pPlayer->SEND_GOSSIP_MENU(9421, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9421, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+12: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "How do you see them now?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13); - pPlayer->SEND_GOSSIP_MENU(9422, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9422, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+13: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Forge camps?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14); - pPlayer->SEND_GOSSIP_MENU(9423, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9423, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+14: - pPlayer->SEND_GOSSIP_MENU(9424, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9424, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+20: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Ok.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); - pPlayer->SEND_GOSSIP_MENU(9427, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9427, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+21: pPlayer->CLOSE_GOSSIP_MENU(); @@ -332,7 +263,7 @@ bool GossipSelect_npc_altruis_the_sufferer(Player* pPlayer, Creature* pCreature, case GOSSIP_ACTION_INFO_DEF+30: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[PH] Story done", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 31); - pPlayer->SEND_GOSSIP_MENU(384, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(384, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+31: pPlayer->CLOSE_GOSSIP_MENU(); @@ -360,21 +291,21 @@ bool QuestAccept_npc_altruis_the_sufferer(Player* pPlayer, Creature* pCreature, bool GossipHello_npc_greatmother_geyah(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(10044) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Hello, Greatmother. Garrosh told me that you wanted to speak with me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } else if (pPlayer->GetQuestStatus(10172) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Garrosh is beyond redemption, Greatmother. I fear that in helping the Mag'har, I have convinced Garrosh that he is unfit to lead.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -385,27 +316,27 @@ bool GossipSelect_npc_greatmother_geyah(Player* pPlayer, Creature* pCreature, ui { case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "You raised all of the orcs here, Greatmother?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Do you believe that?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What can be done? I have tried many different things. I have done my best to help the people of Nagrand. Each time I have approached Garrosh, he has dismissed me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Left? How can you choose to leave?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What is this duty?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Is there anything I can do for you, Greatmother?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 7: pPlayer->AreaExploredOrEventHappens(10044); @@ -414,23 +345,23 @@ bool GossipSelect_npc_greatmother_geyah(Player* pPlayer, Creature* pCreature, ui case GOSSIP_ACTION_INFO_DEF + 10: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I have done all that I could, Greatmother. I thank you for your kind words.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 11: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Greatmother, you are the mother of Durotan?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 12: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Greatmother, I never had the honor. Durotan died long before my time, but his heroics are known to all on my world. The orcs of Azeroth reside in a place known as Durotar, named after your son. And ... (You take a moment to breathe and think through what you are about to tell the Greatmother.)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 13: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "It is my Warchief, Greatmother. The leader of my people. From my world. He ... He is the son of Durotan. He is your grandchild.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 14: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I will return to Azeroth at once, Greatmother.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 15: pPlayer->AreaExploredOrEventHappens(10172); @@ -447,12 +378,12 @@ bool GossipSelect_npc_greatmother_geyah(Player* pPlayer, Creature* pCreature, ui bool GossipHello_npc_lantresor_of_the_blade(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(10107) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(10108) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I have killed many of your ogres, Lantresor. I have no fear.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(9361, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9361, pCreature->GetObjectGuid()); return true; } @@ -463,34 +394,34 @@ bool GossipSelect_npc_lantresor_of_the_blade(Player* pPlayer, Creature* pCreatur { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Should I know? You look like an orc to me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(9362, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9362, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "And the other half?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(9363, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9363, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I have heard of your kind, but I never thought to see the day when I would meet a half-breed.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - pPlayer->SEND_GOSSIP_MENU(9364, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9364, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "My apologies. I did not mean to offend. I am here on behalf of my people.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - pPlayer->SEND_GOSSIP_MENU(9365, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9365, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "My people ask that you pull back your Boulderfist ogres and cease all attacks on our territories. In return, we will also pull back our forces.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - pPlayer->SEND_GOSSIP_MENU(9366, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9366, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We will fight you until the end, then, Lantresor. We will not stand idly by as you pillage our towns and kill our people.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - pPlayer->SEND_GOSSIP_MENU(9367, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9367, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What do I need to do?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); - pPlayer->SEND_GOSSIP_MENU(9368, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9368, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: - pPlayer->SEND_GOSSIP_MENU(9369, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9369, pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(10107) == QUEST_STATUS_INCOMPLETE) pPlayer->AreaExploredOrEventHappens(10107); if (pPlayer->GetQuestStatus(10108) == QUEST_STATUS_INCOMPLETE) @@ -644,7 +575,7 @@ bool QuestAccept_npc_maghar_captive(Player* pPlayer, Creature* pCreature, const pCreature->SetStandState(UNIT_STAND_STATE_STAND); pCreature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); DoScriptText(SAY_MAG_START, pCreature); @@ -687,7 +618,7 @@ struct MANGOS_DLL_DECL npc_creditmarker_visit_with_ancestorsAI : public Scripted { // 18840: Sunspring, 18841: Laughing, 18842: Garadar, 18843: Bleeding if (!((Player*)pWho)->GetReqKillOrCastCurrentCount(QUEST_VISIT_WITH_ANCESTORS, creditMarkerId)) - ((Player*)pWho)->KilledMonsterCredit(creditMarkerId, m_creature->GetGUID()); + ((Player*)pWho)->KilledMonsterCredit(creditMarkerId, m_creature->GetObjectGuid()); } } } @@ -707,11 +638,6 @@ void AddSC_nagrand() { Script* pNewScript; - pNewScript = new Script; - pNewScript->Name = "mob_shattered_rumbler"; - pNewScript->GetAI = &GetAI_mob_shattered_rumbler; - pNewScript->RegisterSelf(); - pNewScript = new Script; pNewScript->Name = "mob_lump"; pNewScript->GetAI = &GetAI_mob_lump; @@ -719,11 +645,6 @@ void AddSC_nagrand() pNewScript->pGossipSelect = &GossipSelect_mob_lump; pNewScript->RegisterSelf(); - pNewScript = new Script; - pNewScript->Name = "mob_sunspring_villager"; - pNewScript->GetAI = &GetAI_mob_sunspring_villager; - pNewScript->RegisterSelf(); - pNewScript = new Script; pNewScript->Name = "npc_altruis_the_sufferer"; pNewScript->pGossipHello = &GossipHello_npc_altruis_the_sufferer; diff --git a/scripts/outland/netherstorm.cpp b/scripts/outland/netherstorm.cpp index a96a184..8a43b2d 100644 --- a/scripts/outland/netherstorm.cpp +++ b/scripts/outland/netherstorm.cpp @@ -82,8 +82,8 @@ struct MANGOS_DLL_DECL npc_manaforge_control_consoleAI : public ScriptedAI { npc_manaforge_control_consoleAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint64 m_uiPlayerGUID; - uint64 m_uiConsoleGUID; + ObjectGuid m_playerGuid; + ObjectGuid m_consoleGuid; uint32 m_uiEventTimer; uint32 m_uiWaveTimer; uint32 m_uiPhase; @@ -91,8 +91,8 @@ struct MANGOS_DLL_DECL npc_manaforge_control_consoleAI : public ScriptedAI void Reset() { - m_uiPlayerGUID = 0; - m_uiConsoleGUID = 0; + m_playerGuid.Clear(); + m_consoleGuid.Clear(); m_uiEventTimer = 3000; m_uiWaveTimer = 0; m_uiPhase = 1; @@ -111,39 +111,33 @@ struct MANGOS_DLL_DECL npc_manaforge_control_consoleAI : public ScriptedAI { DoScriptText(EMOTE_ABORT, m_creature); - if (m_uiPlayerGUID) - { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); - if (pPlayer) + if (pPlayer) + { + switch(m_creature->GetEntry()) { - switch(m_creature->GetEntry()) - { - case NPC_BNAAR_C_CONSOLE: - pPlayer->FailQuest(QUEST_SHUTDOWN_BNAAR_ALDOR); - pPlayer->FailQuest(QUEST_SHUTDOWN_BNAAR_SCRYERS); - break; - case NPC_CORUU_C_CONSOLE: - pPlayer->FailQuest(QUEST_SHUTDOWN_CORUU_ALDOR); - pPlayer->FailQuest(QUEST_SHUTDOWN_CORUU_SCRYERS); - break; - case NPC_DURO_C_CONSOLE: - pPlayer->FailQuest(QUEST_SHUTDOWN_DURO_ALDOR); - pPlayer->FailQuest(QUEST_SHUTDOWN_DURO_SCRYERS); - break; - case NPC_ARA_C_CONSOLE: - pPlayer->FailQuest(QUEST_SHUTDOWN_ARA_ALDOR); - pPlayer->FailQuest(QUEST_SHUTDOWN_ARA_SCRYERS); - break; - } + case NPC_BNAAR_C_CONSOLE: + pPlayer->FailQuest(QUEST_SHUTDOWN_BNAAR_ALDOR); + pPlayer->FailQuest(QUEST_SHUTDOWN_BNAAR_SCRYERS); + break; + case NPC_CORUU_C_CONSOLE: + pPlayer->FailQuest(QUEST_SHUTDOWN_CORUU_ALDOR); + pPlayer->FailQuest(QUEST_SHUTDOWN_CORUU_SCRYERS); + break; + case NPC_DURO_C_CONSOLE: + pPlayer->FailQuest(QUEST_SHUTDOWN_DURO_ALDOR); + pPlayer->FailQuest(QUEST_SHUTDOWN_DURO_SCRYERS); + break; + case NPC_ARA_C_CONSOLE: + pPlayer->FailQuest(QUEST_SHUTDOWN_ARA_ALDOR); + pPlayer->FailQuest(QUEST_SHUTDOWN_ARA_SCRYERS); + break; } } - if (m_uiConsoleGUID) - { - if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_uiConsoleGUID)) - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); - } + if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_consoleGuid)) + pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); } void DoWaveSpawnForCreature(Creature* pCreature) @@ -242,13 +236,17 @@ struct MANGOS_DLL_DECL npc_manaforge_control_consoleAI : public ScriptedAI { if (m_uiEventTimer < uiDiff) { - if (!m_uiPlayerGUID) - return; - - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer) + { + // Reset Event + if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_consoleGuid)) + pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + + m_creature->ForcedDespawn(); return; + } switch(m_uiPhase) { @@ -279,11 +277,10 @@ struct MANGOS_DLL_DECL npc_manaforge_control_consoleAI : public ScriptedAI DoScriptText(EMOTE_COMPLETE, m_creature, pPlayer); pPlayer->KilledMonsterCredit(m_creature->GetEntry(), m_creature->GetObjectGuid()); DoCastSpellIfCan(m_creature, SPELL_DISABLE_VISUAL); - if (m_uiConsoleGUID) - { - if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_uiConsoleGUID)) - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); - } + + if (GameObject* pGo = m_creature->GetMap()->GetGameObject(m_consoleGuid)) + pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + ++m_uiPhase; break; } @@ -316,8 +313,8 @@ bool GOUse_go_manaforge_control_console(Player* pPlayer, GameObject* pGo) { if (pGo->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) { - pPlayer->PrepareQuestMenu(pGo->GetGUID()); - pPlayer->SendPreparedQuest(pGo->GetGUID()); + pPlayer->PrepareQuestMenu(pGo->GetObjectGuid()); + pPlayer->SendPreparedQuest(pGo->GetObjectGuid()); } Creature* pManaforge = NULL; @@ -354,8 +351,8 @@ bool GOUse_go_manaforge_control_console(Player* pPlayer, GameObject* pGo) { if (npc_manaforge_control_consoleAI* pManaforgeAI = dynamic_cast(pManaforge->AI())) { - pManaforgeAI->m_uiPlayerGUID = pPlayer->GetGUID(); - pManaforgeAI->m_uiConsoleGUID = pGo->GetGUID(); + pManaforgeAI->m_playerGuid = pPlayer->GetObjectGuid(); + pManaforgeAI->m_consoleGuid = pGo->GetObjectGuid(); } pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); @@ -394,9 +391,9 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI { npc_commander_dawnforgeAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset (); } - uint64 m_uiPlayerGUID; - uint64 m_uiArdonisGUID; - uint64 m_uiPathaleonGUID; + ObjectGuid m_playerGuid; + ObjectGuid m_ardonisGuid; + ObjectGuid m_pathaleonGuid; uint32 m_uiPhase; uint32 m_uiPhaseSubphase; @@ -405,9 +402,9 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI void Reset() { - m_uiPlayerGUID = 0; - m_uiArdonisGUID = 0; - m_uiPathaleonGUID = 0; + m_playerGuid.Clear(); + m_ardonisGuid.Clear(); + m_pathaleonGuid.Clear(); m_uiPhase = 1; m_uiPhaseSubphase = 0; @@ -418,14 +415,14 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI void JustSummoned(Creature* pSummoned) { if (pSummoned->GetEntry() == NPC_PATHALEON_THE_CALCULATOR_IMAGE) - m_uiPathaleonGUID = pSummoned->GetGUID(); + m_pathaleonGuid = pSummoned->GetObjectGuid(); } void TurnToPathaleonsImage() { - Creature* pArdonis = m_creature->GetMap()->GetCreature(m_uiArdonisGUID); - Creature* pPathaleon = m_creature->GetMap()->GetCreature(m_uiPathaleonGUID); - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Creature* pArdonis = m_creature->GetMap()->GetCreature(m_ardonisGuid); + Creature* pPathaleon = m_creature->GetMap()->GetCreature(m_pathaleonGuid); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pArdonis || !pPathaleon || !pPlayer) return; @@ -440,9 +437,9 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI void TurnToEachOther() { - if (Creature* pArdonis = m_creature->GetMap()->GetCreature(m_uiArdonisGUID)) + if (Creature* pArdonis = m_creature->GetMap()->GetCreature(m_ardonisGuid)) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer) return; @@ -465,8 +462,8 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI if (!pArdonis) return false; - m_uiArdonisGUID = pArdonis->GetGUID(); - m_uiPlayerGUID = pPlayer->GetGUID(); + m_ardonisGuid = pArdonis->GetObjectGuid(); + m_playerGuid = pPlayer->GetObjectGuid(); m_bIsEvent = true; @@ -491,9 +488,9 @@ struct MANGOS_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI return; } - Creature* pArdonis = m_creature->GetMap()->GetCreature(m_uiArdonisGUID); - Creature* pPathaleon = m_creature->GetMap()->GetCreature(m_uiPathaleonGUID); - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Creature* pArdonis = m_creature->GetMap()->GetCreature(m_ardonisGuid); + Creature* pPathaleon = m_creature->GetMap()->GetCreature(m_pathaleonGuid); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pArdonis || !pPlayer) { @@ -643,7 +640,7 @@ bool GossipHello_npc_protectorate_nether_drake(Player* pPlayer, Creature* pCreat if (pPlayer->GetQuestStatus(QUEST_NETHER_WINGS) == QUEST_STATUS_INCOMPLETE && pPlayer->HasItemCount(ITEM_PH_DISRUPTOR, 1)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLY_ULTRIS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -672,13 +669,13 @@ enum bool GossipHello_npc_veronia(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); // Behind Enemy Lines if (pPlayer->GetQuestStatus(QUEST_BEHIND_ENEMY_LINES) && !pPlayer->GetQuestRewardStatus(QUEST_BEHIND_ENEMY_LINES)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLY_CORUU, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -746,7 +743,7 @@ bool QuestAccept_npc_bessy(Player* pPlayer, Creature* pCreature, const Quest* pQ pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); if (npc_bessyAI* pBessyAI = dynamic_cast(pCreature->AI())) - pBessyAI->Start(true, pPlayer->GetGUID(), pQuest); + pBessyAI->Start(true, pPlayer, pQuest); } return true; } @@ -778,8 +775,8 @@ struct MANGOS_DLL_DECL npc_maxx_a_million_escortAI : public npc_escortAI uint8 m_uiSubEvent; uint32 m_uiSubEventTimer; - uint64 m_uiAlleyGUID; - uint64 m_uiLastDraeneiMachineGUID; + ObjectGuid m_alleyGuid; + ObjectGuid m_lastDraeneiMachineGuid; void Reset() { @@ -787,8 +784,8 @@ struct MANGOS_DLL_DECL npc_maxx_a_million_escortAI : public npc_escortAI { m_uiSubEvent = 0; m_uiSubEventTimer = 0; - m_uiAlleyGUID = 0; - m_uiLastDraeneiMachineGUID = 0; + m_alleyGuid.Clear(); + m_lastDraeneiMachineGuid.Clear(); // Reset fields, that were changed on escort-start m_creature->HandleEmote(EMOTE_STATE_STUN); @@ -819,19 +816,19 @@ struct MANGOS_DLL_DECL npc_maxx_a_million_escortAI : public npc_escortAI if (GameObject* pMachine = GetClosestGameObjectWithEntry(m_creature, GO_DRAENEI_MACHINE, INTERACTION_DISTANCE)) { m_creature->SetFacingToObject(pMachine); - m_uiLastDraeneiMachineGUID = pMachine->GetGUID(); + m_lastDraeneiMachineGuid = pMachine->GetObjectGuid(); m_uiSubEvent = 2; m_uiSubEventTimer = 1000; } else - m_uiLastDraeneiMachineGUID = 0; + m_lastDraeneiMachineGuid.Clear(); break; case 36: if (Player* pPlayer = GetPlayerForEscort()) pPlayer->GroupEventHappens(QUEST_MARK_V_IS_ALIVE, m_creature); - if (Creature* pAlley = m_creature->GetMap()->GetCreature(m_uiAlleyGUID)) + if (Creature* pAlley = m_creature->GetMap()->GetCreature(m_alleyGuid)) DoScriptText(SAY_ALLEY_FINISH, pAlley); break; @@ -863,7 +860,7 @@ struct MANGOS_DLL_DECL npc_maxx_a_million_escortAI : public npc_escortAI case 1: // Wait time before Say if (Creature* pAlley = GetClosestCreatureWithEntry(m_creature, NPC_BOT_SPECIALIST_ALLEY, INTERACTION_DISTANCE*2)) { - m_uiAlleyGUID = pAlley->GetGUID(); + m_alleyGuid = pAlley->GetObjectGuid(); DoScriptText(SAY_ALLEY_FAREWELL, pAlley); } m_uiSubEventTimer = 0; @@ -875,10 +872,10 @@ struct MANGOS_DLL_DECL npc_maxx_a_million_escortAI : public npc_escortAI m_uiSubEvent = 3; break; case 3: // Despawn machine after 2s - if (GameObject* pMachine = m_creature->GetMap()->GetGameObject(m_uiLastDraeneiMachineGUID)) + if (GameObject* pMachine = m_creature->GetMap()->GetGameObject(m_lastDraeneiMachineGuid)) pMachine->Use(m_creature); - m_uiLastDraeneiMachineGUID = 0; + m_lastDraeneiMachineGuid.Clear(); m_uiSubEventTimer = 0; m_uiSubEvent = 0; break; @@ -914,7 +911,7 @@ bool QuestAccept_npc_maxx_a_million(Player* pPlayer, Creature* pCreature, const // Remove unit_flags (see comment in JustReachedHome) pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE + UNIT_FLAG_PASSIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); } } return true; diff --git a/scripts/outland/shadowmoon_valley.cpp b/scripts/outland/shadowmoon_valley.cpp index 28407d1..78ed7e7 100644 --- a/scripts/outland/shadowmoon_valley.cpp +++ b/scripts/outland/shadowmoon_valley.cpp @@ -33,9 +33,9 @@ npc_karynaku npc_oronok_tornheart npc_wilda mob_torloth +npc_lord_illidan_stormrage npc_totem_of_spirits event_spell_soul_captured_credit -npc_lord_illidan_stormrage go_crystal_prison EndContentData */ @@ -64,7 +64,7 @@ struct MANGOS_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI { mob_mature_netherwing_drakeAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - uint64 uiPlayerGUID; + ObjectGuid m_playerGuid; bool bCanEat; bool bIsEating; @@ -74,7 +74,7 @@ struct MANGOS_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI void Reset() { - uiPlayerGUID = 0; + m_playerGuid.Clear(); bCanEat = false; bIsEating = false; @@ -90,7 +90,7 @@ struct MANGOS_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI if (pCaster->GetTypeId() == TYPEID_PLAYER && pSpell->Id == SPELL_PLACE_CARCASS && !m_creature->HasAura(SPELL_JUST_EATEN)) { - uiPlayerGUID = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); bCanEat = true; } } @@ -116,7 +116,7 @@ struct MANGOS_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI { if (bCanEat && !bIsEating) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { GameObject* pGo = pPlayer->GetGameObject(SPELL_PLACE_CARCASS); @@ -151,7 +151,7 @@ struct MANGOS_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI DoCastSpellIfCan(m_creature, SPELL_JUST_EATEN); DoScriptText(SAY_JUST_EATEN, m_creature); - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->KilledMonsterCredit(NPC_EVENT_PINGER, m_creature->GetObjectGuid()); Reset(); @@ -203,12 +203,11 @@ struct MANGOS_DLL_DECL mob_enslaved_netherwing_drakeAI : public ScriptedAI { mob_enslaved_netherwing_drakeAI(Creature* pCreature) : ScriptedAI(pCreature) { - PlayerGUID = 0; Tapped = false; Reset(); } - uint64 PlayerGUID; + ObjectGuid m_playerGuid; uint32 FlyTimer; bool Tapped; @@ -227,7 +226,7 @@ struct MANGOS_DLL_DECL mob_enslaved_netherwing_drakeAI : public ScriptedAI if (Player* pPlayer = pCaster->GetCharmerOrOwnerPlayerOrPlayerItself()) { Tapped = true; - PlayerGUID = pPlayer->GetGUID(); + m_playerGuid = pPlayer->GetObjectGuid(); m_creature->setFaction(FACTION_FRIENDLY); @@ -256,12 +255,12 @@ struct MANGOS_DLL_DECL mob_enslaved_netherwing_drakeAI : public ScriptedAI { Tapped = false; - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(PlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (pPlayer->GetQuestStatus(QUEST_FORCE_OF_NELT) == QUEST_STATUS_INCOMPLETE) { DoCastSpellIfCan(pPlayer, SPELL_FORCE_OF_NELTHARAKU, CAST_TRIGGERED); - PlayerGUID = 0; + m_playerGuid.Clear(); float dx, dy, dz; @@ -314,14 +313,14 @@ struct MANGOS_DLL_DECL npc_dragonmaw_peonAI : public ScriptedAI { npc_dragonmaw_peonAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiPoisonTimer; uint32 m_uiMoveTimer; uint32 m_uiEatTimer; void Reset() { - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_uiPoisonTimer = 0; m_uiMoveTimer = 0; m_uiEatTimer = 0; @@ -329,12 +328,13 @@ struct MANGOS_DLL_DECL npc_dragonmaw_peonAI : public ScriptedAI SetEquipmentSlots(true); } - bool SetPlayerTarget(uint64 uiPlayerGUID) + bool SetPlayerTarget(ObjectGuid playerGuid) { - if (m_uiPlayerGUID) + // Check if event already started + if (!m_playerGuid.IsEmpty()) return false; - m_uiPlayerGUID = uiPlayerGUID; + m_playerGuid = playerGuid; m_uiMoveTimer = 500; return true; } @@ -362,14 +362,11 @@ struct MANGOS_DLL_DECL npc_dragonmaw_peonAI : public ScriptedAI void UpdateAI(const uint32 uiDiff) { - if (!m_creature->isAlive()) - return; - if (m_uiMoveTimer) { if (m_uiMoveTimer <= uiDiff) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { GameObject* pMutton = pPlayer->GetGameObject(SPELL_SERVING_MUTTON); @@ -414,7 +411,7 @@ struct MANGOS_DLL_DECL npc_dragonmaw_peonAI : public ScriptedAI { if (m_uiPoisonTimer <= uiDiff) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) pPlayer->KilledMonsterCredit(NPC_DRAGONMAW_KILL_CREDIT, m_creature->GetObjectGuid()); m_uiPoisonTimer = 0; @@ -444,7 +441,7 @@ bool EffectDummyCreature_npc_dragonmaw_peon(Unit* pCaster, uint32 uiSpellId, Spe if (!pPeonAI) return false; - if (pPeonAI->SetPlayerTarget(pCaster->GetGUID())) + if (pPeonAI->SetPlayerTarget(pCaster->GetObjectGuid())) { pCreatureTarget->HandleEmote(EMOTE_ONESHOT_NONE); return true; @@ -462,7 +459,7 @@ bool GossipHello_npc_drake_dealer_hurlunk(Player* pPlayer, Creature* pCreature) if (pCreature->isVendor() && pPlayer->GetReputationRank(1015) == REP_EXALTED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -470,7 +467,7 @@ bool GossipHello_npc_drake_dealer_hurlunk(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_drake_dealer_hurlunk(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -486,7 +483,7 @@ bool GossipHello_npcs_flanis_swiftwing_and_kagrosh(Player* pPlayer, Creature* pC if (pPlayer->GetQuestStatus(10601) == QUEST_STATUS_INCOMPLETE && !pPlayer->HasItemCount(30659,1,true)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Take Kagrosh's Pack", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -521,7 +518,7 @@ bool GossipHello_npc_murkblood_overseer(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_11082) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I am here for you, overseer.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); return true; } @@ -532,31 +529,31 @@ bool GossipSelect_npc_murkblood_overseer(Player* pPlayer, Creature* pCreature, u case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "How dare you question an overseer of the Dragonmaw!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Who speaks of me? What are you talking about, broken?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Continue please.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Who are these bidders?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Well... yes.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: //correct id not known - pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10940, pCreature->GetObjectGuid()); pCreature->CastSpell(pPlayer,41121,false); pPlayer->AreaExploredOrEventHappens(QUEST_11082); break; @@ -571,12 +568,12 @@ bool GossipSelect_npc_murkblood_overseer(Player* pPlayer, Creature* pCreature, u bool GossipHello_npc_neltharaku(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(10814) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I am listening, dragon", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10613, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10613, pCreature->GetObjectGuid()); return true; } @@ -587,15 +584,15 @@ bool GossipSelect_npc_neltharaku(Player* pPlayer, Creature* pCreature, uint32 ui { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "But you are dragons! How could orcs do this to you?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(10614, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10614, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Your mate?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(10615, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10615, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I have battled many beasts, dragon. I will help you.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(10616, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10616, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->CLOSE_GOSSIP_MENU(); @@ -620,16 +617,16 @@ bool GossipSelect_npc_neltharaku(Player* pPlayer, Creature* pCreature, uint32 ui bool GossipHello_npc_oronok_tornheart(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (pPlayer->GetQuestStatus(10519) == QUEST_STATUS_INCOMPLETE) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(10312, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10312, pCreature->GetObjectGuid()); }else - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -639,31 +636,31 @@ bool GossipSelect_npc_oronok_tornheart(Player* pPlayer, Creature* pCreature, uin switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(10313, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10313, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(10314, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10314, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(10315, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10315, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(10316, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10316, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(10317, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10317, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ORONOK7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(10318, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10318, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->CLOSE_GOSSIP_MENU(); @@ -867,7 +864,7 @@ bool QuestAccept_npc_wilda(Player* pPlayer, Creature* pCreature, const Quest* pQ pCreature->setFaction(FACTION_EARTHEN); if (npc_wildaAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -993,8 +990,8 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI { mob_torlothAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint64 m_uiLordIllidanGUID; - uint64 m_uiPlayerGUID; + ObjectGuid m_lordIllidanGuid; + ObjectGuid m_playerGuid; uint32 m_uiCleaveTimer; uint32 m_uiShadowfuryTimer; @@ -1004,8 +1001,8 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI void Reset() { - m_uiLordIllidanGUID = 0; - m_uiPlayerGUID = 0; + m_lordIllidanGuid.Clear(); + m_playerGuid.Clear(); m_uiAnimationCount = 0; m_uiAnimationTimer = 4000; @@ -1029,7 +1026,7 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI if (TorlothAnim[m_uiAnimationCount].uiCreature == LORD_ILLIDAN) { - pCreature = m_creature->GetMap()->GetCreature(m_uiLordIllidanGUID); + pCreature = m_creature->GetMap()->GetCreature(m_lordIllidanGuid); if (!pCreature) { @@ -1052,7 +1049,7 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI m_creature->SetStandState(UNIT_STAND_STATE_STAND); break; case 5: - if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_playerGuid)) { m_creature->AddThreat(pTarget); m_creature->SetFacingToObject(pTarget); @@ -1061,7 +1058,7 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI break; case 6: { - if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_playerGuid)) { SetCombatMovement(true); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -1082,7 +1079,7 @@ struct MANGOS_DLL_DECL mob_torlothAI : public ScriptedAI { pPlayer->GroupEventHappens(QUEST_BATTLE_OF_THE_CRIMSON_WATCH, m_creature); - if (Creature* pLordIllidan = m_creature->GetMap()->GetCreature(m_uiLordIllidanGUID)) + if (Creature* pLordIllidan = m_creature->GetMap()->GetCreature(m_lordIllidanGuid)) { DoScriptText(SAY_EVENT_COMPLETED, pLordIllidan, pPlayer); pLordIllidan->AI()->EnterEvadeMode(); @@ -1138,170 +1135,6 @@ CreatureAI* GetAI_mob_torloth(Creature* pCreature) return new mob_torlothAI(pCreature); } -/*###### -## npc_totem_of_spirits -######*/ - -enum -{ - QUEST_SPIRITS_FIRE_AND_EARTH = 10458, - QUEST_SPIRITS_WATER = 10480, - QUEST_SPIRITS_AIR = 10481, - - // quest 10458, 10480, 10481 - SPELL_ELEMENTAL_SIEVE = 36035, - NPC_TOTEM_OF_SPIRITS = 21071, - NPC_EARTH_SPIRIT = 21050, // to be killed - NPC_FIERY_SPIRIT = 21061, - NPC_WATER_SPIRIT = 21059, - NPC_AIR_SPIRIT = 21060, - SPELL_EARTH_CAPTURED = 36025, // dummies (having visual effects) - SPELL_FIERY_CAPTURED = 36115, - SPELL_WATER_CAPTURED = 36170, - SPELL_AIR_CAPTURED = 36181, - SPELL_EARTH_CAPTURED_CREDIT = 36108, // event 13513 - SPELL_FIERY_CAPTURED_CREDIT = 36117, // event 13514 - SPELL_WATER_CAPTURED_CREDIT = 36171, // event 13515 - SPELL_AIR_CAPTURED_CREDIT = 36182, // event 13516 - EVENT_EARTH = 13513, - EVENT_FIERY = 13514, - EVENT_WATER = 13515, - EVENT_AIR = 13516, - NPC_CREDIT_MARKER_EARTH = 21092, // quest objective npc's - NPC_CREDIT_MARKER_FIERY = 21094, - NPC_CREDIT_MARKER_WATER = 21095, - NPC_CREDIT_MARKER_AIR = 21096, -}; - -struct MANGOS_DLL_DECL npc_totem_of_spiritsAI : public ScriptedPetAI -{ - npc_totem_of_spiritsAI(Creature* pCreature) : ScriptedPetAI(pCreature) { Reset(); } - - void Reset() {} - - void MoveInLineOfSight(Unit* pWho) {} - void UpdateAI(const uint32 uiDiff) {} - void AttackedBy(Unit* pAttacker) {} - - void OwnerKilledUnit(Unit* pVictim) - { - if (pVictim->GetTypeId() != TYPEID_UNIT) - return; - - uint32 uiEntry = pVictim->GetEntry(); - - // make elementals cast the sieve is only way to make it work properly, due to the spell target modes 22/7 - if (uiEntry == NPC_EARTH_SPIRIT || uiEntry == NPC_FIERY_SPIRIT || uiEntry == NPC_WATER_SPIRIT || uiEntry == NPC_AIR_SPIRIT) - pVictim->CastSpell(pVictim, SPELL_ELEMENTAL_SIEVE, true); - } -}; - -CreatureAI* GetAI_npc_totem_of_spirits(Creature* pCreature) -{ - return new npc_totem_of_spiritsAI(pCreature); -} - -bool EffectDummyCreature_npc_totem_of_spirits(Unit* pCaster, uint32 uiSpellId, SpellEffectIndex uiEffIndex, Creature* pCreatureTarget) -{ - if (uiEffIndex != EFFECT_INDEX_0) - return false; - - switch(uiSpellId) - { - case SPELL_EARTH_CAPTURED: - { - pCaster->CastSpell(pCaster, SPELL_EARTH_CAPTURED_CREDIT, true); - return true; - } - case SPELL_FIERY_CAPTURED: - { - pCaster->CastSpell(pCaster, SPELL_FIERY_CAPTURED_CREDIT, true); - return true; - } - case SPELL_WATER_CAPTURED: - { - pCaster->CastSpell(pCaster, SPELL_WATER_CAPTURED_CREDIT, true); - return true; - } - case SPELL_AIR_CAPTURED: - { - pCaster->CastSpell(pCaster, SPELL_AIR_CAPTURED_CREDIT, true); - return true; - } - } - - return false; -} - -bool EffectAuraDummy_npc_totem_of_spirits(const Aura* pAura, bool bApply) -{ - if (pAura->GetId() != SPELL_ELEMENTAL_SIEVE) - return true; - - if (pAura->GetEffIndex() != EFFECT_INDEX_0) - return true; - - if (bApply) // possible it should be some visual effects, using "enraged soul" npc and "Cosmetic: ... soul" spell - return true; - - Creature* pCreature = (Creature*)pAura->GetTarget(); - Unit* pCaster = pAura->GetCaster(); - - // aura only affect the spirit totem, since this is the one that need to be in range. - // It is possible though, that player is the one who should actually have the aura - // and check for presense of spirit totem, but then we can't script the dummy. - if (!pCreature || !pCreature->IsPet() || !pCaster) - return true; - - // Need to expect the enraged elementals to be caster of aura - switch(pCaster->GetEntry()) - { - case NPC_EARTH_SPIRIT: - pCreature->CastSpell(pCreature, SPELL_EARTH_CAPTURED, true); - break; - case NPC_FIERY_SPIRIT: - pCreature->CastSpell(pCreature, SPELL_FIERY_CAPTURED, true); - break; - case NPC_WATER_SPIRIT: - pCreature->CastSpell(pCreature, SPELL_WATER_CAPTURED, true); - break; - case NPC_AIR_SPIRIT: - pCreature->CastSpell(pCreature, SPELL_AIR_CAPTURED, true); - break; - } - - return true; -} - -bool ProcessEventId_event_spell_soul_captured_credit(uint32 uiEventId, Object* pSource, Object* pTarget, bool bIsStart) -{ - if (bIsStart && pSource->GetTypeId() == TYPEID_UNIT) - { - Player* pOwner = (Player*)((Creature*)pSource)->GetOwner(); - - if (!pOwner) - return true; - - switch(uiEventId) - { - case EVENT_EARTH: - pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_EARTH); - return true; - case EVENT_FIERY: - pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_FIERY); - return true; - case EVENT_WATER: - pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_WATER); - return true; - case EVENT_AIR: - pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_AIR); - return true; - } - } - - return false; -} - /*##### # npc_lord_illidan_stormrage #####*/ @@ -1310,7 +1143,7 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement { npc_lord_illidan_stormrageAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature) {Reset();} - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; uint32 m_uiWaveTimer; uint32 m_uiAnnounceTimer; uint32 m_uiCheckTimer; @@ -1323,7 +1156,7 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement void Reset() { - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_uiWaveTimer = 10000; m_uiAnnounceTimer = 7000; @@ -1340,7 +1173,7 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement void StartEvent(Player* pPlayer) { m_bEventStarted = true; - m_uiPlayerGUID = pPlayer->GetGUID(); + m_playerGuid = pPlayer->GetObjectGuid(); } void SummonWave() @@ -1392,20 +1225,20 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement // increment mob count ++m_uiMobCount; - if (!m_uiPlayerGUID) + if (m_playerGuid.IsEmpty()) return; if (pSummoned->GetEntry() == NPC_TORLOTH_THE_MAGNIFICENT) { if (mob_torlothAI* pTorlothAI = dynamic_cast(pSummoned->AI())) { - pTorlothAI->m_uiLordIllidanGUID = m_creature->GetGUID(); - pTorlothAI->m_uiPlayerGUID = m_uiPlayerGUID; + pTorlothAI->m_lordIllidanGuid = m_creature->GetObjectGuid(); + pTorlothAI->m_playerGuid = m_playerGuid; } } else { - if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_playerGuid)) { float fLocX, fLocY, fLocZ; pTarget->GetPosition(fLocX, fLocY, fLocZ); @@ -1425,7 +1258,7 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement void CheckEventFail() { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer) return; @@ -1487,7 +1320,7 @@ struct MANGOS_DLL_DECL npc_lord_illidan_stormrageAI : public Scripted_NoMovement void UpdateAI(const uint32 uiDiff) { - if (!m_uiPlayerGUID || !m_bEventStarted) + if (m_playerGuid.IsEmpty() || !m_bEventStarted) return; if (!m_uiMobCount && m_uiWaveCount < 4) @@ -1538,6 +1371,170 @@ bool GOQuestAccept_GO_crystal_prison(Player* pPlayer, GameObject* pGo, Quest con return true; } +/*###### +## npc_totem_of_spirits +######*/ + +enum +{ + QUEST_SPIRITS_FIRE_AND_EARTH = 10458, + QUEST_SPIRITS_WATER = 10480, + QUEST_SPIRITS_AIR = 10481, + + // quest 10458, 10480, 10481 + SPELL_ELEMENTAL_SIEVE = 36035, + NPC_TOTEM_OF_SPIRITS = 21071, + NPC_EARTH_SPIRIT = 21050, // to be killed + NPC_FIERY_SPIRIT = 21061, + NPC_WATER_SPIRIT = 21059, + NPC_AIR_SPIRIT = 21060, + SPELL_EARTH_CAPTURED = 36025, // dummies (having visual effects) + SPELL_FIERY_CAPTURED = 36115, + SPELL_WATER_CAPTURED = 36170, + SPELL_AIR_CAPTURED = 36181, + SPELL_EARTH_CAPTURED_CREDIT = 36108, // event 13513 + SPELL_FIERY_CAPTURED_CREDIT = 36117, // event 13514 + SPELL_WATER_CAPTURED_CREDIT = 36171, // event 13515 + SPELL_AIR_CAPTURED_CREDIT = 36182, // event 13516 + EVENT_EARTH = 13513, + EVENT_FIERY = 13514, + EVENT_WATER = 13515, + EVENT_AIR = 13516, + NPC_CREDIT_MARKER_EARTH = 21092, // quest objective npc's + NPC_CREDIT_MARKER_FIERY = 21094, + NPC_CREDIT_MARKER_WATER = 21095, + NPC_CREDIT_MARKER_AIR = 21096, +}; + +struct MANGOS_DLL_DECL npc_totem_of_spiritsAI : public ScriptedPetAI +{ + npc_totem_of_spiritsAI(Creature* pCreature) : ScriptedPetAI(pCreature) { Reset(); } + + void Reset() {} + + void MoveInLineOfSight(Unit* pWho) {} + void UpdateAI(const uint32 uiDiff) {} + void AttackedBy(Unit* pAttacker) {} + + void OwnerKilledUnit(Unit* pVictim) + { + if (pVictim->GetTypeId() != TYPEID_UNIT) + return; + + uint32 uiEntry = pVictim->GetEntry(); + + // make elementals cast the sieve is only way to make it work properly, due to the spell target modes 22/7 + if (uiEntry == NPC_EARTH_SPIRIT || uiEntry == NPC_FIERY_SPIRIT || uiEntry == NPC_WATER_SPIRIT || uiEntry == NPC_AIR_SPIRIT) + pVictim->CastSpell(pVictim, SPELL_ELEMENTAL_SIEVE, true); + } +}; + +CreatureAI* GetAI_npc_totem_of_spirits(Creature* pCreature) +{ + return new npc_totem_of_spiritsAI(pCreature); +} + +bool EffectDummyCreature_npc_totem_of_spirits(Unit* pCaster, uint32 uiSpellId, SpellEffectIndex uiEffIndex, Creature* pCreatureTarget) +{ + if (uiEffIndex != EFFECT_INDEX_0) + return false; + + switch(uiSpellId) + { + case SPELL_EARTH_CAPTURED: + { + pCaster->CastSpell(pCaster, SPELL_EARTH_CAPTURED_CREDIT, true); + return true; + } + case SPELL_FIERY_CAPTURED: + { + pCaster->CastSpell(pCaster, SPELL_FIERY_CAPTURED_CREDIT, true); + return true; + } + case SPELL_WATER_CAPTURED: + { + pCaster->CastSpell(pCaster, SPELL_WATER_CAPTURED_CREDIT, true); + return true; + } + case SPELL_AIR_CAPTURED: + { + pCaster->CastSpell(pCaster, SPELL_AIR_CAPTURED_CREDIT, true); + return true; + } + } + + return false; +} + +bool EffectAuraDummy_npc_totem_of_spirits(const Aura* pAura, bool bApply) +{ + if (pAura->GetId() != SPELL_ELEMENTAL_SIEVE) + return true; + + if (pAura->GetEffIndex() != EFFECT_INDEX_0) + return true; + + if (bApply) // possible it should be some visual effects, using "enraged soul" npc and "Cosmetic: ... soul" spell + return true; + + Creature* pCreature = (Creature*)pAura->GetTarget(); + Unit* pCaster = pAura->GetCaster(); + + // aura only affect the spirit totem, since this is the one that need to be in range. + // It is possible though, that player is the one who should actually have the aura + // and check for presense of spirit totem, but then we can't script the dummy. + if (!pCreature || !pCreature->IsPet() || !pCaster) + return true; + + // Need to expect the enraged elementals to be caster of aura + switch(pCaster->GetEntry()) + { + case NPC_EARTH_SPIRIT: + pCreature->CastSpell(pCreature, SPELL_EARTH_CAPTURED, true); + break; + case NPC_FIERY_SPIRIT: + pCreature->CastSpell(pCreature, SPELL_FIERY_CAPTURED, true); + break; + case NPC_WATER_SPIRIT: + pCreature->CastSpell(pCreature, SPELL_WATER_CAPTURED, true); + break; + case NPC_AIR_SPIRIT: + pCreature->CastSpell(pCreature, SPELL_AIR_CAPTURED, true); + break; + } + + return true; +} + +bool ProcessEventId_event_spell_soul_captured_credit(uint32 uiEventId, Object* pSource, Object* pTarget, bool bIsStart) +{ + if (bIsStart && pSource->GetTypeId() == TYPEID_UNIT) + { + Player* pOwner = (Player*)((Creature*)pSource)->GetOwner(); + + if (!pOwner) + return true; + + switch(uiEventId) + { + case EVENT_EARTH: + pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_EARTH); + return true; + case EVENT_FIERY: + pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_FIERY); + return true; + case EVENT_WATER: + pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_WATER); + return true; + case EVENT_AIR: + pOwner->KilledMonsterCredit(NPC_CREDIT_MARKER_AIR); + return true; + } + } + + return false; +} + void AddSC_shadowmoon_valley() { Script *newscript; diff --git a/scripts/outland/shattrath_city.cpp b/scripts/outland/shattrath_city.cpp index 4ad9a66..5050663 100644 --- a/scripts/outland/shattrath_city.cpp +++ b/scripts/outland/shattrath_city.cpp @@ -54,16 +54,14 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI npc_dirty_larryAI(Creature* pCreature) : ScriptedAI(pCreature) { m_uiNpcFlags = pCreature->GetUInt32Value(UNIT_NPC_FLAGS); - m_uiCreepjackGUID = 0; - m_uiMaloneGUID = 0; Reset(); } uint32 m_uiNpcFlags; - uint64 m_uiCreepjackGUID; - uint64 m_uiMaloneGUID; - uint64 m_uiPlayerGUID; + ObjectGuid m_creepjackGuid; + ObjectGuid m_maloneGuid; + ObjectGuid m_playerGuid; bool bEvent; bool bActiveAttack; @@ -75,9 +73,9 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI { m_creature->SetUInt32Value(UNIT_NPC_FLAGS, m_uiNpcFlags); - m_uiPlayerGUID = 0; - m_uiCreepjackGUID = 0; - m_uiMaloneGUID = 0; + m_playerGuid.Clear(); + m_creepjackGuid.Clear(); + m_maloneGuid.Clear(); bEvent = false; bActiveAttack = false; @@ -90,7 +88,7 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); } - void SetRuffies(uint64 guid, bool bAttack, bool bReset) + void SetRuffies(ObjectGuid guid, bool bAttack, bool bReset) { Creature* pCreature = m_creature->GetMap()->GetCreature(guid); @@ -117,7 +115,7 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI if (bAttack) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { if (pPlayer->isAlive()) pCreature->AI()->AttackStart(pPlayer); @@ -126,30 +124,32 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI } } - void StartEvent() + void StartEvent(Player* pPlayer) { + m_playerGuid = pPlayer->GetObjectGuid(); + m_creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE); if (Creature* pCreepjack = GetClosestCreatureWithEntry(m_creature, ENTRY_CREEPJACK, 20.0f)) - m_uiCreepjackGUID = pCreepjack->GetGUID(); + m_creepjackGuid = pCreepjack->GetObjectGuid(); if (Creature* pMalone = GetClosestCreatureWithEntry(m_creature, ENTRY_MALONE, 20.0f)) - m_uiMaloneGUID = pMalone->GetGUID(); + m_maloneGuid = pMalone->GetObjectGuid(); bEvent = true; } uint32 NextStep(uint32 uiStep) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (!pPlayer) { - SetRuffies(m_uiCreepjackGUID,false,true); - SetRuffies(m_uiMaloneGUID,false,true); + SetRuffies(m_creepjackGuid, false, true); + SetRuffies(m_maloneGuid, false, true); EnterEvadeMode(); return 0; } @@ -158,22 +158,23 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI { case 1: DoScriptText(SAY_START, m_creature, pPlayer); - SetRuffies(m_uiCreepjackGUID,false,false); - SetRuffies(m_uiMaloneGUID,false,false); + SetRuffies(m_creepjackGuid, false, false); + SetRuffies(m_maloneGuid, false, false); return 3000; - case 2: DoScriptText(SAY_COUNT, m_creature, pPlayer); return 5000; + case 2: DoScriptText(SAY_COUNT, m_creature, pPlayer); return 5000; case 3: DoScriptText(SAY_COUNT_1, m_creature, pPlayer); return 3000; case 4: DoScriptText(SAY_COUNT_2, m_creature, pPlayer); return 3000; - case 5: DoScriptText(SAY_ATTACK, m_creature, pPlayer); return 3000; + case 5: DoScriptText(SAY_ATTACK, m_creature, pPlayer); return 3000; case 6: if (!m_creature->isInCombat() && pPlayer->isAlive()) AttackStart(pPlayer); - SetRuffies(m_uiCreepjackGUID,true,false); - SetRuffies(m_uiMaloneGUID,true,false); + SetRuffies(m_creepjackGuid, true, false); + SetRuffies(m_maloneGuid, true, false); bActiveAttack = true; return 2000; - default: return 0; + default: + return 0; } } @@ -188,24 +189,24 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI AttackStart(pAttacker); } - void DamageTaken(Unit* pDoneBy, uint32 &damage) + void DamageTaken(Unit* pDoneBy, uint32& uiDamage) { - if (damage < m_creature->GetHealth()) + if (uiDamage < m_creature->GetHealth()) return; //damage will kill, this is pretty much the same as 1%HP left if (bEvent) { - damage = 0; + uiDamage = 0; - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { DoScriptText(SAY_GIVEUP, m_creature, pPlayer); pPlayer->GroupEventHappens(QUEST_WHAT_BOOK, m_creature); } - SetRuffies(m_uiCreepjackGUID,false,true); - SetRuffies(m_uiMaloneGUID,false,true); + SetRuffies(m_creepjackGuid, false, true); + SetRuffies(m_maloneGuid, false, true); EnterEvadeMode(); } } @@ -230,12 +231,12 @@ struct MANGOS_DLL_DECL npc_dirty_larryAI : public ScriptedAI bool GossipHello_npc_dirty_larry(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestStatus(QUEST_WHAT_BOOK) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BOOK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -244,10 +245,7 @@ bool GossipSelect_npc_dirty_larry(Player* pPlayer, Creature* pCreature, uint32 u if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { if (npc_dirty_larryAI* pLarryAI = dynamic_cast(pCreature->AI())) - { - pLarryAI->m_uiPlayerGUID = pPlayer->GetGUID(); - pLarryAI->StartEvent(); - } + pLarryAI->StartEvent(pPlayer); pPlayer->CLOSE_GOSSIP_MENU(); } @@ -270,21 +268,21 @@ CreatureAI* GetAI_npc_dirty_larry(Creature* pCreature) bool GossipHello_npc_ishanah(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ISHANAH_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ISHANAH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } bool GossipSelect_npc_ishanah(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_INFO_DEF+1) - pPlayer->SEND_GOSSIP_MENU(9458, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9458, pCreature->GetObjectGuid()); else if (uiAction == GOSSIP_ACTION_INFO_DEF+2) - pPlayer->SEND_GOSSIP_MENU(9459, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9459, pCreature->GetObjectGuid()); return true; } @@ -308,12 +306,12 @@ enum bool GossipHello_npc_khadgar(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetQuestRewardStatus(QUEST_CITY_LIGHT)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(9243, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9243, pCreature->GetObjectGuid()); return true; } @@ -323,31 +321,31 @@ bool GossipSelect_npc_khadgar(Player* pPlayer, Creature* pCreature, uint32 uiSen { case GOSSIP_ACTION_INFO_DEF+1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - pPlayer->SEND_GOSSIP_MENU(9876, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9876, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); - pPlayer->SEND_GOSSIP_MENU(9877, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9877, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); - pPlayer->SEND_GOSSIP_MENU(9878, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9878, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(9879, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9879, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(9880, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9880, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7); - pPlayer->SEND_GOSSIP_MENU(9881, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9881, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+7: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, KHADGAR_GOSSIP_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(9243, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9243, pCreature->GetObjectGuid()); break; } return true; @@ -410,7 +408,7 @@ struct MANGOS_DLL_DECL npc_khadgars_servantAI : public npc_escortAI npc_khadgars_servantAI(Creature* pCreature) : npc_escortAI(pCreature) { if (pCreature->GetOwner() && pCreature->GetOwner()->GetTypeId() == TYPEID_PLAYER) - Start(false, pCreature->GetOwner()->GetGUID()); + Start(false, (Player*)pCreature->GetOwner()); else error_log("SD2: npc_khadgars_servant can not obtain owner or owner is not a player."); @@ -699,7 +697,7 @@ bool GossipHello_npc_raliq_the_drunk(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_RALIQ, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(9440, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9440, pCreature->GetObjectGuid()); return true; } @@ -776,8 +774,8 @@ bool GossipHello_npc_salsalabim(Player* pPlayer, Creature* pCreature) else { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } return true; } @@ -801,11 +799,11 @@ bool GossipHello_npc_shattrathflaskvendors(Player* pPlayer, Creature* pCreature) if (pCreature->isVendor() && (pPlayer->GetReputationRank(932) == REP_EXALTED) && (pPlayer->GetReputationRank(935) == REP_EXALTED) && (pPlayer->GetReputationRank(942) == REP_EXALTED)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(11085, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(11085, pCreature->GetObjectGuid()); } else { - pPlayer->SEND_GOSSIP_MENU(11083, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(11083, pCreature->GetObjectGuid()); } } @@ -815,11 +813,11 @@ bool GossipHello_npc_shattrathflaskvendors(Player* pPlayer, Creature* pCreature) if (pCreature->isVendor() && (pPlayer->GetReputationRank(934) == REP_EXALTED) && (pPlayer->GetReputationRank(935) == REP_EXALTED) && (pPlayer->GetReputationRank(942) == REP_EXALTED)) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(11085, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(11085, pCreature->GetObjectGuid()); } else { - pPlayer->SEND_GOSSIP_MENU(11084, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(11084, pCreature->GetObjectGuid()); } } @@ -829,7 +827,7 @@ bool GossipHello_npc_shattrathflaskvendors(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_shattrathflaskvendors(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -843,7 +841,7 @@ bool GossipHello_npc_zephyr(Player* pPlayer, Creature* pCreature) if (pPlayer->GetReputationRank(989) >= REP_REVERED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Take me to the Caverns of Time.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/scripts/outland/tempest_keep/arcatraz/arcatraz.cpp b/scripts/outland/tempest_keep/arcatraz/arcatraz.cpp index 74042ec..66088f1 100644 --- a/scripts/outland/tempest_keep/arcatraz/arcatraz.cpp +++ b/scripts/outland/tempest_keep/arcatraz/arcatraz.cpp @@ -34,30 +34,33 @@ EndContentData */ # npc_millhouse_manastorm #####*/ -#define SAY_INTRO_1 -1552010 -#define SAY_INTRO_2 -1552011 -#define SAY_WATER -1552012 -#define SAY_BUFFS -1552013 -#define SAY_DRINK -1552014 -#define SAY_READY -1552015 -#define SAY_KILL_1 -1552016 -#define SAY_KILL_2 -1552017 -#define SAY_PYRO -1552018 -#define SAY_ICEBLOCK -1552019 -#define SAY_LOWHP -1552020 -#define SAY_DEATH -1552021 -#define SAY_COMPLETE -1552022 - -#define SPELL_CONJURE_WATER 36879 -#define SPELL_ARCANE_INTELLECT 36880 -#define SPELL_ICE_ARMOR 36881 - -#define SPELL_ARCANE_MISSILES 33833 -#define SPELL_CONE_OF_COLD 12611 -#define SPELL_FIRE_BLAST 13341 -#define SPELL_FIREBALL 14034 -#define SPELL_FROSTBOLT 15497 -#define SPELL_PYROBLAST 33975 +enum +{ + SAY_INTRO_1 = -1552010, + SAY_INTRO_2 = -1552011, + SAY_WATER = -1552012, + SAY_BUFFS = -1552013, + SAY_DRINK = -1552014, + SAY_READY = -1552015, + SAY_KILL_1 = -1552016, + SAY_KILL_2 = -1552017, + SAY_PYRO = -1552018, + SAY_ICEBLOCK = -1552019, + SAY_LOWHP = -1552020, + SAY_DEATH = -1552021, + SAY_COMPLETE = -1552022, + + SPELL_CONJURE_WATER = 36879, + SPELL_ARCANE_INTELLECT = 36880, + SPELL_ICE_ARMOR = 36881, + + SPELL_ARCANE_MISSILES = 33833, + SPELL_CONE_OF_COLD = 12611, + SPELL_FIRE_BLAST = 13341, + SPELL_FIREBALL = 14034, + SPELL_FROSTBOLT = 15497, + SPELL_PYROBLAST = 33975, +}; struct MANGOS_DLL_DECL npc_millhouse_manastormAI : public ScriptedAI { @@ -69,28 +72,28 @@ struct MANGOS_DLL_DECL npc_millhouse_manastormAI : public ScriptedAI ScriptedInstance* m_pInstance; - uint32 EventProgress_Timer; - uint32 Phase; - bool Init; - bool LowHp; + uint32 m_uiEventProgressTimer; + uint32 m_uiPhase; + bool m_bInitFinished; + bool m_bHasLowHp; - uint32 Pyroblast_Timer; - uint32 Fireball_Timer; + uint32 m_uiPyroblastTimer; + uint32 m_uiFireballTimer; void Reset() { - EventProgress_Timer = 2000; - LowHp = false; - Init = false; - Phase = 1; + m_uiEventProgressTimer = 2000; + m_bHasLowHp = false; + m_bInitFinished = false; + m_uiPhase = 1; - Pyroblast_Timer = 1000; - Fireball_Timer = 2500; + m_uiPyroblastTimer = 1000; + m_uiFireballTimer = 2500; if (m_pInstance) { if (m_pInstance->GetData(TYPE_WARDEN_2) == DONE) - Init = true; + m_bInitFinished = true; if (m_pInstance->GetData(TYPE_HARBINGERSKYRISS) == DONE) DoScriptText(SAY_COMPLETE, m_creature); @@ -109,12 +112,12 @@ struct MANGOS_DLL_DECL npc_millhouse_manastormAI : public ScriptedAI } } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* pVictim) { DoScriptText(urand(0, 1) ? SAY_KILL_1 : SAY_KILL_2, m_creature); } - void JustDied(Unit *victim) + void JustDied(Unit* pVictim) { DoScriptText(SAY_DEATH, m_creature); @@ -123,79 +126,83 @@ struct MANGOS_DLL_DECL npc_millhouse_manastormAI : public ScriptedAI ->FailQuest();*/ } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { - if (!Init) + if (!m_bInitFinished) { - if (EventProgress_Timer < diff) + if (m_uiEventProgressTimer < uiDiff) { - if (Phase < 8) + if (m_uiPhase < 8) { - switch(Phase) + switch(m_uiPhase) { case 1: DoScriptText(SAY_INTRO_1, m_creature); - EventProgress_Timer = 18000; + m_uiEventProgressTimer = 18000; break; case 2: DoScriptText(SAY_INTRO_2, m_creature); - EventProgress_Timer = 18000; + m_uiEventProgressTimer = 18000; break; case 3: DoScriptText(SAY_WATER, m_creature); - DoCastSpellIfCan(m_creature,SPELL_CONJURE_WATER); - EventProgress_Timer = 7000; + DoCastSpellIfCan(m_creature, SPELL_CONJURE_WATER); + m_uiEventProgressTimer = 7000; break; case 4: DoScriptText(SAY_BUFFS, m_creature); - DoCastSpellIfCan(m_creature,SPELL_ICE_ARMOR); - EventProgress_Timer = 7000; + DoCastSpellIfCan(m_creature, SPELL_ICE_ARMOR); + m_uiEventProgressTimer = 7000; break; case 5: DoScriptText(SAY_DRINK, m_creature); - DoCastSpellIfCan(m_creature,SPELL_ARCANE_INTELLECT); - EventProgress_Timer = 7000; + DoCastSpellIfCan(m_creature, SPELL_ARCANE_INTELLECT); + m_uiEventProgressTimer = 7000; break; case 6: DoScriptText(SAY_READY, m_creature); - EventProgress_Timer = 6000; + m_uiEventProgressTimer = 6000; break; case 7: if (m_pInstance) - m_pInstance->SetData(TYPE_WARDEN_2,DONE); - Init = true; + m_pInstance->SetData(TYPE_WARDEN_2, DONE); + m_bInitFinished = true; break; } - ++Phase; + ++m_uiPhase; } - } else EventProgress_Timer -= diff; + } + else + m_uiEventProgressTimer -= uiDiff; } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - if (!LowHp && m_creature->GetHealthPercent() < 20.0f) + if (!m_bHasLowHp && m_creature->GetHealthPercent() < 20.0f) { DoScriptText(SAY_LOWHP, m_creature); - LowHp = true; + m_bHasLowHp = true; } - if (Pyroblast_Timer < diff) + if (m_uiPyroblastTimer < uiDiff) { - if (m_creature->IsNonMeleeSpellCasted(false)) - return; - - DoScriptText(SAY_PYRO, m_creature); - - DoCastSpellIfCan(m_creature->getVictim(),SPELL_PYROBLAST); - Pyroblast_Timer = 40000; - }else Pyroblast_Timer -=diff; + if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_PYROBLAST) == CAST_OK) + { + m_uiPyroblastTimer = 40000; + DoScriptText(SAY_PYRO, m_creature); + } + } + else + m_uiPyroblastTimer -=uiDiff; - if (Fireball_Timer < diff) + if (m_uiFireballTimer < uiDiff) { - DoCastSpellIfCan(m_creature->getVictim(),SPELL_FIREBALL); - Fireball_Timer = 4000; - }else Fireball_Timer -=diff; + if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_FIREBALL) == CAST_OK) + m_uiFireballTimer = 4000; + } + else + m_uiFireballTimer -=uiDiff; DoMeleeAttackIfReady(); } @@ -210,36 +217,47 @@ CreatureAI* GetAI_npc_millhouse_manastorm(Creature* pCreature) # npc_warden_mellichar #####*/ -#define YELL_INTRO1 -1552023 -#define YELL_INTRO2 -1552024 -#define YELL_RELEASE1 -1552025 -#define YELL_RELEASE2A -1552026 -#define YELL_RELEASE2B -1552027 -#define YELL_RELEASE3 -1552028 -#define YELL_RELEASE4 -1552029 -#define YELL_WELCOME -1552030 - -//phase 2(acid mobs) -#define ENTRY_TRICKSTER 20905 -#define ENTRY_PH_HUNTER 20906 -//phase 3 -#define ENTRY_MILLHOUSE 20977 -//phase 4(acid mobs) -#define ENTRY_AKKIRIS 20908 -#define ENTRY_SULFURON 20909 -//phase 5(acid mobs) -#define ENTRY_TW_DRAK 20910 -#define ENTRY_BL_DRAK 20911 -//phase 6 -#define ENTRY_SKYRISS 20912 - -//TARGET_SCRIPT -#define SPELL_TARGET_ALPHA 36856 -#define SPELL_TARGET_BETA 36854 -#define SPELL_TARGET_DELTA 36857 -#define SPELL_TARGET_GAMMA 36858 -#define SPELL_TARGET_OMEGA 36852 -#define SPELL_BUBBLE_VISUAL 36849 +enum +{ + YELL_INTRO1 = -1552023, + YELL_INTRO2 = -1552024, + YELL_RELEASE1 = -1552025, + YELL_RELEASE2A = -1552026, + YELL_RELEASE2B = -1552027, + YELL_RELEASE3 = -1552028, + YELL_RELEASE4 = -1552029, + YELL_WELCOME = -1552030, + + // phase 2(acid mobs) + ENTRY_TRICKSTER = 20905, + ENTRY_PH_HUNTER = 20906, + // phase 3 + ENTRY_MILLHOUSE = 20977, + // phase 4(acid mobs) + ENTRY_AKKIRIS = 20908, + ENTRY_SULFURON = 20909, + // phase 5(acid mobs) + ENTRY_TW_DRAK = 20910, + ENTRY_BL_DRAK = 20911, + // phase 6 + ENTRY_SKYRISS = 20912, + + SPELL_TARGET_ALPHA = 36856, + SPELL_TARGET_BETA = 36854, + SPELL_TARGET_DELTA = 36857, + SPELL_TARGET_GAMMA = 36858, + SPELL_TARGET_OMEGA = 36852, + SPELL_BUBBLE_VISUAL = 36849, +}; + +static const float aSummonPosition[5][4] = +{ + {478.326f, -148.505f, 42.56f, 3.19f}, // Trickster or Phase Hunter + {413.292f, -148.378f, 42.56f, 6.27f}, // Millhouse + {420.179f, -174.396f, 42.58f, 0.02f}, // Akkiris or Sulfuron + {471.795f, -174.58f, 42.58f, 3.06f}, // Twilight or Blackwing Drakonaar + {445.763f, -191.639f, 44.64f, 1.60f} // Skyriss +}; struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI { @@ -251,19 +269,19 @@ struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI ScriptedInstance* m_pInstance; - bool IsRunning; - bool CanSpawn; + bool m_bIsEventRunning; + bool m_bCanSpawnNextWave; - uint32 EventProgress_Timer; - uint32 Phase; + uint32 m_uiEventProgressTimer; + uint32 m_uiPhase; void Reset() { - IsRunning = false; - CanSpawn = false; + m_bIsEventRunning = false; + m_bCanSpawnNextWave = false; - EventProgress_Timer = 22000; - Phase = 1; + m_uiEventProgressTimer = 22000; + m_uiPhase = 1; m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE); DoCastSpellIfCan(m_creature,SPELL_TARGET_OMEGA); @@ -272,40 +290,40 @@ struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI m_pInstance->SetData(TYPE_HARBINGERSKYRISS,NOT_STARTED); } - void AttackStart(Unit* who) { } + void AttackStart(Unit* pWho) {} - void MoveInLineOfSight(Unit *who) + void MoveInLineOfSight(Unit* pWho) { - if (IsRunning) + if (m_bIsEventRunning) return; - if (!m_creature->getVictim() && who->isTargetableForAttack() && (m_creature->IsHostileTo(who)) && who->isInAccessablePlaceFor(m_creature)) - { - if (!m_creature->CanFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) - return; + if (pWho->GetTypeId() != TYPEID_PLAYER) + return; - if (who->GetTypeId() != TYPEID_PLAYER) + if (!m_creature->getVictim() && pWho->isTargetableForAttack() && (m_creature->IsHostileTo(pWho)) && pWho->isInAccessablePlaceFor(m_creature)) + { + if (!m_creature->CanFly() && m_creature->GetDistanceZ(pWho) > CREATURE_Z_ATTACK_RANGE) return; - float attackRadius = m_creature->GetAttackDistance(who)/10; - if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) - Aggro(who); + float attackRadius = m_creature->GetAttackDistance(pWho)/10; + if (m_creature->IsWithinDistInMap(pWho, attackRadius) && m_creature->IsWithinLOSInMap(pWho)) + Aggro(pWho); } } - void Aggro(Unit *who) + void Aggro(Unit* pWho) { DoScriptText(YELL_INTRO1, m_creature); - DoCastSpellIfCan(m_creature,SPELL_BUBBLE_VISUAL); + DoCastSpellIfCan(m_creature, SPELL_BUBBLE_VISUAL); if (m_pInstance) { - m_pInstance->SetData(TYPE_HARBINGERSKYRISS,IN_PROGRESS); + m_pInstance->SetData(TYPE_HARBINGERSKYRISS, IN_PROGRESS); - if (GameObject* pSphere = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(DATA_SPHERE_SHIELD))) + if (GameObject* pSphere = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(GO_SEAL_SPHERE))) pSphere->SetGoState(GO_STATE_READY); - IsRunning = true; + m_bIsEventRunning = true; } } @@ -313,19 +331,19 @@ struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI { if (m_pInstance) { - if (Phase == 7 && m_pInstance->GetData(TYPE_WARDEN_4) == DONE) + if (m_uiPhase == 7 && m_pInstance->GetData(TYPE_WARDEN_4) == DONE) return true; - if (Phase == 6 && m_pInstance->GetData(TYPE_WARDEN_3) == DONE) + if (m_uiPhase == 6 && m_pInstance->GetData(TYPE_WARDEN_3) == DONE) return true; - if (Phase == 5 && m_pInstance->GetData(TYPE_WARDEN_2) == DONE) + if (m_uiPhase == 5 && m_pInstance->GetData(TYPE_WARDEN_2) == DONE) return true; - if (Phase == 4) + if (m_uiPhase == 4) return true; - if (Phase == 3 && m_pInstance->GetData(TYPE_WARDEN_1) == DONE) + if (m_uiPhase == 3 && m_pInstance->GetData(TYPE_WARDEN_1) == DONE) return true; - if (Phase == 2 && m_pInstance->GetData(TYPE_HARBINGERSKYRISS) == IN_PROGRESS) + if (m_uiPhase == 2 && m_pInstance->GetData(TYPE_HARBINGERSKYRISS) == IN_PROGRESS) return true; - if (Phase == 1 && m_pInstance->GetData(TYPE_HARBINGERSKYRISS) == IN_PROGRESS) + if (m_uiPhase == 1 && m_pInstance->GetData(TYPE_HARBINGERSKYRISS) == IN_PROGRESS) return true; return false; @@ -340,38 +358,38 @@ struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI m_creature->InterruptNonMeleeSpells(true); m_creature->RemoveSpellsCausingAura(SPELL_AURA_DUMMY); - switch(Phase) + switch(m_uiPhase) { case 2: - DoCastSpellIfCan(m_creature,SPELL_TARGET_ALPHA); - m_pInstance->SetData(TYPE_WARDEN_1,IN_PROGRESS); + DoCastSpellIfCan(m_creature, SPELL_TARGET_ALPHA); + m_pInstance->SetData(TYPE_WARDEN_1, IN_PROGRESS); break; case 3: - DoCastSpellIfCan(m_creature,SPELL_TARGET_BETA); - m_pInstance->SetData(TYPE_WARDEN_2,IN_PROGRESS); + DoCastSpellIfCan(m_creature, SPELL_TARGET_BETA); + m_pInstance->SetData(TYPE_WARDEN_2, IN_PROGRESS); break; case 5: - DoCastSpellIfCan(m_creature,SPELL_TARGET_DELTA); - m_pInstance->SetData(TYPE_WARDEN_3,IN_PROGRESS); + DoCastSpellIfCan(m_creature, SPELL_TARGET_DELTA); + m_pInstance->SetData(TYPE_WARDEN_3, IN_PROGRESS); break; case 6: - DoCastSpellIfCan(m_creature,SPELL_TARGET_GAMMA); - m_pInstance->SetData(TYPE_WARDEN_4,IN_PROGRESS); + DoCastSpellIfCan(m_creature, SPELL_TARGET_GAMMA); + m_pInstance->SetData(TYPE_WARDEN_4, IN_PROGRESS); break; case 7: - m_pInstance->SetData(TYPE_WARDEN_5,IN_PROGRESS); + m_pInstance->SetData(TYPE_WARDEN_5, IN_PROGRESS); break; } - CanSpawn = true; + m_bCanSpawnNextWave = true; } } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { - if (!IsRunning) + if (!m_bIsEventRunning) return; - if (EventProgress_Timer < diff) + if (m_uiEventProgressTimer < uiDiff) { if (m_pInstance) { @@ -379,89 +397,79 @@ struct MANGOS_DLL_DECL npc_warden_mellicharAI : public ScriptedAI Reset(); } - if (CanSpawn) + if (m_bCanSpawnNextWave) { //continue beam omega pod, unless we are about to summon skyriss - if (Phase != 7) - DoCastSpellIfCan(m_creature,SPELL_TARGET_OMEGA); + if (m_uiPhase != 7) + DoCastSpellIfCan(m_creature, SPELL_TARGET_OMEGA); - switch(Phase) + switch (m_uiPhase) { case 2: - switch(urand(0, 1)) - { - case 0: m_creature->SummonCreature(ENTRY_TRICKSTER, 478.326f, -148.505f, 42.56f, 3.19f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - case 1: m_creature->SummonCreature(ENTRY_PH_HUNTER, 478.326f, -148.505f, 42.56f, 3.19f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - } + m_creature->SummonCreature(urand(0, 1) ? ENTRY_TRICKSTER : ENTRY_PH_HUNTER, aSummonPosition[0][0], aSummonPosition[0][1], aSummonPosition[0][2], aSummonPosition[0][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); break; case 3: - m_creature->SummonCreature(ENTRY_MILLHOUSE, 413.292f, -148.378f, 42.56f, 6.27f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); + m_creature->SummonCreature(ENTRY_MILLHOUSE, aSummonPosition[1][0], aSummonPosition[1][1], aSummonPosition[1][2], aSummonPosition[1][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); break; case 4: DoScriptText(YELL_RELEASE2B, m_creature); break; case 5: - switch(urand(0, 1)) - { - case 0: m_creature->SummonCreature(ENTRY_AKKIRIS, 420.179f, -174.396f, 42.58f, 0.02f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - case 1: m_creature->SummonCreature(ENTRY_SULFURON, 420.179f, -174.396f, 42.58f, 0.02f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - } + m_creature->SummonCreature(urand(0, 1) ? ENTRY_AKKIRIS : ENTRY_SULFURON, aSummonPosition[2][0], aSummonPosition[2][1], aSummonPosition[2][2], aSummonPosition[2][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); break; case 6: - switch(urand(0, 1)) - { - case 0: m_creature->SummonCreature(ENTRY_TW_DRAK, 471.795f, -174.58f, 42.58f, 3.06f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - case 1: m_creature->SummonCreature(ENTRY_BL_DRAK, 471.795f, -174.58f, 42.58f, 3.06f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break; - } + m_creature->SummonCreature(urand(0, 1) ? ENTRY_TW_DRAK : ENTRY_BL_DRAK, aSummonPosition[3][0], aSummonPosition[3][1], aSummonPosition[3][2], aSummonPosition[3][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); break; case 7: - m_creature->SummonCreature(ENTRY_SKYRISS, 445.763f, -191.639f, 44.64f, 1.60f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); + m_creature->SummonCreature(ENTRY_SKYRISS, aSummonPosition[4][0], aSummonPosition[4][1], aSummonPosition[4][2], aSummonPosition[4][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); DoScriptText(YELL_WELCOME, m_creature); break; } - CanSpawn = false; - ++Phase; + m_bCanSpawnNextWave = false; + ++m_uiPhase; } if (CanProgress()) { - switch(Phase) + switch(m_uiPhase) { case 1: DoScriptText(YELL_INTRO2, m_creature); - EventProgress_Timer = 10000; - ++Phase; + m_uiEventProgressTimer = 10000; + ++m_uiPhase; break; case 2: DoScriptText(YELL_RELEASE1, m_creature); DoPrepareForPhase(); - EventProgress_Timer = 7000; + m_uiEventProgressTimer = 7000; break; case 3: DoScriptText(YELL_RELEASE2A, m_creature); DoPrepareForPhase(); - EventProgress_Timer = 10000; + m_uiEventProgressTimer = 10000; break; case 4: DoPrepareForPhase(); - EventProgress_Timer = 15000; + m_uiEventProgressTimer = 15000; break; case 5: DoScriptText(YELL_RELEASE3, m_creature); DoPrepareForPhase(); - EventProgress_Timer = 15000; + m_uiEventProgressTimer = 15000; break; case 6: DoScriptText(YELL_RELEASE4, m_creature); DoPrepareForPhase(); - EventProgress_Timer = 15000; + m_uiEventProgressTimer = 15000; break; case 7: DoPrepareForPhase(); - EventProgress_Timer = 15000; + m_uiEventProgressTimer = 15000; break; } } - } else EventProgress_Timer -= diff; + } + else + m_uiEventProgressTimer -= uiDiff; } }; @@ -474,19 +482,22 @@ CreatureAI* GetAI_npc_warden_mellichar(Creature* pCreature) # mob_zerekethvoidzone (this script probably not needed in future -> `creature_template_addon`.`auras`='36120 0') #####*/ -#define SPELL_VOID_ZONE_DAMAGE 36120 +enum +{ + SPELL_VOID_ZONE_DAMAGE = 36120, +}; struct MANGOS_DLL_DECL mob_zerekethvoidzoneAI : public ScriptedAI { - mob_zerekethvoidzoneAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} + mob_zerekethvoidzoneAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } void Reset() { - m_creature->SetUInt32Value(UNIT_NPC_FLAGS,0); + m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); m_creature->setFaction(16); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - DoCastSpellIfCan(m_creature,SPELL_VOID_ZONE_DAMAGE); + DoCastSpellIfCan(m_creature, SPELL_VOID_ZONE_DAMAGE); } }; CreatureAI* GetAI_mob_zerekethvoidzoneAI(Creature* pCreature) diff --git a/scripts/outland/tempest_keep/arcatraz/arcatraz.h b/scripts/outland/tempest_keep/arcatraz/arcatraz.h index a6be8fc..7ee57a5 100644 --- a/scripts/outland/tempest_keep/arcatraz/arcatraz.h +++ b/scripts/outland/tempest_keep/arcatraz/arcatraz.h @@ -9,29 +9,26 @@ enum { MAX_ENCOUNTER = 9, - GO_CORE_SECURITY_FIELD_ALPHA = 184318, //door opened when Wrath-Scryer Soccothrates dies - GO_CORE_SECURITY_FIELD_BETA = 184319, //door opened when Dalliah the Doomsayer dies - GO_SEAL_SPHERE = 184802, //shield 'protecting' mellichar - GO_POD_ALPHA = 183961, //pod first boss wave - GO_POD_BETA = 183963, //pod second boss wave - GO_POD_DELTA = 183964, //pod third boss wave - GO_POD_GAMMA = 183962, //pod fourth boss wave - GO_POD_OMEGA = 183965, //pod fifth boss wave - - NPC_MELLICHAR = 20904, //skyriss will kill this unit - TYPE_ZEREKETH = 1, - TYPE_DALLIAH = 2, - TYPE_SOCCOTHRATES = 3, - TYPE_HARBINGERSKYRISS = 4, - TYPE_WARDEN_1 = 5, + TYPE_DALLIAH = 2, // Handled in ACID (20885 - Dalliah the Doomsayer) + TYPE_SOCCOTHRATES = 3, // Handled in ACID (20886 - Wrath-Scryer Soccothrates) + TYPE_HARBINGERSKYRISS = 4, // Handled with ACID (FAIL of 20905, 20906, 20908, 20909, 20910, 20911) + TYPE_WARDEN_1 = 5, // Handled with ACID (20905 - Blazing Trickster, 20906 - Phase-Hunter) TYPE_WARDEN_2 = 6, - TYPE_WARDEN_3 = 7, - TYPE_WARDEN_4 = 8, + TYPE_WARDEN_3 = 7, // Handled with ACID (20908 - Akkiris Lightning-Waker, 20909 - Sulfuron Magma-Thrower) + TYPE_WARDEN_4 = 8, // Handled with ACID (20910 - Twilight Drakonaar, 20911 - Blackwing Drakonaar) TYPE_WARDEN_5 = 9, - DATA_MELLICHAR = 10, - DATA_SPHERE_SHIELD = 11 + NPC_MELLICHAR = 20904, // Skyriss will kill this unit + + GO_CORE_SECURITY_FIELD_ALPHA = 184318, // Door opened when Wrath-Scryer Soccothrates dies + GO_CORE_SECURITY_FIELD_BETA = 184319, // Door opened when Dalliah the Doomsayer dies + GO_SEAL_SPHERE = 184802, // Shield 'protecting' mellichar + GO_POD_ALPHA = 183961, // Pod first boss wave + GO_POD_BETA = 183963, // Pod second boss wave + GO_POD_DELTA = 183964, // Pod third boss wave + GO_POD_GAMMA = 183962, // Pod fourth boss wave + GO_POD_OMEGA = 183965, // Pod fifth boss wave }; #endif diff --git a/scripts/outland/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp b/scripts/outland/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp index fee4829..f317f16 100644 --- a/scripts/outland/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp +++ b/scripts/outland/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp @@ -17,41 +17,40 @@ /* ScriptData SDName: Boss_Harbinger_Skyriss SD%Complete: 45 -SDComment: CombatAI not fully implemented. Timers will need adjustments. Need more docs on how event fully work. Reset all event and force start over if fail at one point? +SDComment: CombatAI not fully implemented. Timers will need adjustments. On wipe despawn all, and let warden_mellichar respawn after ~1min SDCategory: Tempest Keep, The Arcatraz EndScriptData */ /* ContentData boss_harbinger_skyriss -boss_harbinger_skyriss_illusion +boss_harbinger_skyriss_illusion -- TODO implement or move to ACID EndContentData */ #include "precompiled.h" #include "arcatraz.h" -#define SAY_INTRO -1552000 -#define SAY_AGGRO -1552001 -#define SAY_KILL_1 -1552002 -#define SAY_KILL_2 -1552003 -#define SAY_MIND_1 -1552004 -#define SAY_MIND_2 -1552005 -#define SAY_FEAR_1 -1552006 -#define SAY_FEAR_2 -1552007 -#define SAY_IMAGE -1552008 -#define SAY_DEATH -1552009 - -#define SPELL_FEAR 39415 - -#define SPELL_MIND_REND 36924 -#define H_SPELL_MIND_REND 39017 - -#define SPELL_DOMINATION 37162 -#define H_SPELL_DOMINATION 39019 - -#define H_SPELL_MANA_BURN 39020 - -#define SPELL_66_ILLUSION 36931 //entry 21466 -#define SPELL_33_ILLUSION 36932 //entry 21467 +enum +{ + SAY_INTRO = -1552000, + SAY_AGGRO = -1552001, + SAY_KILL_1 = -1552002, + SAY_KILL_2 = -1552003, + SAY_MIND_1 = -1552004, + SAY_MIND_2 = -1552005, + SAY_FEAR_1 = -1552006, + SAY_FEAR_2 = -1552007, + SAY_IMAGE = -1552008, + SAY_DEATH = -1552009, + + SPELL_FEAR = 39415, + SPELL_MIND_REND = 36924, + SPELL_MIND_REND_H = 39017, + SPELL_DOMINATION = 37162, + SPELL_DOMINATION_H = 39019, + SPELL_MANA_BURN_H = 39020, + SPELL_66_ILLUSION = 36931, // Summons 21466 + SPELL_33_ILLUSION = 36932, // Summons 21467 +}; struct MANGOS_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI { @@ -59,188 +58,191 @@ struct MANGOS_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI { m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); m_bIsRegularMode = pCreature->GetMap()->IsRegularDifficulty(); - Intro = false; + m_bIntroFinished = false; Reset(); } ScriptedInstance* m_pInstance; bool m_bIsRegularMode; - bool Intro; - bool IsImage33; - bool IsImage66; + bool m_bIntroFinished; + bool m_bDidSplitImage33; + bool m_bDidSplitImage66; - uint32 Intro_Phase; - uint32 Intro_Timer; - uint32 MindRend_Timer; - uint32 Fear_Timer; - uint32 Domination_Timer; - uint32 ManaBurn_Timer; + uint32 m_uiIntroPhase; + uint32 m_uiIntroTimer; + uint32 m_uiMindRendTimer; + uint32 m_uiFearTimer; + uint32 m_uiDominationTimer; + uint32 m_uiManaBurnTimer; void Reset() { - IsImage33 = false; - IsImage66 = false; - - Intro_Phase = 1; - Intro_Timer = 5000; - MindRend_Timer = 3000; - Fear_Timer = 15000; - Domination_Timer = 30000; - ManaBurn_Timer = 25000; + m_bDidSplitImage33 = false; + m_bDidSplitImage66 = false; + + m_uiIntroPhase = 1; + m_uiIntroTimer = 5000; + m_uiMindRendTimer = 3000; + m_uiFearTimer = 15000; + m_uiDominationTimer = 30000; + m_uiManaBurnTimer = 25000; } - void MoveInLineOfSight(Unit *who) + void MoveInLineOfSight(Unit* pWho) { - if (!Intro) + if (!m_bIntroFinished) return; - ScriptedAI::MoveInLineOfSight(who); + ScriptedAI::MoveInLineOfSight(pWho); } - void AttackStart(Unit* who) + void AttackStart(Unit* pWho) { - if (!Intro) + if (!m_bIntroFinished) return; - ScriptedAI::AttackStart(who); + ScriptedAI::AttackStart(pWho); } - void JustDied(Unit* Killer) + void JustDied(Unit* pKiller) { DoScriptText(SAY_DEATH, m_creature); if (m_pInstance) - m_pInstance->SetData(TYPE_HARBINGERSKYRISS,DONE); + m_pInstance->SetData(TYPE_HARBINGERSKYRISS, DONE); } - void KilledUnit(Unit* victim) + void KilledUnit(Unit* pVictim) { //won't yell killing pet/other unit - if (victim->GetTypeId() != TYPEID_PLAYER) + if (pVictim->GetTypeId() != TYPEID_PLAYER) return; DoScriptText(urand(0, 1) ? SAY_KILL_1 : SAY_KILL_2, m_creature); } - void JustSummoned(Creature *summoned) + void JustSummoned(Creature* pSummoned) { - summoned->AI()->AttackStart(m_creature->getVictim()); + pSummoned->AI()->AttackStart(m_creature->getVictim()); } void DoSplit() { - if (m_creature->IsNonMeleeSpellCasted(false)) - m_creature->InterruptNonMeleeSpells(false); - DoScriptText(SAY_IMAGE, m_creature); - DoCastSpellIfCan(m_creature, IsImage33 ? SPELL_33_ILLUSION : SPELL_66_ILLUSION); + DoCastSpellIfCan(m_creature, m_bDidSplitImage33 ? SPELL_33_ILLUSION : SPELL_66_ILLUSION, CAST_INTERRUPT_PREVIOUS); } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { - if (!Intro && !m_creature->isInCombat()) + if (!m_bIntroFinished && !m_creature->isInCombat()) { if (!m_pInstance) return; - if (Intro_Timer < diff) + if (m_uiIntroTimer < uiDiff) { - switch(Intro_Phase) + switch(m_uiIntroPhase) { case 1: DoScriptText(SAY_INTRO, m_creature); - if (GameObject* pSphere = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(DATA_SPHERE_SHIELD))) + if (GameObject* pSphere = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(GO_SEAL_SPHERE))) pSphere->SetGoState(GO_STATE_ACTIVE); - ++Intro_Phase; - Intro_Timer = 25000; + ++m_uiIntroPhase; + m_uiIntroTimer = 25000; break; case 2: DoScriptText(SAY_AGGRO, m_creature); - if (Creature *mellic = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_MELLICHAR))) + if (Creature* pMellic = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_MELLICHAR))) { - //should have a better way to do this. possibly spell exist. - mellic->SetDeathState(JUST_DIED); - mellic->SetHealth(0); + // should have a better way to do this. possibly spell exist. + pMellic->SetDeathState(JUST_DIED); + pMellic->SetHealth(0); } - ++Intro_Phase; - Intro_Timer = 3000; + ++m_uiIntroPhase; + m_uiIntroTimer = 3000; break; case 3: - Intro = true; + m_bIntroFinished = true; + // TODO - Let Attack here, or change Unit_flag break; } - }else Intro_Timer -=diff; + } + else + m_uiIntroTimer -=uiDiff; } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; - if (!IsImage66 && m_creature->GetHealthPercent() <= 66.0f) + if (!m_bDidSplitImage66 && m_creature->GetHealthPercent() <= 66.0f) { - IsImage66 = true; + m_bDidSplitImage66 = true; DoSplit(); } - if (!IsImage33 && m_creature->GetHealthPercent() <= 33.0f) + if (!m_bDidSplitImage33 && m_creature->GetHealthPercent() <= 33.0f) { - IsImage33 = true; + m_bDidSplitImage33 = true; DoSplit(); } - if (MindRend_Timer < diff) + if (m_uiMindRendTimer < uiDiff) { - if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,1)) - DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_MIND_REND : H_SPELL_MIND_REND); - else - DoCastSpellIfCan(m_creature->getVictim(), m_bIsRegularMode ? SPELL_MIND_REND : H_SPELL_MIND_REND); + Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1); + if (!pTarget) + pTarget = m_creature->getVictim(); - MindRend_Timer = 8000; - }else MindRend_Timer -=diff; + if (DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_MIND_REND : SPELL_MIND_REND_H) == CAST_OK) + m_uiMindRendTimer = 8000; + } + else + m_uiMindRendTimer -=uiDiff; - if (Fear_Timer < diff) + if (m_uiFearTimer < uiDiff) { - if (m_creature->IsNonMeleeSpellCasted(false)) - return; - - DoScriptText(urand(0, 1) ? SAY_FEAR_1 : SAY_FEAR_2, m_creature); + Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1); + if (!pTarget) + pTarget = m_creature->getVictim(); - if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,1)) - DoCastSpellIfCan(target,SPELL_FEAR); - else - DoCastSpellIfCan(m_creature->getVictim(),SPELL_FEAR); - - Fear_Timer = 25000; - }else Fear_Timer -=diff; + if (DoCastSpellIfCan(pTarget, SPELL_FEAR) == CAST_OK) + { + DoScriptText(urand(0, 1) ? SAY_FEAR_1 : SAY_FEAR_2, m_creature); + m_uiFearTimer = 25000; + } + } + else + m_uiFearTimer -=uiDiff; - if (Domination_Timer < diff) + if (m_uiDominationTimer < uiDiff) { - if (m_creature->IsNonMeleeSpellCasted(false)) - return; - - DoScriptText(urand(0, 1) ? SAY_MIND_1 : SAY_MIND_2, m_creature); - - if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,1)) - DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_DOMINATION : H_SPELL_DOMINATION); - else - DoCastSpellIfCan(m_creature->getVictim(), m_bIsRegularMode ? SPELL_DOMINATION : H_SPELL_DOMINATION); + Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1); + if (!pTarget) + pTarget = m_creature->getVictim(); - Domination_Timer = urand(16000, 32000); - }else Domination_Timer -=diff; + if (DoCastSpellIfCan(pTarget, m_bIsRegularMode ? SPELL_DOMINATION : SPELL_DOMINATION_H) == CAST_OK) + { + DoScriptText(urand(0, 1) ? SAY_MIND_1 : SAY_MIND_2, m_creature); + m_uiDominationTimer = urand(16000, 32000); + } + } + else + m_uiDominationTimer -=uiDiff; if (!m_bIsRegularMode) { - if (ManaBurn_Timer < diff) + if (m_uiManaBurnTimer < uiDiff) { - if (m_creature->IsNonMeleeSpellCasted(false)) - return; - - if (Unit* target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM,1)) - DoCastSpellIfCan(target,H_SPELL_MANA_BURN); + Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1); + if (!pTarget) + pTarget = m_creature->getVictim(); - ManaBurn_Timer = urand(16000, 32000); - }else ManaBurn_Timer -=diff; + if (DoCastSpellIfCan(pTarget, SPELL_MANA_BURN_H) == CAST_OK) + m_uiManaBurnTimer = urand(16000, 32000); + } + else + m_uiManaBurnTimer -=uiDiff; } DoMeleeAttackIfReady(); @@ -252,8 +254,11 @@ CreatureAI* GetAI_boss_harbinger_skyriss(Creature* pCreature) return new boss_harbinger_skyrissAI(pCreature); } -#define SPELL_MIND_REND_IMAGE 36929 -#define H_SPELL_MIND_REND_IMAGE 39021 +enum +{ + SPELL_MIND_REND_IMAGE = 36929, + SPELL_MIND_REND_IMAGE_H = 39021, +}; struct MANGOS_DLL_DECL boss_harbinger_skyriss_illusionAI : public ScriptedAI { @@ -277,15 +282,15 @@ CreatureAI* GetAI_boss_harbinger_skyriss_illusion(Creature* pCreature) void AddSC_boss_harbinger_skyriss() { - Script *newscript; + Script* pNewScript; - newscript = new Script; - newscript->Name = "boss_harbinger_skyriss"; - newscript->GetAI = &GetAI_boss_harbinger_skyriss; - newscript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "boss_harbinger_skyriss"; + pNewScript->GetAI = &GetAI_boss_harbinger_skyriss; + pNewScript->RegisterSelf(); - newscript = new Script; - newscript->Name = "boss_harbinger_skyriss_illusion"; - newscript->GetAI = &GetAI_boss_harbinger_skyriss_illusion; - newscript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "boss_harbinger_skyriss_illusion"; + pNewScript->GetAI = &GetAI_boss_harbinger_skyriss_illusion; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp b/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp index c0332d6..165307e 100644 --- a/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp +++ b/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp @@ -181,9 +181,9 @@ struct MANGOS_DLL_DECL instance_arcatraz : public ScriptedInstance { switch(uiData) { - case DATA_MELLICHAR: + case NPC_MELLICHAR: return m_uiMellicharGUID; - case DATA_SPHERE_SHIELD: + case GO_SEAL_SPHERE: return m_uiGoSphereGUID; } return 0; diff --git a/scripts/outland/tempest_keep/botanica/boss_warp_splinter.cpp b/scripts/outland/tempest_keep/botanica/boss_warp_splinter.cpp index a485757..8141733 100644 --- a/scripts/outland/tempest_keep/botanica/boss_warp_splinter.cpp +++ b/scripts/outland/tempest_keep/botanica/boss_warp_splinter.cpp @@ -170,7 +170,7 @@ struct MANGOS_DLL_DECL boss_warp_splinterAI : public ScriptedAI { // 2) Heal Warp Splinter int32 CurrentHP_Treant = (int32)pTreant->GetHealth(); - m_creature->CastCustomSpell(m_creature,SPELL_HEAL_FATHER,&CurrentHP_Treant, 0, 0, true,0 ,0, m_creature->GetGUID()); + m_creature->CastCustomSpell(m_creature, SPELL_HEAL_FATHER, &CurrentHP_Treant, 0, 0, true, 0 ,0, m_creature->GetObjectGuid()); // 3) Kill Treant pTreant->DealDamage(pTreant, pTreant->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/scripts/outland/tempest_keep/the_eye/boss_astromancer.cpp b/scripts/outland/tempest_keep/the_eye/boss_astromancer.cpp index d80a1f9..b02a5c7 100644 --- a/scripts/outland/tempest_keep/the_eye/boss_astromancer.cpp +++ b/scripts/outland/tempest_keep/the_eye/boss_astromancer.cpp @@ -121,7 +121,7 @@ struct MANGOS_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI m_Phase = PHASE_NORMAL; if (m_pInstance) - m_pInstance->SetData(TYPE_ASTROMANCER, NOT_STARTED); + m_pInstance->SetData(TYPE_SOLARIAN, NOT_STARTED); m_creature->SetArmor(m_uiDefaultArmor); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -150,7 +150,7 @@ struct MANGOS_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI DoScriptText(SAY_DEATH, m_creature); if (m_pInstance) - m_pInstance->SetData(TYPE_ASTROMANCER, DONE); + m_pInstance->SetData(TYPE_SOLARIAN, DONE); } void Aggro(Unit* pWho) @@ -158,7 +158,7 @@ struct MANGOS_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI DoScriptText(SAY_AGGRO, m_creature); if (m_pInstance) - m_pInstance->SetData(TYPE_ASTROMANCER, IN_PROGRESS); + m_pInstance->SetData(TYPE_SOLARIAN, IN_PROGRESS); } void JustSummoned(Creature* pSummoned) @@ -461,7 +461,7 @@ struct MANGOS_DLL_DECL mob_solarium_priestAI : public ScriptedAI { case 0: if (m_pInstance) - pTarget = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(DATA_ASTROMANCER)); + pTarget = m_creature->GetMap()->GetCreature(m_pInstance->GetData64(NPC_ASTROMANCER)); break; case 1: pTarget = m_creature; diff --git a/scripts/outland/tempest_keep/the_eye/boss_kaelthas.cpp b/scripts/outland/tempest_keep/the_eye/boss_kaelthas.cpp index 8345242..29facdb 100644 --- a/scripts/outland/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/scripts/outland/tempest_keep/the_eye/boss_kaelthas.cpp @@ -132,17 +132,6 @@ uint32 m_auiSpellSummonWeapon[]= SPELL_SUMMON_WEAPONE, SPELL_SUMMON_WEAPONF, SPELL_SUMMON_WEAPONG }; -enum Phases -{ - PHASE_0_NOT_BEGUN = 0, - PHASE_1_ADVISOR = 1, - PHASE_2_WEAPON = 2, - PHASE_3_ADVISOR_ALL = 3, - PHASE_4_SOLO = 4, - PHASE_5_GRAVITY = 5, - PHASE_6_COMPLETE = 6 -}; - const float CAPERNIAN_DISTANCE = 20.0f; //she casts away from the target const float KAEL_VISIBLE_RANGE = 50.0f; @@ -189,7 +178,7 @@ struct MANGOS_DLL_DECL advisorbase_ai : public ScriptedAI //reset encounter if (m_pInstance && (m_pInstance->GetData(TYPE_KAELTHAS_PHASE) == PHASE_1_ADVISOR || m_pInstance->GetData(TYPE_KAELTHAS_PHASE) == PHASE_3_ADVISOR_ALL)) { - if (Creature* pKaelthas = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_KAELTHAS))) + if (Creature* pKaelthas = m_pInstance->instance->GetCreature(m_pInstance->GetData64(NPC_KAELTHAS))) pKaelthas->AI()->EnterEvadeMode(); } } @@ -257,7 +246,7 @@ struct MANGOS_DLL_DECL advisorbase_ai : public ScriptedAI m_creature->ModifyAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, false); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->ClearAllReactives(); - m_creature->SetUInt64Value(UNIT_FIELD_TARGET,0); + m_creature->SetTargetGuid(ObjectGuid()); m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->MoveIdle(); m_creature->SetStandState(UNIT_STAND_STATE_DEAD); @@ -372,10 +361,10 @@ struct MANGOS_DLL_DECL boss_kaelthasAI : public ScriptedAI if (!m_pInstance) return; - m_auiAdvisorGuid[0] = m_pInstance->GetData64(DATA_THALADRED); - m_auiAdvisorGuid[1] = m_pInstance->GetData64(DATA_SANGUINAR); - m_auiAdvisorGuid[2] = m_pInstance->GetData64(DATA_CAPERNIAN); - m_auiAdvisorGuid[3] = m_pInstance->GetData64(DATA_TELONICUS); + m_auiAdvisorGuid[0] = m_pInstance->GetData64(NPC_THALADRED); + m_auiAdvisorGuid[1] = m_pInstance->GetData64(NPC_SANGUINAR); + m_auiAdvisorGuid[2] = m_pInstance->GetData64(NPC_CAPERNIAN); + m_auiAdvisorGuid[3] = m_pInstance->GetData64(NPC_TELONICUS); if (!m_auiAdvisorGuid[0] || !m_auiAdvisorGuid[1] || !m_auiAdvisorGuid[2] || !m_auiAdvisorGuid[3]) { @@ -457,7 +446,7 @@ struct MANGOS_DLL_DECL boss_kaelthasAI : public ScriptedAI { if (pSummoned->GetEntry() == NPC_FLAME_STRIKE_TRIGGER) { - pSummoned->CastSpell(pSummoned, SPELL_FLAME_STRIKE_DUMMY, false, NULL, NULL, m_creature->GetGUID()); + pSummoned->CastSpell(pSummoned, SPELL_FLAME_STRIKE_DUMMY, false, NULL, NULL, m_creature->GetObjectGuid()); return; } @@ -960,8 +949,8 @@ struct MANGOS_DLL_DECL boss_kaelthasAI : public ScriptedAI m_creature->CastSpell(pUnit, SPELL_KNOCKBACK, true); //Gravity lapse - needs an exception in Spell system to work - pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE, true, 0, 0, m_creature->GetGUID()); - pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_AURA, true, 0, 0, m_creature->GetGUID()); + pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE, true, NULL, NULL, m_creature->GetObjectGuid()); + pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_AURA, true, NULL, NULL, m_creature->GetObjectGuid()); } } m_uiGravityLapse_Timer = 10000; diff --git a/scripts/outland/tempest_keep/the_eye/instance_the_eye.cpp b/scripts/outland/tempest_keep/the_eye/instance_the_eye.cpp index 9867e92..28b2ade 100644 --- a/scripts/outland/tempest_keep/the_eye/instance_the_eye.cpp +++ b/scripts/outland/tempest_keep/the_eye/instance_the_eye.cpp @@ -24,127 +24,98 @@ EndScriptData */ #include "precompiled.h" #include "the_eye.h" -/* The Eye encounters: -0 - Kael'thas event -1 - Al' ar event -2 - Solarian Event -3 - Void Reaver event -*/ - -struct MANGOS_DLL_DECL instance_the_eye : public ScriptedInstance +instance_the_eye::instance_the_eye(Map* pMap) : ScriptedInstance(pMap), + m_uiThaladredGUID(0), + m_uiSanguinarGUID(0), + m_uiCapernianGUID(0), + m_uiTelonicusGUID(0), + m_uiKaelthasGUID(0), + m_uiAstromancerGUID(0), + + m_uiKaelthasEventPhase(0) { - instance_the_eye(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - - uint64 m_uiThaladredGUID; - uint64 m_uiSanguinarGUID; - uint64 m_uiCapernianGUID; - uint64 m_uiTelonicusGUID; - uint64 m_uiKaelthasGUID; - uint64 m_uiAstromancerGUID; + Initialize(); +} - uint32 m_uiKaelthasEventPhase; +void instance_the_eye::Initialize() +{ + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); +} - void Initialize() +bool instance_the_eye::IsEncounterInProgress() const +{ + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiThaladredGUID = 0; - m_uiSanguinarGUID = 0; - m_uiCapernianGUID = 0; - m_uiTelonicusGUID = 0; - m_uiKaelthasGUID = 0; - m_uiAstromancerGUID = 0; - - m_uiKaelthasEventPhase = 0; + if (m_auiEncounter[i] == IN_PROGRESS) + return true; } - bool IsEncounterInProgress() const - { - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) return true; + if (PHASE_1_ADVISOR <= m_uiKaelthasEventPhase && m_uiKaelthasEventPhase <= PHASE_5_GRAVITY) + return true; - return false; - } + return false; +} - void OnCreatureCreate(Creature* pCreature) +void instance_the_eye::OnCreatureCreate(Creature* pCreature) +{ + switch (pCreature->GetEntry()) { - switch(pCreature->GetEntry()) - { - case 20064: m_uiThaladredGUID = pCreature->GetGUID(); break; - case 20063: m_uiTelonicusGUID = pCreature->GetGUID(); break; - case 20062: m_uiCapernianGUID = pCreature->GetGUID(); break; - case 20060: m_uiSanguinarGUID = pCreature->GetGUID(); break; - case 19622: m_uiKaelthasGUID = pCreature->GetGUID(); break; - case 18805: m_uiAstromancerGUID = pCreature->GetGUID(); break; - } + case NPC_THALADRED: m_uiThaladredGUID = pCreature->GetGUID(); break; + case NPC_TELONICUS: m_uiTelonicusGUID = pCreature->GetGUID(); break; + case NPC_CAPERNIAN: m_uiCapernianGUID = pCreature->GetGUID(); break; + case NPC_SANGUINAR: m_uiSanguinarGUID = pCreature->GetGUID(); break; + case NPC_KAELTHAS: m_uiKaelthasGUID = pCreature->GetGUID(); break; + case NPC_ASTROMANCER: m_uiAstromancerGUID = pCreature->GetGUID(); break; } +} - void SetData(uint32 uiType, uint32 uiData) +void instance_the_eye::SetData(uint32 uiType, uint32 uiData) +{ + switch (uiType) { - switch(uiType) - { - case TYPE_ALAR: - m_auiEncounter[0] = uiData; - break; - case TYPE_SOLARIAN: - m_auiEncounter[1] = uiData; - break; - case TYPE_VOIDREAVER: - m_auiEncounter[2] = uiData; - break; - case TYPE_ASTROMANCER: - m_auiEncounter[3] = uiData; - break; - - case TYPE_KAELTHAS_PHASE: - m_uiKaelthasEventPhase = uiData; - break; - } + case TYPE_ALAR: + case TYPE_SOLARIAN: + case TYPE_VOIDREAVER: + m_auiEncounter[uiType] = uiData; + break; + + case TYPE_KAELTHAS_PHASE: + m_uiKaelthasEventPhase = uiData; + break; } +} - uint32 GetData(uint32 uiType) +uint32 instance_the_eye::GetData(uint32 uiType) +{ + switch(uiType) { - switch(uiType) - { - case TYPE_ALAR: - return m_auiEncounter[0]; - case TYPE_SOLARIAN: - return m_auiEncounter[1]; - case TYPE_VOIDREAVER: - return m_auiEncounter[2]; - case TYPE_ASTROMANCER: - return m_auiEncounter[3]; - - case TYPE_KAELTHAS_PHASE: - return m_uiKaelthasEventPhase; - } - - return 0; + case TYPE_ALAR: + case TYPE_SOLARIAN: + case TYPE_VOIDREAVER: + return m_auiEncounter[uiType]; + case TYPE_KAELTHAS_PHASE: + return m_uiKaelthasEventPhase; + + default: + return 0; } +} - uint64 GetData64(uint32 uiData) +uint64 instance_the_eye::GetData64(uint32 uiData) +{ + switch(uiData) { - switch(uiData) - { - case DATA_THALADRED: - return m_uiThaladredGUID; - case DATA_SANGUINAR: - return m_uiSanguinarGUID; - case DATA_CAPERNIAN: - return m_uiCapernianGUID; - case DATA_TELONICUS: - return m_uiTelonicusGUID; - case DATA_KAELTHAS: - return m_uiKaelthasGUID; - case DATA_ASTROMANCER: - return m_uiAstromancerGUID; - } - - return 0; + case NPC_THALADRED: return m_uiThaladredGUID; + case NPC_SANGUINAR: return m_uiSanguinarGUID; + case NPC_CAPERNIAN: return m_uiCapernianGUID; + case NPC_TELONICUS: return m_uiTelonicusGUID; + case NPC_KAELTHAS: return m_uiKaelthasGUID; + case NPC_ASTROMANCER: return m_uiAstromancerGUID; + + default: + return 0; } -}; +} InstanceData* GetInstanceData_instance_the_eye(Map* pMap) { @@ -153,9 +124,10 @@ InstanceData* GetInstanceData_instance_the_eye(Map* pMap) void AddSC_instance_the_eye() { - Script *newscript; - newscript = new Script; - newscript->Name = "instance_the_eye"; - newscript->GetInstanceData = &GetInstanceData_instance_the_eye; - newscript->RegisterSelf(); + Script* pNewScript; + + pNewScript = new Script; + pNewScript->Name = "instance_the_eye"; + pNewScript->GetInstanceData = &GetInstanceData_instance_the_eye; + pNewScript->RegisterSelf(); } diff --git a/scripts/outland/tempest_keep/the_eye/the_eye.h b/scripts/outland/tempest_keep/the_eye/the_eye.h index 8188329..8aa4ee6 100644 --- a/scripts/outland/tempest_keep/the_eye/the_eye.h +++ b/scripts/outland/tempest_keep/the_eye/the_eye.h @@ -7,21 +7,61 @@ enum { - MAX_ENCOUNTER = 4, + MAX_ENCOUNTER = 3, - TYPE_ALAR = 1, - TYPE_ASTROMANCER = 2, - TYPE_SOLARIAN = 3, - TYPE_VOIDREAVER = 4, - TYPE_KAELTHAS_PHASE = 5, //not regular encounter, contains phase instead + TYPE_ALAR = 0, + TYPE_SOLARIAN = 1, + TYPE_VOIDREAVER = 2, - DATA_ASTROMANCER = 8, - DATA_KAELTHAS = 9, + TYPE_KAELTHAS_PHASE = 3, // not regular encounter, contains phase instead - DATA_CAPERNIAN = 10, - DATA_SANGUINAR = 11, - DATA_TELONICUS = 12, - DATA_THALADRED = 13 + NPC_ASTROMANCER = 18805, + NPC_KAELTHAS = 19622, + + NPC_CAPERNIAN = 20062, + NPC_SANGUINAR = 20060, + NPC_TELONICUS = 20063, + NPC_THALADRED = 20064, +}; + +enum KaelPhases +{ + PHASE_0_NOT_BEGUN = 0, + PHASE_1_ADVISOR = 1, + PHASE_2_WEAPON = 2, + PHASE_3_ADVISOR_ALL = 3, + PHASE_4_SOLO = 4, + PHASE_5_GRAVITY = 5, + PHASE_6_COMPLETE = 6, +}; + +class MANGOS_DLL_DECL instance_the_eye : public ScriptedInstance +{ + public: + instance_the_eye(Map* pMap); + + void Initialize(); + bool IsEncounterInProgress() const; + + void OnCreatureCreate(Creature* pCreature); + + void SetData(uint32 uiType, uint32 uiData); + uint32 GetData(uint32 uiType); + uint64 GetData64(uint32 uiData); + + // No Save or Load needed to current knowledge + + private: + uint32 m_auiEncounter[MAX_ENCOUNTER]; + + uint32 m_uiKaelthasEventPhase; + + uint64 m_uiThaladredGUID; + uint64 m_uiSanguinarGUID; + uint64 m_uiCapernianGUID; + uint64 m_uiTelonicusGUID; + uint64 m_uiKaelthasGUID; + uint64 m_uiAstromancerGUID; }; #endif diff --git a/scripts/outland/terokkar_forest.cpp b/scripts/outland/terokkar_forest.cpp index a7b48dd..a714594 100644 --- a/scripts/outland/terokkar_forest.cpp +++ b/scripts/outland/terokkar_forest.cpp @@ -357,7 +357,7 @@ bool QuestAccept_npc_akuno(Player* pPlayer, Creature* pCreature, const Quest* pQ pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE); DoScriptText(SAY_AKU_START, pCreature); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } return true; @@ -447,7 +447,7 @@ bool GossipHello_npc_floon(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FLOON1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(9442, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9442, pCreature->GetObjectGuid()); return true; } @@ -456,7 +456,7 @@ bool GossipSelect_npc_floon(Player* pPlayer, Creature* pCreature, uint32 uiSende if (uiAction == GOSSIP_ACTION_INFO_DEF) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FLOON2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(9443, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9443, pCreature->GetObjectGuid()); } if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { @@ -477,12 +477,12 @@ bool GossipSelect_npc_floon(Player* pPlayer, Creature* pCreature, uint32 uiSende bool GossipHello_npc_skyguard_handler_deesak(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->GetReputationRank(1031) >= REP_HONORED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SKYGUARD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -776,7 +776,7 @@ bool QuestAccept_npc_letoll(Player* pPlayer, Creature* pCreature, const Quest* p DoScriptText(SAY_LE_START, pCreature); pCreature->setFaction(FACTION_ESCORT_N_NEUTRAL_PASSIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest, true); + pEscortAI->Start(false, pPlayer, pQuest, true); } } @@ -916,10 +916,10 @@ bool GossipHello_npc_slim(Player* pPlayer, Creature* pCreature) if (pCreature->isVendor() && pPlayer->GetReputationRank(FACTION_CONSORTIUM) >= REP_FRIENDLY) { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(9896, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9896, pCreature->GetObjectGuid()); } else - pPlayer->SEND_GOSSIP_MENU(9895, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9895, pCreature->GetObjectGuid()); return true; } @@ -927,7 +927,7 @@ bool GossipHello_npc_slim(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_slim(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -1129,7 +1129,7 @@ bool QuestAccept_npc_isla_starmane(Player* pPlayer, Creature* pCreature, const Q if (npc_isla_starmaneAI* pEscortAI = dynamic_cast(pCreature->AI())) { pCreature->setFaction(pPlayer->GetTeam() == ALLIANCE ? FACTION_ESCORT_A_NEUTRAL_ACTIVE : FACTION_ESCORT_H_NEUTRAL_ACTIVE); - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } } return true; diff --git a/scripts/outland/zangarmarsh.cpp b/scripts/outland/zangarmarsh.cpp index 842d754..bb8b900 100644 --- a/scripts/outland/zangarmarsh.cpp +++ b/scripts/outland/zangarmarsh.cpp @@ -54,7 +54,7 @@ bool GossipHello_npcs_ashyen_and_keleth(Player* pPlayer, Creature* pCreature) if (pCreature->GetEntry() == 17901) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BLESS_KEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -107,7 +107,7 @@ bool GossipSelect_npcs_ashyen_and_keleth(Player* pPlayer, Creature* pCreature, u DoScriptText(SAY_REWARD_BLESS, pCreature, pPlayer); pPlayer->CLOSE_GOSSIP_MENU(); - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); } return true; } @@ -169,7 +169,7 @@ bool GossipHello_npc_cooshcoosh(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_COOSH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(9441, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9441, pCreature->GetObjectGuid()); return true; } @@ -197,7 +197,7 @@ bool GossipHello_npc_elder_kuruti(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(9803) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(9226, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9226, pCreature->GetObjectGuid()); return true; } @@ -208,11 +208,11 @@ bool GossipSelect_npc_elder_kuruti(Player* pPlayer, Creature* pCreature, uint32 { case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(9227, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9227, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 1: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - pPlayer->SEND_GOSSIP_MENU(9229, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9229, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF + 2: { @@ -222,7 +222,7 @@ bool GossipSelect_npc_elder_kuruti(Player* pPlayer, Creature* pCreature, uint32 pPlayer->SendNewItem(pItem, 1, true, false); } - pPlayer->SEND_GOSSIP_MENU(9231, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(9231, pCreature->GetObjectGuid()); break; } } @@ -291,7 +291,7 @@ bool QuestAccept_npc_kayra_longmane(Player* pPlayer, Creature* pCreature, const DoScriptText(SAY_START, pCreature, pPlayer); if (npc_kayra_longmaneAI* pEscortAI = dynamic_cast(pCreature->AI())) - pEscortAI->Start(false, pPlayer->GetGUID(), pQuest); + pEscortAI->Start(false, pPlayer, pQuest); } return true; } @@ -310,7 +310,7 @@ bool GossipHello_npc_mortog_steamhead(Player* pPlayer, Creature* pCreature) if (pCreature->isVendor() && pPlayer->GetReputationRank(942) == REP_EXALTED) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -319,7 +319,7 @@ bool GossipSelect_npc_mortog_steamhead(Player* pPlayer, Creature* pCreature, uin { if (uiAction == GOSSIP_ACTION_TRADE) { - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); } return true; } @@ -339,13 +339,13 @@ enum bool GossipHello_npc_timothy_daniels(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_POISONS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TIMOTHY_DANIELS_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -354,10 +354,10 @@ bool GossipSelect_npc_timothy_daniels(Player* pPlayer, Creature* pCreature, uint switch(uiAction) { case GOSSIP_ACTION_INFO_DEF+1: - pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TIMOTHY_DANIELS1, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TIMOTHY_DANIELS1, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; } diff --git a/scripts/world/bosses_emerald_dragons.cpp b/scripts/world/bosses_emerald_dragons.cpp index ddade74..351b4c4 100644 --- a/scripts/world/bosses_emerald_dragons.cpp +++ b/scripts/world/bosses_emerald_dragons.cpp @@ -16,8 +16,8 @@ /* ScriptData SDName: bosses_emerald_dragons -SD%Complete: 70 -SDComment: Emeriss 90, Lethon 0, Taerar 80, Ysondre 90 - Player-Teleport function missing, Mark of Nature needs core support +SD%Complete: 95 +SDComment: Missing correct behaviour of used trigger NPCs, some spell issues, summon player NYI SDCategory: Emerald Dragon Bosses EndScriptData */ @@ -50,13 +50,6 @@ enum NPC_DREAM_FOG = 15224, }; -enum SpecialDragonEvent -{ - EVENT_75_HEALTH = 1, - EVENT_50_HEALTH = 2, - EVENT_25_HEALTH = 3, -}; - struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI { boss_emerald_dragonAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); } @@ -69,7 +62,7 @@ struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI void Reset() { - m_uiEventCounter = EVENT_75_HEALTH; + m_uiEventCounter = 1; m_uiSeepingFogTimer = urand(15000, 20000); m_uiNoxiousBreathTimer = 8000; @@ -78,7 +71,7 @@ struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI void EnterCombat(Unit* pEnemy) { - DoCastSpellIfCan(m_creature, SPELL_MARK_OF_NATURE_AURA); + DoCastSpellIfCan(m_creature, SPELL_MARK_OF_NATURE_AURA, CAST_TRIGGERED); ScriptedAI::EnterCombat(pEnemy); } @@ -87,7 +80,7 @@ struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI { // Mark killed players with Mark of Nature if (pVictim->GetTypeId() == TYPEID_PLAYER) - pVictim->CastSpell(pVictim, SPELL_MARK_OF_NATURE_PLAYER, true); + pVictim->CastSpell(pVictim, SPELL_MARK_OF_NATURE_PLAYER, true, NULL, NULL, m_creature->GetObjectGuid()); } void JustSummoned(Creature* pSummoned) @@ -100,7 +93,7 @@ struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI } // Return true, if succeeded - virtual bool DoSpecialDragonAbility(SpecialDragonEvent uiEvent) = 0; + virtual bool DoSpecialDragonAbility() = 0; // Return true to handle shared timers and MeleeAttack virtual bool UpdateDragonAI(const uint32 uiDiff) { return true; } @@ -112,7 +105,7 @@ struct MANGOS_DLL_DECL boss_emerald_dragonAI : public ScriptedAI return; // Trigger special ability function at 75, 50 and 25% health - if (m_creature->GetHealthPercent() < 100.0f - m_uiEventCounter * 25.0f && DoSpecialDragonAbility((SpecialDragonEvent) m_uiEventCounter)) + if (m_creature->GetHealthPercent() < 100.0f - m_uiEventCounter * 25.0f && DoSpecialDragonAbility()) ++m_uiEventCounter; // Call dragon specific virtual function @@ -158,7 +151,8 @@ enum SAY_CAST_CORRUPTION = -1000402, SPELL_VOLATILE_INFECTION = 24928, - SPELL_CORRUPTION_OF_EARTH = 24910 + SPELL_CORRUPTION_OF_EARTH = 24910, + SPELL_PUTRID_MUSHROOM = 24904, // Summons a mushroom on killing a player }; struct MANGOS_DLL_DECL boss_emerissAI : public boss_emerald_dragonAI @@ -179,8 +173,17 @@ struct MANGOS_DLL_DECL boss_emerissAI : public boss_emerald_dragonAI DoScriptText(SAY_EMERISS_AGGRO, m_creature); } + void KilledUnit(Unit* pVictim) + { + // summon a mushroom on the spot the player dies + if (pVictim->GetTypeId() == TYPEID_PLAYER) + pVictim->CastSpell(pVictim, SPELL_PUTRID_MUSHROOM, true, NULL, NULL, m_creature->GetObjectGuid()); + + boss_emerald_dragonAI::KilledUnit(pVictim); + } + // Corruption of Earth at 75%, 50% and 25% - bool DoSpecialDragonAbility(SpecialDragonEvent uiEvent) + bool DoSpecialDragonAbility() { if (DoCastSpellIfCan(m_creature, SPELL_CORRUPTION_OF_EARTH) == CAST_OK) { @@ -189,8 +192,8 @@ struct MANGOS_DLL_DECL boss_emerissAI : public boss_emerald_dragonAI // Successfull cast return true; } - else - return false; + + return false; } bool UpdateDragonAI(const uint32 uiDiff) @@ -218,7 +221,48 @@ CreatureAI* GetAI_boss_emeriss(Creature* pCreature) ## boss_lethon ######*/ -// TODO +enum +{ + SAY_LETHON_AGGRO = -1000666, + SAY_DRAW_SPIRIT = -1000667, + + SPELL_SHADOW_BOLT_WIRL = 24834, // Periodic aura + SPELL_DRAW_SPIRIT = 24811, + SPELL_SUMMON_SPIRIT_SHADE = 24810, // Summon spell was removed, was SPELL_EFFECT_SUMMON_DEMON + + NPC_SPIRIT_SHADE = 15261, // Add summoned by Lethon + SPELL_DARK_OFFERING = 24804, + SPELL_SPIRIT_SHAPE_VISUAL = 24809, +}; + +struct MANGOS_DLL_DECL boss_lethonAI : public boss_emerald_dragonAI +{ + boss_lethonAI(Creature* pCreature) : boss_emerald_dragonAI(pCreature) {} + + void Aggro(Unit* pWho) + { + DoScriptText(SAY_LETHON_AGGRO, m_creature); + // Shadow bolt wirl is a periodic aura which triggers a set of shadowbolts every 2 secs; may need some core tunning + DoCastSpellIfCan(m_creature, SPELL_SHADOW_BOLT_WIRL, CAST_TRIGGERED); + } + + // Summon a spirit which moves toward the boss and heals him for each player hit by the spell; used at 75%, 50% and 25% + bool DoSpecialDragonAbility() + { + if (DoCastSpellIfCan(m_creature, SPELL_DRAW_SPIRIT) == CAST_OK) + { + DoScriptText(SAY_DRAW_SPIRIT, m_creature); + return true; + } + + return false; + } +}; + +CreatureAI* GetAI_boss_lethon(Creature* pCreature) +{ + return new boss_lethonAI(pCreature); +} /*###### ## boss_taerar @@ -235,26 +279,21 @@ enum SPELL_SUMMON_SHADE_1 = 24841, SPELL_SUMMON_SHADE_2 = 24842, SPELL_SUMMON_SHADE_3 = 24843, + SPELL_SELF_STUN = 24883, // Stunns the main boss until the shades are dead or timer expires - //Spells of Shades of Taerar + NPC_SHADE_OF_TAERAR = 15302, SPELL_POSIONCLOUD = 24840, SPELL_POSIONBREATH = 20667 }; -static const uint32 auiSpellSummonShade[]= -{ - SPELL_SUMMON_SHADE_1, SPELL_SUMMON_SHADE_2, SPELL_SUMMON_SHADE_3 -}; - struct MANGOS_DLL_DECL boss_taerarAI : public boss_emerald_dragonAI { boss_taerarAI(Creature* pCreature) : boss_emerald_dragonAI(pCreature) { Reset(); } uint32 m_uiArcaneBlastTimer; uint32 m_uiBellowingRoarTimer; - uint32 m_uiShadesTimer; - - bool m_bShades; + uint32 m_uiShadesTimeoutTimer; + uint8 m_uiShadesDead; void Reset() { @@ -262,9 +301,12 @@ struct MANGOS_DLL_DECL boss_taerarAI : public boss_emerald_dragonAI m_uiArcaneBlastTimer = 12000; m_uiBellowingRoarTimer = 30000; - m_uiShadesTimer = 60000; // The time that Taerar is banished + m_uiShadesTimeoutTimer = 0; // The time that Taerar is banished + m_uiShadesDead = 0; - m_bShades = false; + // Remove Unselectable if needed + if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE)) + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } void Aggro(Unit* pWho) @@ -272,53 +314,62 @@ struct MANGOS_DLL_DECL boss_taerarAI : public boss_emerald_dragonAI DoScriptText(SAY_TAERAR_AGGRO, m_creature); } - // Summon 3 Shades at 75%, 50% and 25% - bool DoSpecialDragonAbility(SpecialDragonEvent uiEvent) + // Summon 3 Shades at 75%, 50% and 25% and Banish Self + bool DoSpecialDragonAbility() { - if (!m_bShades) + if (DoCastSpellIfCan(m_creature, SPELL_SELF_STUN) == CAST_OK) { - if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) - { - //Inturrupt any spell casting - m_creature->InterruptNonMeleeSpells(false); + // Summon the shades at boss position + DoCastSpellIfCan(m_creature, SPELL_SUMMON_SHADE_1, CAST_TRIGGERED); + DoCastSpellIfCan(m_creature, SPELL_SUMMON_SHADE_2, CAST_TRIGGERED); + DoCastSpellIfCan(m_creature, SPELL_SUMMON_SHADE_3, CAST_TRIGGERED); - //horrible workaround, need to fix - m_creature->setFaction(35); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + // Make boss not selectable when banished + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - DoScriptText(SAY_SUMMONSHADE, m_creature); + DoScriptText(SAY_SUMMONSHADE, m_creature); + m_uiShadesTimeoutTimer = 60000; - int iSize = sizeof(auiSpellSummonShade) / sizeof(uint32); + return true; + } - for(int i = 0; i < iSize; ++i) - m_creature->CastSpell(pTarget, auiSpellSummonShade[i], true); + return false; + } - m_bShades = true; - m_uiShadesTimer = 60000; + void SummonedCreatureJustDied(Creature* pSummoned) + { + if (pSummoned->GetEntry() == NPC_SHADE_OF_TAERAR) + { + ++m_uiShadesDead; - return true; - } + // If all shades are dead then unbanish the boss + if (m_uiShadesDead == 3) + DoUnbanishBoss(); } - return false; + } + + void DoUnbanishBoss() + { + m_creature->RemoveAurasDueToSpell(SPELL_SELF_STUN); + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + + m_uiShadesTimeoutTimer = 0; + m_uiShadesDead = 0; } bool UpdateDragonAI(const uint32 uiDiff) { - // <<<<<<<<< TODO - FIXME - This code was called also OOC - if (m_bShades && m_uiShadesTimer < uiDiff) + // Timer to unbanish the boss + if (m_uiShadesTimeoutTimer) { - //Become unbanished again - m_creature->setFaction(14); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_bShades = false; - } - else if (m_bShades) - { - m_uiShadesTimer -= uiDiff; - //Do nothing while banished + if (m_uiShadesTimeoutTimer <= uiDiff) + DoUnbanishBoss(); + else + m_uiShadesTimeoutTimer -= uiDiff; + + // Prevent further spells or timer handling while banished return false; } - // >>>>>>>>> end of FIXME // Arcane Blast Timer if (m_uiArcaneBlastTimer < uiDiff) @@ -430,7 +481,7 @@ struct MANGOS_DLL_DECL boss_ysondreAI : public boss_emerald_dragonAI } // Summon Druids - TODO FIXME (spell not understood) - bool DoSpecialDragonAbility(SpecialDragonEvent uiEvent) + bool DoSpecialDragonAbility() { DoScriptText(SAY_SUMMON_DRUIDS, m_creature); @@ -505,6 +556,11 @@ void AddSC_bosses_emerald_dragons() pNewScript->GetAI = &GetAI_boss_emeriss; pNewScript->RegisterSelf(); + pNewScript = new Script; + pNewScript->Name = "boss_lethon"; + pNewScript->GetAI = &GetAI_boss_lethon; + pNewScript->RegisterSelf(); + pNewScript = new Script; pNewScript->Name = "boss_taerar"; pNewScript->GetAI = &GetAI_boss_taerar; diff --git a/scripts/world/go_scripts.cpp b/scripts/world/go_scripts.cpp index afcfde0..15fc90d 100644 --- a/scripts/world/go_scripts.cpp +++ b/scripts/world/go_scripts.cpp @@ -17,15 +17,12 @@ /* ScriptData SDName: GO_Scripts SD%Complete: 100 -SDComment: Quest support: 4285,4287,4288(crystal pylons), 4296, 5088, 5097, 5098, 6481, 10990, 10991, 10992, 12557, 14092/14076. Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089 +SDComment: Quest support: 4296, 5088, 5097, 5098, 5381, 6481, 10990, 10991, 10992, 12557, 14092/14076. Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089 SDCategory: Game Objects EndScriptData */ /* ContentData go_cat_figurine (the "trap" version of GO, two different exist) -go_northern_crystal_pylon -go_eastern_crystal_pylon -go_western_crystal_pylon go_barov_journal go_ethereum_prison go_ethereum_stasis @@ -61,59 +58,6 @@ bool GOUse_go_cat_figurine(Player* pPlayer, GameObject* pGo) return false; } -/*###### -## go_crystal_pylons (3x) -######*/ - -enum -{ - QUEST_THE_NORTHERN_PYLON = 4285, - QUEST_THE_EASTERN_PYLON = 4287, - QUEST_THE_WESTERN_PYLON = 4288 -}; - -bool GOUse_go_northern_crystal_pylon(Player* pPlayer, GameObject* pGo) -{ - if (pGo->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) - { - pPlayer->PrepareQuestMenu(pGo->GetGUID()); - pPlayer->SendPreparedQuest(pGo->GetGUID()); - } - - if (pPlayer->GetQuestStatus(QUEST_THE_NORTHERN_PYLON) == QUEST_STATUS_INCOMPLETE) - pPlayer->AreaExploredOrEventHappens(QUEST_THE_NORTHERN_PYLON); - - return true; -} - -bool GOUse_go_eastern_crystal_pylon(Player* pPlayer, GameObject* pGo) -{ - if (pGo->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) - { - pPlayer->PrepareQuestMenu(pGo->GetGUID()); - pPlayer->SendPreparedQuest(pGo->GetGUID()); - } - - if (pPlayer->GetQuestStatus(QUEST_THE_EASTERN_PYLON) == QUEST_STATUS_INCOMPLETE) - pPlayer->AreaExploredOrEventHappens(QUEST_THE_EASTERN_PYLON); - - return true; -} - -bool GOUse_go_western_crystal_pylon(Player* pPlayer, GameObject* pGo) -{ - if (pGo->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) - { - pPlayer->PrepareQuestMenu(pGo->GetGUID()); - pPlayer->SendPreparedQuest(pGo->GetGUID()); - } - - if (pPlayer->GetQuestStatus(QUEST_THE_WESTERN_PYLON) == QUEST_STATUS_INCOMPLETE) - pPlayer->AreaExploredOrEventHappens(QUEST_THE_WESTERN_PYLON); - - return true; -} - /*###### ## go_barov_journal ######*/ @@ -610,21 +554,6 @@ void AddSC_go_scripts() pNewScript->pGOUse = &GOUse_go_cat_figurine; pNewScript->RegisterSelf(); - pNewScript = new Script; - pNewScript->Name = "go_northern_crystal_pylon"; - pNewScript->pGOUse = &GOUse_go_northern_crystal_pylon; - pNewScript->RegisterSelf(); - - pNewScript = new Script; - pNewScript->Name = "go_eastern_crystal_pylon"; - pNewScript->pGOUse = &GOUse_go_eastern_crystal_pylon; - pNewScript->RegisterSelf(); - - pNewScript = new Script; - pNewScript->Name = "go_western_crystal_pylon"; - pNewScript->pGOUse = &GOUse_go_western_crystal_pylon; - pNewScript->RegisterSelf(); - pNewScript = new Script; pNewScript->Name = "go_barov_journal"; pNewScript->pGOUse = &GOUse_go_barov_journal; diff --git a/scripts/world/guards.cpp b/scripts/world/guards.cpp index a89b7cd..c71e03c 100644 --- a/scripts/world/guards.cpp +++ b/scripts/world/guards.cpp @@ -122,14 +122,14 @@ struct MANGOS_DLL_DECL guard_shattrath_aldorAI : public guardAI uint32 m_uiExile_Timer; uint32 m_uiBanish_Timer; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; bool m_bCanTeleport; void Reset() { m_uiBanish_Timer = 5000; m_uiExile_Timer = 8500; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_bCanTeleport = false; } @@ -142,13 +142,13 @@ struct MANGOS_DLL_DECL guard_shattrath_aldorAI : public guardAI { if (m_uiExile_Timer < uiDiff) { - if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_playerGuid)) { pTarget->CastSpell(pTarget, SPELL_EXILE, true); pTarget->CastSpell(pTarget, SPELL_BANISH_TELEPORT, true); } - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_uiExile_Timer = 8500; m_bCanTeleport = false; } @@ -163,10 +163,8 @@ struct MANGOS_DLL_DECL guard_shattrath_aldorAI : public guardAI { DoCastSpellIfCan(pVictim, SPELL_BANISHED_SHATTRATH_A); m_uiBanish_Timer = 9000; - m_uiPlayerGUID = pVictim->GetGUID(); - - if (m_uiPlayerGUID) - m_bCanTeleport = true; + m_playerGuid = pVictim->GetObjectGuid(); + m_bCanTeleport = true; } } else @@ -191,14 +189,14 @@ struct MANGOS_DLL_DECL guard_shattrath_scryerAI : public guardAI uint32 m_uiExile_Timer; uint32 m_uiBanish_Timer; - uint64 m_uiPlayerGUID; + ObjectGuid m_playerGuid; bool m_bCanTeleport; void Reset() { m_uiBanish_Timer = 5000; m_uiExile_Timer = 8500; - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_bCanTeleport = false; } @@ -211,13 +209,13 @@ struct MANGOS_DLL_DECL guard_shattrath_scryerAI : public guardAI { if (m_uiExile_Timer < uiDiff) { - if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_uiPlayerGUID)) + if (Player* pTarget = m_creature->GetMap()->GetPlayer(m_playerGuid)) { pTarget->CastSpell(pTarget, SPELL_EXILE, true); pTarget->CastSpell(pTarget, SPELL_BANISH_TELEPORT, true); } - m_uiPlayerGUID = 0; + m_playerGuid.Clear(); m_uiExile_Timer = 8500; m_bCanTeleport = false; } @@ -232,10 +230,8 @@ struct MANGOS_DLL_DECL guard_shattrath_scryerAI : public guardAI { DoCastSpellIfCan(pVictim, SPELL_BANISHED_SHATTRATH_S); m_uiBanish_Timer = 9000; - m_uiPlayerGUID = pVictim->GetGUID(); - - if (m_uiPlayerGUID) - m_bCanTeleport = true; + m_playerGuid = pVictim->GetObjectGuid(); + m_bCanTeleport = true; } } else diff --git a/scripts/world/npc_professions.cpp b/scripts/world/npc_professions.cpp index 4e665a1..e4cbecf 100644 --- a/scripts/world/npc_professions.cpp +++ b/scripts/world/npc_professions.cpp @@ -353,7 +353,7 @@ bool HasAlchemySpell(Player* pPlayer) bool GossipHello_npc_prof_alchemy(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (pCreature->isTrainer()) @@ -389,7 +389,7 @@ bool GossipHello_npc_prof_alchemy(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -398,10 +398,10 @@ void SendActionMenu_npc_prof_alchemy(Player* pPlayer, Creature* pCreature, uint3 switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRAIN: - pPlayer->SEND_TRAINERLIST(pCreature->GetGUID()); + pPlayer->SEND_TRAINERLIST(pCreature->GetObjectGuid()); break; //Learn Alchemy case GOSSIP_ACTION_INFO_DEF + 1: @@ -472,17 +472,17 @@ void SendConfirmLearn_npc_prof_alchemy(Player* pPlayer, Creature* pCreature, uin case 22427: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 19052: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 17909: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_POTION, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -498,17 +498,17 @@ void SendConfirmUnlearn_npc_prof_alchemy(Player* pPlayer, Creature* pCreature, u case 22427: //Zarevhi pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ALCHEMY_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 19052: //Lorokeem pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ALCHEMY_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 17909: //Lauranna Thar'well pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ALCHEMY_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -540,7 +540,7 @@ bool HasWeaponSub(Player* pPlayer) bool GossipHello_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (pCreature->isTrainer()) @@ -597,7 +597,7 @@ bool GossipHello_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -606,10 +606,10 @@ void SendActionMenu_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature, ui switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRAIN: - pPlayer->SEND_TRAINERLIST(pCreature->GetGUID()); + pPlayer->SEND_TRAINERLIST(pCreature->GetObjectGuid()); break; //Learn Armor/Weapon case GOSSIP_ACTION_INFO_DEF + 1: @@ -633,7 +633,7 @@ void SendActionMenu_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature, ui if (HasWeaponSub(pPlayer)) { //unknown textID (TALK_MUST_UNLEARN_WEAPON) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } else if (EquippedOk(pPlayer,S_UNLEARN_WEAPON)) { @@ -737,17 +737,17 @@ void SendConfirmLearn_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature, case 11191: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_CHECK, uiAction); //unknown textID (TALK_HAMMER_LEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 11192: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_AXE, GOSSIP_SENDER_CHECK, uiAction); //unknown textID (TALK_AXE_LEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 11193: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_CHECK, uiAction); //unknown textID (TALK_SWORD_LEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -766,23 +766,23 @@ void SendConfirmUnlearn_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature case 11177: //Okothos Ironrager pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SMITH_SPEC, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ARMORORWEAPON, GetUnlearnCostLow(pPlayer),false); //unknown textID (TALK_UNLEARN_AXEORWEAPON) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 11191: pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_WEAPON_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID (TALK_HAMMER_UNLEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 11192: pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_WEAPON_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID (TALK_AXE_UNLEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 11193: pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_WEAPON_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID (TALK_SWORD_UNLEARN) - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -818,7 +818,7 @@ bool GossipSelect_npc_prof_blacksmith(Player* pPlayer, Creature* pCreature, uint bool GossipHello_npc_prof_leather(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (pCreature->isTrainer()) @@ -848,7 +848,7 @@ bool GossipHello_npc_prof_leather(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -857,10 +857,10 @@ void SendActionMenu_npc_prof_leather(Player* pPlayer, Creature* pCreature, uint3 switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRAIN: - pPlayer->SEND_TRAINERLIST(pCreature->GetGUID()); + pPlayer->SEND_TRAINERLIST(pCreature->GetObjectGuid()); break; //Unlearn Leather case GOSSIP_ACTION_INFO_DEF + 1: @@ -919,19 +919,19 @@ void SendConfirmUnlearn_npc_prof_leather(Player* pPlayer, Creature* pCreature, u case 7867: //Thorkaf Dragoneye pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_DRAGON, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_LEATHER_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 7868: //Sarah Tanner case 7869: //Brumn Winterhoof pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_ELEMENTAL, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_LEATHER_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 7870: //Caryssia Moonhunter case 7871: //Se'Jib pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_TRIBAL, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_LEATHER_SPEC, GetUnlearnCostMedium(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -962,7 +962,7 @@ bool HasTailorSpell(Player* pPlayer) bool GossipHello_npc_prof_tailor(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (pCreature->isTrainer()) @@ -998,7 +998,7 @@ bool GossipHello_npc_prof_tailor(Player* pPlayer, Creature* pCreature) } } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -1007,10 +1007,10 @@ void SendActionMenu_npc_prof_tailor(Player* pPlayer, Creature* pCreature, uint32 switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_TRAIN: - pPlayer->SEND_TRAINERLIST(pCreature->GetGUID()); + pPlayer->SEND_TRAINERLIST(pCreature->GetObjectGuid()); break; //Learn Tailor case GOSSIP_ACTION_INFO_DEF + 1: @@ -1096,17 +1096,17 @@ void SendConfirmLearn_npc_prof_tailor(Player* pPlayer, Creature* pCreature, uint case 22213: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 22208: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 22212: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, uiAction); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -1122,17 +1122,17 @@ void SendConfirmUnlearn_npc_prof_tailor(Player* pPlayer, Creature* pCreature, ui case 22213: //Gidge Spellweaver pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_TAILOR_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 22208: //Nasmara Moonsong pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_TAILOR_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; case 22212: //Andrion Darkspinner pPlayer->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, uiAction,BOX_UNLEARN_TAILOR_SPEC, GetUnlearnCostHigh(pPlayer),false); //unknown textID () - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); break; } } @@ -1158,7 +1158,7 @@ bool GossipSelect_npc_prof_tailor(Player* pPlayer, Creature* pCreature, uint32 u { pPlayer->PlayerTalkClass->GetGossipMenu()->AddMenuItem(0,GOSSIP_LEARN_DRAGON, GOSSIP_SENDER_INFO, GOSSIP_ACTION_INFO_DEF, "", 0); - pPlayer->SEND_GOSSIP_MENU(5584, pGo->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5584, pGo->GetObjectGuid()); return true; }*/ diff --git a/scripts/world/npcs_special.cpp b/scripts/world/npcs_special.cpp index 87f45d6..ab49fb6 100644 --- a/scripts/world/npcs_special.cpp +++ b/scripts/world/npcs_special.cpp @@ -108,7 +108,6 @@ struct MANGOS_DLL_DECL npc_air_force_botsAI : public ScriptedAI npc_air_force_botsAI(Creature* pCreature) : ScriptedAI(pCreature) { m_pSpawnAssoc = NULL; - m_uiSpawnedGUID = 0; // find the correct spawnhandling static uint32 uiEntryCount = sizeof(m_aSpawnAssociations)/sizeof(SpawnAssociation); @@ -138,7 +137,7 @@ struct MANGOS_DLL_DECL npc_air_force_botsAI : public ScriptedAI } SpawnAssociation* m_pSpawnAssoc; - uint64 m_uiSpawnedGUID; + ObjectGuid m_spawnedGuid; void Reset() { } @@ -147,7 +146,7 @@ struct MANGOS_DLL_DECL npc_air_force_botsAI : public ScriptedAI Creature* pSummoned = m_creature->SummonCreature(m_pSpawnAssoc->m_uiSpawnedCreatureEntry, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000); if (pSummoned) - m_uiSpawnedGUID = pSummoned->GetGUID(); + m_spawnedGuid = pSummoned->GetObjectGuid(); else { error_db_log("SD2: npc_air_force_bots: wasn't able to spawn creature %u", m_pSpawnAssoc->m_uiSpawnedCreatureEntry); @@ -159,7 +158,7 @@ struct MANGOS_DLL_DECL npc_air_force_botsAI : public ScriptedAI Creature* GetSummonedGuard() { - Creature* pCreature = m_creature->GetMap()->GetCreature(m_uiSpawnedGUID); + Creature* pCreature = m_creature->GetMap()->GetCreature(m_spawnedGuid); if (pCreature && pCreature->isAlive()) return pCreature; @@ -180,11 +179,11 @@ struct MANGOS_DLL_DECL npc_air_force_botsAI : public ScriptedAI if (!pPlayerTarget) return; - Creature* pLastSpawnedGuard = m_uiSpawnedGUID == 0 ? NULL : GetSummonedGuard(); + Creature* pLastSpawnedGuard = m_spawnedGuid.IsEmpty() ? NULL : GetSummonedGuard(); // prevent calling GetCreature at next MoveInLineOfSight call - speedup if (!pLastSpawnedGuard) - m_uiSpawnedGUID = 0; + m_spawnedGuid.Clear(); switch(m_pSpawnAssoc->m_SpawnType) { @@ -479,7 +478,7 @@ struct MANGOS_DLL_DECL npc_doctorAI : public ScriptedAI { npc_doctorAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint64 Playerguid; + ObjectGuid m_playerGuid; uint32 SummonPatient_Timer; uint32 SummonPatientCount; @@ -493,7 +492,7 @@ struct MANGOS_DLL_DECL npc_doctorAI : public ScriptedAI void Reset() { - Playerguid = 0; + m_playerGuid.Clear(); SummonPatient_Timer = 10000; SummonPatientCount = 0; @@ -522,12 +521,12 @@ struct MANGOS_DLL_DECL npc_injured_patientAI : public ScriptedAI { npc_injured_patientAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();} - uint64 Doctorguid; + ObjectGuid m_doctorGuid; Location* Coord; void Reset() { - Doctorguid = 0; + m_doctorGuid.Clear(); Coord = NULL; //no select @@ -562,9 +561,9 @@ struct MANGOS_DLL_DECL npc_injured_patientAI : public ScriptedAI { if ((((Player*)caster)->GetQuestStatus(6624) == QUEST_STATUS_INCOMPLETE) || (((Player*)caster)->GetQuestStatus(6622) == QUEST_STATUS_INCOMPLETE)) { - if (Doctorguid) + if (!m_doctorGuid.IsEmpty()) { - if (Creature* pDoctor = m_creature->GetMap()->GetCreature(Doctorguid)) + if (Creature* pDoctor = m_creature->GetMap()->GetCreature(m_doctorGuid)) { if (npc_doctorAI* pDocAI = dynamic_cast(pDoctor->AI())) pDocAI->PatientSaved(m_creature, (Player*)caster, Coord); @@ -620,9 +619,9 @@ struct MANGOS_DLL_DECL npc_injured_patientAI : public ScriptedAI m_creature->SetDeathState(JUST_DIED); m_creature->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD); - if (Doctorguid) + if (!m_doctorGuid.IsEmpty()) { - if (Creature* pDoctor = m_creature->GetMap()->GetCreature(Doctorguid)) + if (Creature* pDoctor = m_creature->GetMap()->GetCreature(m_doctorGuid)) { if (npc_doctorAI* pDocAI = dynamic_cast(pDoctor->AI())) pDocAI->PatientDied(Coord); @@ -643,7 +642,7 @@ npc_doctor (continue) void npc_doctorAI::BeginEvent(Player* pPlayer) { - Playerguid = pPlayer->GetGUID(); + m_playerGuid = pPlayer->GetObjectGuid(); SummonPatient_Timer = 10000; SummonPatientCount = 0; @@ -668,7 +667,7 @@ void npc_doctorAI::BeginEvent(Player* pPlayer) void npc_doctorAI::PatientDied(Location* Point) { - Player* pPlayer = m_creature->GetMap()->GetPlayer(Playerguid); + Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid); if (pPlayer && ((pPlayer->GetQuestStatus(6624) == QUEST_STATUS_INCOMPLETE) || (pPlayer->GetQuestStatus(6622) == QUEST_STATUS_INCOMPLETE))) { @@ -694,7 +693,7 @@ void npc_doctorAI::PatientDied(Location* Point) void npc_doctorAI::PatientSaved(Creature* soldier, Player* pPlayer, Location* Point) { - if (pPlayer && Playerguid == pPlayer->GetGUID()) + if (pPlayer && m_playerGuid == pPlayer->GetObjectGuid()) { if ((pPlayer->GetQuestStatus(QUEST_TRIAGE_A) == QUEST_STATUS_INCOMPLETE) || (pPlayer->GetQuestStatus(QUEST_TRIAGE_H) == QUEST_STATUS_INCOMPLETE)) { @@ -767,7 +766,7 @@ void npc_doctorAI::UpdateAI(const uint32 diff) if (pPatientAI) { - pPatientAI->Doctorguid = m_creature->GetGUID(); + pPatientAI->m_doctorGuid = m_creature->GetObjectGuid(); if (Point) pPatientAI->Coord = Point; @@ -801,8 +800,6 @@ CreatureAI* GetAI_npc_doctor(Creature* pCreature) ## npc_garments_of_quests ######*/ -//TODO: get text for each NPC - enum { SPELL_LESSER_HEAL_R2 = 2052, @@ -835,39 +832,39 @@ enum struct MANGOS_DLL_DECL npc_garments_of_questsAI : public npc_escortAI { - npc_garments_of_questsAI(Creature* pCreature) : npc_escortAI(pCreature) {Reset();} + npc_garments_of_questsAI(Creature* pCreature) : npc_escortAI(pCreature) { Reset(); } - uint64 caster; + ObjectGuid m_playerGuid; - bool bIsHealed; - bool bCanRun; + bool m_bIsHealed; + bool m_bCanRun; - uint32 RunAwayTimer; + uint32 m_uiRunAwayTimer; void Reset() { - caster = 0; + m_playerGuid.Clear(); - bIsHealed = false; - bCanRun = false; + m_bIsHealed = false; + m_bCanRun = false; - RunAwayTimer = 5000; + m_uiRunAwayTimer = 5000; m_creature->SetStandState(UNIT_STAND_STATE_KNEEL); - //expect database to have RegenHealth=0 + // expect database to have RegenHealth=0 m_creature->SetHealth(int(m_creature->GetMaxHealth()*0.7)); } - void SpellHit(Unit* pCaster, const SpellEntry *Spell) + void SpellHit(Unit* pCaster, const SpellEntry* pSpell) { - if (Spell->Id == SPELL_LESSER_HEAL_R2 || Spell->Id == SPELL_FORTITUDE_R1) + if (pSpell->Id == SPELL_LESSER_HEAL_R2 || pSpell->Id == SPELL_FORTITUDE_R1) { - //not while in combat + // not while in combat if (m_creature->isInCombat()) return; - //nothing to be done now - if (bIsHealed && bCanRun) + // nothing to be done now + if (m_bIsHealed && m_bCanRun) return; if (pCaster->GetTypeId() == TYPEID_PLAYER) @@ -877,125 +874,125 @@ struct MANGOS_DLL_DECL npc_garments_of_questsAI : public npc_escortAI case ENTRY_SHAYA: if (((Player*)pCaster)->GetQuestStatus(QUEST_MOON) == QUEST_STATUS_INCOMPLETE) { - if (bIsHealed && !bCanRun && Spell->Id == SPELL_FORTITUDE_R1) + if (m_bIsHealed && !m_bCanRun && pSpell->Id == SPELL_FORTITUDE_R1) { - DoScriptText(SAY_SHAYA_THANKS,m_creature,pCaster); - bCanRun = true; + DoScriptText(SAY_SHAYA_THANKS, m_creature, pCaster); + m_bCanRun = true; } - else if (!bIsHealed && Spell->Id == SPELL_LESSER_HEAL_R2) + else if (!m_bIsHealed && pSpell->Id == SPELL_LESSER_HEAL_R2) { - caster = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_COMMON_HEALED,m_creature,pCaster); - bIsHealed = true; + DoScriptText(SAY_COMMON_HEALED, m_creature, pCaster); + m_bIsHealed = true; } } break; case ENTRY_ROBERTS: if (((Player*)pCaster)->GetQuestStatus(QUEST_LIGHT_1) == QUEST_STATUS_INCOMPLETE) { - if (bIsHealed && !bCanRun && Spell->Id == SPELL_FORTITUDE_R1) + if (m_bIsHealed && !m_bCanRun && pSpell->Id == SPELL_FORTITUDE_R1) { - DoScriptText(SAY_ROBERTS_THANKS,m_creature,pCaster); - bCanRun = true; + DoScriptText(SAY_ROBERTS_THANKS, m_creature, pCaster); + m_bCanRun = true; } - else if (!bIsHealed && Spell->Id == SPELL_LESSER_HEAL_R2) + else if (!m_bIsHealed && pSpell->Id == SPELL_LESSER_HEAL_R2) { - caster = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_COMMON_HEALED,m_creature,pCaster); - bIsHealed = true; + DoScriptText(SAY_COMMON_HEALED, m_creature, pCaster); + m_bIsHealed = true; } } break; case ENTRY_DOLF: if (((Player*)pCaster)->GetQuestStatus(QUEST_LIGHT_2) == QUEST_STATUS_INCOMPLETE) { - if (bIsHealed && !bCanRun && Spell->Id == SPELL_FORTITUDE_R1) + if (m_bIsHealed && !m_bCanRun && pSpell->Id == SPELL_FORTITUDE_R1) { - DoScriptText(SAY_DOLF_THANKS,m_creature,pCaster); - bCanRun = true; + DoScriptText(SAY_DOLF_THANKS, m_creature, pCaster); + m_bCanRun = true; } - else if (!bIsHealed && Spell->Id == SPELL_LESSER_HEAL_R2) + else if (!m_bIsHealed && pSpell->Id == SPELL_LESSER_HEAL_R2) { - caster = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_COMMON_HEALED,m_creature,pCaster); - bIsHealed = true; + DoScriptText(SAY_COMMON_HEALED, m_creature, pCaster); + m_bIsHealed = true; } } break; case ENTRY_KORJA: if (((Player*)pCaster)->GetQuestStatus(QUEST_SPIRIT) == QUEST_STATUS_INCOMPLETE) { - if (bIsHealed && !bCanRun && Spell->Id == SPELL_FORTITUDE_R1) + if (m_bIsHealed && !m_bCanRun && pSpell->Id == SPELL_FORTITUDE_R1) { - DoScriptText(SAY_KORJA_THANKS,m_creature,pCaster); - bCanRun = true; + DoScriptText(SAY_KORJA_THANKS, m_creature, pCaster); + m_bCanRun = true; } - else if (!bIsHealed && Spell->Id == SPELL_LESSER_HEAL_R2) + else if (!m_bIsHealed && pSpell->Id == SPELL_LESSER_HEAL_R2) { - caster = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_COMMON_HEALED,m_creature,pCaster); - bIsHealed = true; + DoScriptText(SAY_COMMON_HEALED, m_creature, pCaster); + m_bIsHealed = true; } } break; case ENTRY_DG_KEL: if (((Player*)pCaster)->GetQuestStatus(QUEST_DARKNESS) == QUEST_STATUS_INCOMPLETE) { - if (bIsHealed && !bCanRun && Spell->Id == SPELL_FORTITUDE_R1) + if (m_bIsHealed && !m_bCanRun && pSpell->Id == SPELL_FORTITUDE_R1) { - DoScriptText(SAY_DG_KEL_THANKS,m_creature,pCaster); - bCanRun = true; + DoScriptText(SAY_DG_KEL_THANKS, m_creature, pCaster); + m_bCanRun = true; } - else if (!bIsHealed && Spell->Id == SPELL_LESSER_HEAL_R2) + else if (!m_bIsHealed && pSpell->Id == SPELL_LESSER_HEAL_R2) { - caster = pCaster->GetGUID(); + m_playerGuid = pCaster->GetObjectGuid(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); - DoScriptText(SAY_COMMON_HEALED,m_creature,pCaster); - bIsHealed = true; + DoScriptText(SAY_COMMON_HEALED, m_creature, pCaster); + m_bIsHealed = true; } } break; } - //give quest credit, not expect any special quest objectives - if (bCanRun) - ((Player*)pCaster)->TalkedToCreature(m_creature->GetEntry(),m_creature->GetGUID()); + // give quest credit, not expect any special quest objectives + if (m_bCanRun) + ((Player*)pCaster)->TalkedToCreature(m_creature->GetEntry(), m_creature->GetObjectGuid()); } } } - void WaypointReached(uint32 uiPoint) - { - } + void WaypointReached(uint32 uiPointId) {} - void UpdateEscortAI(const uint32 diff) + void UpdateEscortAI(const uint32 uiDiff) { - if (bCanRun && !m_creature->isInCombat()) + if (m_bCanRun && !m_creature->isInCombat()) { - if (RunAwayTimer <= diff) + if (m_uiRunAwayTimer <= uiDiff) { - if (Player* pPlayer = m_creature->GetMap()->GetPlayer(caster)) + if (Player* pPlayer = m_creature->GetMap()->GetPlayer(m_playerGuid)) { switch(m_creature->GetEntry()) { - case ENTRY_SHAYA: DoScriptText(SAY_SHAYA_GOODBYE, m_creature, pPlayer); break; + case ENTRY_SHAYA: DoScriptText(SAY_SHAYA_GOODBYE, m_creature, pPlayer); break; case ENTRY_ROBERTS: DoScriptText(SAY_ROBERTS_GOODBYE, m_creature, pPlayer); break; - case ENTRY_DOLF: DoScriptText(SAY_DOLF_GOODBYE, m_creature, pPlayer); break; - case ENTRY_KORJA: DoScriptText(SAY_KORJA_GOODBYE, m_creature, pPlayer); break; - case ENTRY_DG_KEL: DoScriptText(SAY_DG_KEL_GOODBYE, m_creature, pPlayer); break; + case ENTRY_DOLF: DoScriptText(SAY_DOLF_GOODBYE, m_creature, pPlayer); break; + case ENTRY_KORJA: DoScriptText(SAY_KORJA_GOODBYE, m_creature, pPlayer); break; + case ENTRY_DG_KEL: DoScriptText(SAY_DG_KEL_GOODBYE, m_creature, pPlayer); break; } Start(true); } else - EnterEvadeMode(); //something went wrong + EnterEvadeMode(); // something went wrong - RunAwayTimer = 30000; - }else RunAwayTimer -= diff; + m_uiRunAwayTimer = 30000; + } + else + m_uiRunAwayTimer -= uiDiff; } if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) @@ -1076,7 +1073,7 @@ bool GossipHello_npc_innkeeper(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_WHAT_TO_DO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); } - pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID()); + pPlayer->TalkedToCreature(pCreature->GetEntry(), pCreature->GetObjectGuid()); pPlayer->SendPreparedGossip(pCreature); return true; } @@ -1086,18 +1083,18 @@ bool GossipSelect_npc_innkeeper(Player* pPlayer, Creature* pCreature, uint32 uiS switch(uiAction) { case GOSSIP_ACTION_INFO_DEF+1: - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_WHAT_TO_DO, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_WHAT_TO_DO, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->CLOSE_GOSSIP_MENU(); pCreature->CastSpell(pPlayer, SPELL_TRICK_OR_TREAT, true); break; case GOSSIP_OPTION_VENDOR: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_OPTION_INNKEEPER: pPlayer->CLOSE_GOSSIP_MENU(); - pPlayer->SetBindPoint(pCreature->GetGUID()); + pPlayer->SetBindPoint(pCreature->GetObjectGuid()); break; } @@ -1122,13 +1119,13 @@ enum bool GossipHello_npc_kingdom_of_dalaran_quests(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->HasItemCount(ITEM_KT_SIGNET,1) && (!pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_A) || !pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_H) || !pPlayer->GetQuestRewardStatus(QUEST_MAGICAL_KINGDOM_N))) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TELEPORT_TO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } @@ -1162,7 +1159,7 @@ bool GossipHello_npc_lunaclaw_spirit(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestStatus(QUEST_BODY_HEART_A) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(QUEST_BODY_HEART_H) == QUEST_STATUS_INCOMPLETE) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GRANT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DEFAULT, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_DEFAULT, pCreature->GetObjectGuid()); return true; } @@ -1170,7 +1167,7 @@ bool GossipSelect_npc_lunaclaw_spirit(Player* pPlayer, Creature* pCreature, uint { if (uiAction == GOSSIP_ACTION_INFO_DEF+1) { - pPlayer->SEND_GOSSIP_MENU(TEXT_ID_PROGRESS, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(TEXT_ID_PROGRESS, pCreature->GetObjectGuid()); pPlayer->AreaExploredOrEventHappens((pPlayer->GetTeam() == ALLIANCE) ? QUEST_BODY_HEART_A : QUEST_BODY_HEART_H); } return true; @@ -1183,7 +1180,7 @@ bool GossipSelect_npc_lunaclaw_spirit(Player* pPlayer, Creature* pCreature, uint bool GossipHello_npc_mount_vendor(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); bool canBuy; canBuy = false; @@ -1197,52 +1194,52 @@ bool GossipHello_npc_mount_vendor(Player* pPlayer, Creature* pCreature) case 2357: //Merideth Carlson case 4885: //Gregor MacVince if (pPlayer->GetReputationRank(72) != REP_EXALTED && race != RACE_HUMAN) - pPlayer->SEND_GOSSIP_MENU(5855, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5855, pCreature->GetObjectGuid()); else canBuy = true; break; case 1261: //Veron Amberstill if (pPlayer->GetReputationRank(47) != REP_EXALTED && race != RACE_DWARF) - pPlayer->SEND_GOSSIP_MENU(5856, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5856, pCreature->GetObjectGuid()); else canBuy = true; break; case 3362: //Ogunaro Wolfrunner if (pPlayer->GetReputationRank(76) != REP_EXALTED && race != RACE_ORC) - pPlayer->SEND_GOSSIP_MENU(5841, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5841, pCreature->GetObjectGuid()); else canBuy = true; break; case 3685: //Harb Clawhoof if (pPlayer->GetReputationRank(81) != REP_EXALTED && race != RACE_TAUREN) - pPlayer->SEND_GOSSIP_MENU(5843, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5843, pCreature->GetObjectGuid()); else canBuy = true; break; case 4730: //Lelanai if (pPlayer->GetReputationRank(69) != REP_EXALTED && race != RACE_NIGHTELF) - pPlayer->SEND_GOSSIP_MENU(5844, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5844, pCreature->GetObjectGuid()); else canBuy = true; break; case 4731: //Zachariah Post if (pPlayer->GetReputationRank(68) != REP_EXALTED && race != RACE_UNDEAD) - pPlayer->SEND_GOSSIP_MENU(5840, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5840, pCreature->GetObjectGuid()); else canBuy = true; break; case 7952: //Zjolnir if (pPlayer->GetReputationRank(530) != REP_EXALTED && race != RACE_TROLL) - pPlayer->SEND_GOSSIP_MENU(5842, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5842, pCreature->GetObjectGuid()); else canBuy = true; break; case 7955: //Milli Featherwhistle if (pPlayer->GetReputationRank(54) != REP_EXALTED && race != RACE_GNOME) - pPlayer->SEND_GOSSIP_MENU(5857, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(5857, pCreature->GetObjectGuid()); else canBuy = true; break; case 16264: //Winaestra if (pPlayer->GetReputationRank(911) != REP_EXALTED && race != RACE_BLOODELF) - pPlayer->SEND_GOSSIP_MENU(10305, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10305, pCreature->GetObjectGuid()); else canBuy = true; break; case 17584: //Torallius the Pack Handler if (pPlayer->GetReputationRank(930) != REP_EXALTED && race != RACE_DRAENEI) - pPlayer->SEND_GOSSIP_MENU(10239, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(10239, pCreature->GetObjectGuid()); else canBuy = true; break; } @@ -1251,7 +1248,7 @@ bool GossipHello_npc_mount_vendor(Player* pPlayer, Creature* pCreature) { if (pCreature->isVendor()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } return true; } @@ -1259,7 +1256,7 @@ bool GossipHello_npc_mount_vendor(Player* pPlayer, Creature* pCreature) bool GossipSelect_npc_mount_vendor(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { if (uiAction == GOSSIP_ACTION_TRADE) - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -1274,23 +1271,24 @@ bool GossipHello_npc_rogue_trainer(Player* pPlayer, Creature* pCreature) if (pPlayer->getLevel() >= 24 && !pPlayer->HasItemCount(17126,1) && !pPlayer->GetQuestRewardStatus(6681)) if (pCreature->isQuestGiver()) - { + { pPlayer->PrepareGossipMenu(pCreature,50195); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); pPlayer->SEND_GOSSIP_MENU(5996, pCreature->GetGUID()); return true; - } + } return false; } bool GossipSelect_npc_rogue_trainer(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { - if (uiAction == GOSSIP_ACTION_INFO_DEF) - { - pPlayer->CastSpell(pPlayer,21100,false); - pPlayer->CLOSE_GOSSIP_MENU(); - return true; - } else return false; + if (uiAction == GOSSIP_ACTION_INFO_DEF) + { + pPlayer->CastSpell(pPlayer,21100,false); + pPlayer->CLOSE_GOSSIP_MENU(); + return true; + } + else return false; } /*###### @@ -1310,7 +1308,7 @@ bool GossipSelect_npc_rogue_trainer(Player* pPlayer, Creature* pCreature, uint32 bool GossipHello_npc_sayge(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) - pPlayer->PrepareQuestMenu(pCreature->GetGUID()); + pPlayer->PrepareQuestMenu(pCreature->GetObjectGuid()); if (pPlayer->HasSpellCooldown(SPELL_INT) || pPlayer->HasSpellCooldown(SPELL_ARM) || @@ -1320,11 +1318,11 @@ bool GossipHello_npc_sayge(Player* pPlayer, Creature* pCreature) pPlayer->HasSpellCooldown(SPELL_AGI) || pPlayer->HasSpellCooldown(SPELL_STM) || pPlayer->HasSpellCooldown(SPELL_SPI)) - pPlayer->SEND_GOSSIP_MENU(7393, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7393, pCreature->GetObjectGuid()); else { pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Yes", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - pPlayer->SEND_GOSSIP_MENU(7339, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7339, pCreature->GetObjectGuid()); } return true; @@ -1339,39 +1337,39 @@ void SendAction_npc_sayge(Player* pPlayer, Creature* pCreature, uint32 uiAction) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Turn him over to liege", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Confiscate the corn", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let him go and have the corn", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5); - pPlayer->SEND_GOSSIP_MENU(7340, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7340, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+2: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Execute your friend painfully", GOSSIP_SENDER_MAIN+1, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Execute your friend painlessly", GOSSIP_SENDER_MAIN+2, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let your friend go", GOSSIP_SENDER_MAIN+3, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(7341, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7341, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+3: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Confront the diplomat", GOSSIP_SENDER_MAIN+4, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Show not so quiet defiance", GOSSIP_SENDER_MAIN+5, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Remain quiet", GOSSIP_SENDER_MAIN+2, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(7361, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7361, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+4: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Speak against your brother openly", GOSSIP_SENDER_MAIN+6, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Help your brother in", GOSSIP_SENDER_MAIN+7, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Keep your brother out without letting him know", GOSSIP_SENDER_MAIN+8, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(7362, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7362, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+5: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Take credit, keep gold", GOSSIP_SENDER_MAIN+5, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Take credit, share the gold", GOSSIP_SENDER_MAIN+4, GOSSIP_ACTION_INFO_DEF); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let the knight take credit", GOSSIP_SENDER_MAIN+3, GOSSIP_ACTION_INFO_DEF); - pPlayer->SEND_GOSSIP_MENU(7363, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7363, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF: pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Thanks", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6); - pPlayer->SEND_GOSSIP_MENU(7364, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7364, pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+6: pCreature->CastSpell(pPlayer, SPELL_FORTUNE, false); - pPlayer->SEND_GOSSIP_MENU(7365, pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(7365, pCreature->GetObjectGuid()); break; } } @@ -1539,10 +1537,10 @@ bool GossipHello_npc_tabard_vendor(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_SUMMER_FLAMES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7); } - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); } else - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); return true; } @@ -1552,7 +1550,7 @@ bool GossipSelect_npc_tabard_vendor(Player* pPlayer, Creature* pCreature, uint32 switch(uiAction) { case GOSSIP_ACTION_TRADE: - pPlayer->SEND_VENDORLIST(pCreature->GetGUID()); + pPlayer->SEND_VENDORLIST(pCreature->GetObjectGuid()); break; case GOSSIP_ACTION_INFO_DEF+1: pPlayer->CLOSE_GOSSIP_MENU(); @@ -1653,7 +1651,7 @@ bool GossipHello_npc_locksmith(Player* pPlayer, Creature* pCreature) if (pPlayer->GetQuestRewardStatus(QUEST_CONTAINMENT) && !pPlayer->HasItemCount(ITEM_VIOLET_HOLD_KEY, 1, true)) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_VIOLET_HOLD_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF +6); - pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetObjectGuid()); return true; } diff --git a/sd2_revision_nr.h b/sd2_revision_nr.h index 7ef7e32..a00400e 100644 --- a/sd2_revision_nr.h +++ b/sd2_revision_nr.h @@ -1,4 +1,4 @@ #ifndef __SD2_REVISION_NR_H__ #define __SD2_REVISION_NR_H__ - #define SD2_REVISION_NR "2081" + #define SD2_REVISION_NR "2129" #endif // __SD2_REVISION_NR_H__ diff --git a/sql/Updates/r2057_scriptdev2.sql b/sql/Updates/r2057_scriptdev2.sql index 77d4e45..d3f1645 100644 --- a/sql/Updates/r2057_scriptdev2.sql +++ b/sql/Updates/r2057_scriptdev2.sql @@ -1,4 +1,4 @@ -DELETE FROM script_texts WHERE entry BETWEEN 1329018 AND 1329016; +DELETE FROM script_texts WHERE entry BETWEEN -1329018 AND -1329016; INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES (-1329016,'Today you have unmade what took me years to create! For this you shall all die by my hand!',0,1,0,0,'dathrohan SAY_AGGRO'), (-1329017,'You fools think you can defeat me so easily? Face the true might of the Nathrezim!',0,1,0,0,'dathrohan SAY_TRANSFORM'), diff --git a/sql/Updates/r2092_mangos.sql b/sql/Updates/r2092_mangos.sql new file mode 100644 index 0000000..580d94c --- /dev/null +++ b/sql/Updates/r2092_mangos.sql @@ -0,0 +1 @@ +UPDATE creature_template SET ScriptName='boss_lethon' WHERE entry=14888; diff --git a/sql/Updates/r2092_scriptdev2.sql b/sql/Updates/r2092_scriptdev2.sql new file mode 100644 index 0000000..6d2e9ed --- /dev/null +++ b/sql/Updates/r2092_scriptdev2.sql @@ -0,0 +1,4 @@ +DELETE FROM script_texts where entry IN (-1000666, -1000667); +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1000666,'I can sense the SHADOW on your hearts. There can be no rest for the wicked!',0,1,0,0,'lethon SAY_LETHON_AGGRO'), +(-1000667,'Your wicked souls shall feed my power!',0,1,0,0,'lethon SAY_LETHON_SHADE'); diff --git a/sql/Updates/r2101_mangos.sql b/sql/Updates/r2101_mangos.sql new file mode 100644 index 0000000..216a31a --- /dev/null +++ b/sql/Updates/r2101_mangos.sql @@ -0,0 +1 @@ +UPDATE creature_template SET ScriptName='npc_infused_crystal' WHERE entry=16364; diff --git a/sql/Updates/r2101_scriptdev2.sql b/sql/Updates/r2101_scriptdev2.sql new file mode 100644 index 0000000..2a6848d --- /dev/null +++ b/sql/Updates/r2101_scriptdev2.sql @@ -0,0 +1,3 @@ +DELETE FROM script_texts WHERE entry=-1000668; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1000668,'%s releases the last of its energies into the nearby runestone, successfully reactivating it.',0,2,0,0,'infused crystal SAY_DEFENSE_FINISH'); diff --git a/sql/Updates/r2107_scriptdev2.sql b/sql/Updates/r2107_scriptdev2.sql new file mode 100644 index 0000000..966dc81 --- /dev/null +++ b/sql/Updates/r2107_scriptdev2.sql @@ -0,0 +1,6 @@ +DELETE FROM script_texts WHERE entry BETWEEN -1229003 AND -1229000; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1229000,'%s begins to regain its strength!',0,2,0,0,'pyroguard EMOTE_BEGIN'), +(-1229001,'%s is nearly at full strength!',0,2,0,0,'pyroguard EMOTE_NEAR'), +(-1229002,'%s regains its power and breaks free of its bonds!',0,2,0,0,'pyroguard EMOTE_FULL'), +(-1229003,'Ha! Ha! Ha! Thank you for freeing me, fools. Now let me repay you by charring the flesh from your bones.',0,1,0,0,'pyroguard SAY_FREE'); diff --git a/sql/Updates/r2112_mangos.sql b/sql/Updates/r2112_mangos.sql new file mode 100644 index 0000000..fb10674 --- /dev/null +++ b/sql/Updates/r2112_mangos.sql @@ -0,0 +1 @@ +UPDATE creature_template SET ScriptName='npc_belnistrasz' WHERE entry=8516; diff --git a/sql/Updates/r2112_scriptdev2.sql b/sql/Updates/r2112_scriptdev2.sql new file mode 100644 index 0000000..11de618 --- /dev/null +++ b/sql/Updates/r2112_scriptdev2.sql @@ -0,0 +1,38 @@ +DELETE FROM script_texts WHERE entry BETWEEN -1129012 AND -1129005; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1129005,'All right, stay close. These fiends will jump right out of the shadows at you if you let your guard down.',0,0,0,0,'belnistrasz SAY_READY'), +(-1129006,'Okay, here we go. It\'s going to take about five minutes to shut this thing down through the ritual. Once I start, keep the vermin off of me or it will be the end of us all!',0,0,0,0,'belnistrasz SAY_START_RIT'), +(-1129007,'You\'ll rue the day you crossed me, $N',0,0,0,0,'belnistrasz SAY_AGGRO_1'), +(-1129008,'Incoming $N - look sharp, friends!',0,0,0,0,'belnistrasz SAY_AGGRO_2'), +(-1129009,'Three minutes left -- I can feel the energy starting to build! Keep up the solid defense!',0,1,0,0,'belnistrasz SAY_3_MIN'), +(-1129010,'Just two minutes to go! We\'re half way there, but don\'t let your guard down!',0,1,0,0,'belnistrasz SAY_2_MIN'), +(-1129011,'One more minute! Hold on now, the ritual is about to take hold!',0,1,0,0,'belnistrasz SAY_1_MIN'), +(-1129012,'That\'s it -- we made it! The ritual is set in motion, and idol fires are about to go out for good! You truly are the heroes I thought you would be!',0,1,0,4,'belnistrasz SAY_FINISH'); + +DELETE FROM script_waypoint WHERE entry = 8516; +INSERT INTO script_waypoint VALUES +(8516, 1,2603.18, 725.259, 54.6927, 0, ''), +(8516, 2,2587.13, 734.392, 55.231, 0, ''), +(8516, 3,2570.69, 753.572, 54.5855, 0, ''), +(8516, 4,2558.51, 747.66, 54.4482, 0, ''), +(8516, 5,2544.23, 772.924, 47.9255, 0, ''), +(8516, 6,2530.08, 797.475, 45.97, 0, ''), +(8516, 7,2521.83, 799.127, 44.3061, 0, ''), +(8516, 8,2502.61, 789.222, 39.5074, 0, ''), +(8516, 9,2495.25, 789.406, 39.499, 0, ''), +(8516, 10,2488.07, 802.455, 42.9834, 0, ''), +(8516, 11,2486.64, 826.649, 43.6363, 0, ''), +(8516, 12,2492.64, 835.166, 45.1427, 0, ''), +(8516, 13,2505.02, 847.564, 47.6487, 0, ''), +(8516, 14,2538.96, 877.362, 47.6781, 0, ''), +(8516, 15,2546.07, 885.672, 47.6789, 0, ''), +(8516, 16,2548.02, 897.584, 47.7277, 0, ''), +(8516, 17,2544.29, 909.116, 46.2506, 0, ''), +(8516, 18,2523.60, 920.306, 45.8717, 0, ''), +(8516, 19,2522.69, 933.546, 47.5769, 0, ''), +(8516, 20,2531.63, 959.893, 49.4111, 0, ''), +(8516, 21,2540.23, 973.338, 50.1241, 0, ''), +(8516, 22,2547.21, 977.489, 49.9759, 0, ''), +(8516, 23,2558.75, 969.243, 50.7353, 0, ''), +(8516, 24,2575.60, 950.138, 52.8460, 0, ''), +(8516, 25,2575.60, 950.138, 52.8460, 0, ''); diff --git a/sql/Updates/r2113_scriptdev2.sql b/sql/Updates/r2113_scriptdev2.sql new file mode 100644 index 0000000..7d50eaf --- /dev/null +++ b/sql/Updates/r2113_scriptdev2.sql @@ -0,0 +1,12 @@ +UPDATE script_texts SET content_default='BURN! You wretches! BURN!' WHERE entry = -1469009; +UPDATE script_texts SET content_default='This cannot be! I am the master here! You mortals are nothing to my kind! Do you hear me? Nothing!' WHERE entry = -1469012; +UPDATE script_texts SET content_default='Ah...the heroes. You are persistent, aren\'t you? Your ally here attempted to match his power against mine - and paid the price. Now he shall serve me...by slaughtering you.' WHERE entry = -1469006; +UPDATE script_texts SET content_default='Too late, friends! Nefarius\' corruption has taken hold...I cannot...control myself.' WHERE entry = -1469026; +UPDATE script_texts SET content_default='I beg you, mortals - FLEE! Flee before I lose all sense of control! The black fire rages within my heart! I MUST- release it!' WHERE entry = -1469027; +UPDATE script_texts SET content_default='FLAME! DEATH! DESTRUCTION! Cower, mortals before the wrath of Lord...NO - I MUST fight this! Alexstrasza help me, I MUST fight it!' WHERE entry = -1469028; +UPDATE script_texts SET content_default='Nefarius\' hate has made me stronger than ever before! You should have fled while you could, mortals! The fury of Blackrock courses through my veins!' WHERE entry = -1469029; +UPDATE script_texts SET content_default='Forgive me, $N! Your death only adds to my failure!' WHERE entry = -1469030; + +DELETE FROM script_texts WHERE entry=-1469032; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1469032,'Get up, little red wyrm...and destroy them!',0,1,0,0,'victor_nefarius SAY_NEFARIUS_CORRUPT_2'); diff --git a/sql/Updates/r2114_scriptdev2.sql b/sql/Updates/r2114_scriptdev2.sql new file mode 100644 index 0000000..a427764 --- /dev/null +++ b/sql/Updates/r2114_scriptdev2.sql @@ -0,0 +1,7 @@ +UPDATE script_texts SET type=1, emote=1 WHERE entry = -1469004; +UPDATE script_texts SET emote=22 WHERE entry = -1469005; +UPDATE script_texts SET emote=23 WHERE entry = -1469006; +UPDATE script_texts SET emote=1 WHERE entry = -1469026; +UPDATE script_texts SET emote=1 WHERE entry = -1469027; +UPDATE script_texts SET emote=1 WHERE entry = -1469028; +UPDATE script_texts SET emote=1 WHERE entry = -1469032; diff --git a/sql/Updates/r2116_scriptdev2.sql b/sql/Updates/r2116_scriptdev2.sql new file mode 100644 index 0000000..0b0ee9a --- /dev/null +++ b/sql/Updates/r2116_scriptdev2.sql @@ -0,0 +1,12 @@ +UPDATE script_texts SET content_default='Run! They are coming!', type=1, comment='vaelastrasz blackwing tech SAY_INTRO_TECH' WHERE entry = -1469002; +UPDATE script_texts SET content_default='Fools! These eggs are more precious than you know!' WHERE entry = -1469023; +UPDATE script_texts SET content_default='No - not another one! I\'ll have your heads for this atrocity!' WHERE entry = -1469024; + +DELETE FROM script_texts WHERE entry=-1469033; +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1469033,'%s flee as the controlling power of the orb is drained.',0,2,0,0,'razorgore EMOTE_TROOPS_FLEE'); + +DELETE FROM gossip_texts WHERE entry IN (-3469003,-3469004); +INSERT INTO gossip_texts (entry,content_default,comment) VALUES +(-3469003,'I cannot, Vaelastrasz! Surely something can be done to heal you!','vaelastrasz GOSSIP_ITEM_VAEL_1'), +(-3469004,'Vaelastrasz, no!!!','vaelastrasz GOSSIP_ITEM_VAEL_2'); diff --git a/sql/mangos_scriptname_full.sql b/sql/mangos_scriptname_full.sql index 9a19baa..47d8fe5 100644 --- a/sql/mangos_scriptname_full.sql +++ b/sql/mangos_scriptname_full.sql @@ -59,6 +59,7 @@ UPDATE creature_template SET ScriptName='boss_shade_of_taerar' WHERE entry=15302 UPDATE creature_template SET ScriptName='boss_kruul' WHERE entry=18338; UPDATE creature_template SET ScriptName='boss_azuregos' WHERE entry=6109; UPDATE creature_template SET ScriptName='mob_dementeddruids' WHERE entry=15260; +UPDATE creature_template SET ScriptName='boss_lethon' WHERE entry=14888; /* GO */ UPDATE gameobject_template SET ScriptName='go_cat_figurine' WHERE entry=13873; @@ -553,6 +554,7 @@ UPDATE creature_template SET ScriptName='npc_kelerun_bloodmourn' WHERE entry=178 UPDATE gameobject_template SET ScriptName='go_harbinger_second_trial' WHERE entry=182052; UPDATE creature_template SET ScriptName='npc_prospector_anvilward' WHERE entry=15420; UPDATE creature_template SET ScriptName='npc_apprentice_mirveda' WHERE entry=15402; +UPDATE creature_template SET ScriptName='npc_infused_crystal' WHERE entry=16364; /* FELWOOD */ DELETE FROM scripted_event_id WHERE id=8328; @@ -881,6 +883,7 @@ UPDATE creature_template SET ScriptName='npc_thrall_warchief' WHERE entry=4949; /* RAZORFEN DOWNS */ UPDATE creature_template SET ScriptName='boss_amnennar_the_coldbringer' WHERE entry=7358; UPDATE creature_template SET ScriptName='npc_henry_stern' WHERE entry=8696; +UPDATE creature_template SET ScriptName='npc_belnistrasz' WHERE entry=8516; /* RAZORFEN KRAUL */ UPDATE instance_template SET ScriptName='instance_razorfen_kraul' WHERE map=47; diff --git a/sql/scriptdev2_script_full.sql b/sql/scriptdev2_script_full.sql index 1c2e3b2..cdb49fa 100644 --- a/sql/scriptdev2_script_full.sql +++ b/sql/scriptdev2_script_full.sql @@ -714,7 +714,12 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen (-1000663,'We made it! Thank you for getting me out of that hell hole. Tell Hemet to expect me!',0,0,0,4,'helice SAY_HELICE_COMPLETE'), (-1000664,'The Destructive Ward gains in power.',0,5,0,0,'destructive ward SAY_WARD_POWERUP'), -(-1000665,'The Destructive Ward is fully charged!',0,5,0,0,'destructive ward SAY_WARD_CHARGED'); +(-1000665,'The Destructive Ward is fully charged!',0,5,0,0,'destructive ward SAY_WARD_CHARGED'), + +(-1000666,'I can sense the SHADOW on your hearts. There can be no rest for the wicked!',0,1,0,0,'lethon SAY_LETHON_AGGRO'), +(-1000667,'Your wicked souls shall feed my power!',0,1,0,0,'lethon SAY_LETHON_SHADE'), + +(-1000668,'%s releases the last of its energies into the nearby runestone, successfully reactivating it.',0,2,0,0,'infused crystal SAY_DEFENSE_FINISH'); -- -1 033 000 SHADOWFANG KEEP INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES @@ -852,7 +857,16 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen (-1129001,'To me, my servants!',5828,1,0,0,'amnennar SAY_SUMMON60'), (-1129002,'Come, spirits, attend your master!',5829,1,0,0,'amnennar SAY_SUMMON30'), (-1129003,'I am the hand of the Lich King!',5827,1,0,0,'amnennar SAY_HP'), -(-1129004,'Too...easy!',5826,1,0,0,'amnennar SAY_KILL'); +(-1129004,'Too...easy!',5826,1,0,0,'amnennar SAY_KILL'), + +(-1129005,'All right, stay close. These fiends will jump right out of the shadows at you if you let your guard down.',0,0,0,0,'belnistrasz SAY_READY'), +(-1129006,'Okay, here we go. It\'s going to take about five minutes to shut this thing down through the ritual. Once I start, keep the vermin off of me or it will be the end of us all!',0,0,0,0,'belnistrasz SAY_START_RIT'), +(-1129007,'You\'ll rue the day you crossed me, $N',0,0,0,0,'belnistrasz SAY_AGGRO_1'), +(-1129008,'Incoming $N - look sharp, friends!',0,0,0,0,'belnistrasz SAY_AGGRO_2'), +(-1129009,'Three minutes left -- I can feel the energy starting to build! Keep up the solid defense!',0,1,0,0,'belnistrasz SAY_3_MIN'), +(-1129010,'Just two minutes to go! We\'re half way there, but don\'t let your guard down!',0,1,0,0,'belnistrasz SAY_2_MIN'), +(-1129011,'One more minute! Hold on now, the ritual is about to take hold!',0,1,0,0,'belnistrasz SAY_1_MIN'), +(-1129012,'That\'s it -- we made it! The ritual is set in motion, and idol fires are about to go out for good! You truly are the heroes I thought you would be!',0,1,0,4,'belnistrasz SAY_FINISH'); -- -1 189 000 SCARLET MONASTERY INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES @@ -904,6 +918,11 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen -- -1 209 000 ZUL'FARRAK -- -1 229 000 BLACKROCK SPIRE +INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES +(-1229000,'%s begins to regain its strength!',0,2,0,0,'pyroguard EMOTE_BEGIN'), +(-1229001,'%s is nearly at full strength!',0,2,0,0,'pyroguard EMOTE_NEAR'), +(-1229002,'%s regains its power and breaks free of its bonds!',0,2,0,0,'pyroguard EMOTE_FULL'), +(-1229003,'Ha! Ha! Ha! Thank you for freeing me, fools. Now let me repay you by charring the flesh from your bones.',0,1,0,0,'pyroguard SAY_FREE'); -- -1 230 000 BLACKROCK DEPTHS INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES @@ -1076,19 +1095,19 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen (-1469000,'None of your kind should be here! You\'ve doomed only yourselves!',8286,1,0,0,'broodlord SAY_AGGRO'), (-1469001,'Clever Mortals but I am not so easily lured away from my sanctum!',8287,1,0,0,'broodlord SAY_LEASH'), -(-1469002,'REUSE ME',0,0,0,0,'REUSE ME'), +(-1469002,'Run! They are coming!',0,1,0,0,'vaelastrasz blackwing tech SAY_INTRO_TECH'), (-1469003,'%s flinches as its skin shimmers.',0,2,0,0,'chromaggus EMOTE_SHIMMER'), -(-1469004,'In this world where time is your enemy, it is my greatest ally. This grand game of life that you think you play in fact plays you. To that I say...',0,0,0,0,'victor_nefarius SAY_GAMESBEGIN_1'), -(-1469005,'Let the games begin!',8280,1,0,0,'victor_nefarius SAY_GAMESBEGIN_2'), -(-1469006,'Ah, the heroes. You are persistent, aren\'t you. Your allied attempted to match his power against mine, and had to pay the price. Now he shall serve me, by slaughtering you. Get up little red wyrm and destroy them!',8279,1,0,0,'victor_nefarius SAY_NEFARIUS_CORRUPT'), +(-1469004,'In this world where time is your enemy, it is my greatest ally. This grand game of life that you think you play in fact plays you. To that I say...',0,1,0,1,'victor_nefarius SAY_GAMESBEGIN_1'), +(-1469005,'Let the games begin!',8280,1,0,22,'victor_nefarius SAY_GAMESBEGIN_2'), +(-1469006,'Ah...the heroes. You are persistent, aren\'t you? Your ally here attempted to match his power against mine - and paid the price. Now he shall serve me...by slaughtering you.',8279,1,0,23,'victor_nefarius SAY_NEFARIUS_CORRUPT'), (-1469007,'Well done, my minions. The mortals\' courage begins to wane! Now, let\'s see how they contend with the true Lord of Blackrock Spire!',8288,1,0,0,'nefarian SAY_AGGRO'), (-1469008,'Enough! Now you vermin shall feel the force of my birthright, the fury of the earth itself.',8289,1,0,0,'nefarian SAY_XHEALTH'), -(-1469009,'Burn, you wretches! Burn!',8290,1,0,0,'nefarian SAY_SHADOWFLAME'), +(-1469009,'BURN! You wretches! BURN!',8290,1,0,0,'nefarian SAY_SHADOWFLAME'), (-1469010,'Impossible! Rise my minions! Serve your master once more!',8291,1,0,0,'nefarian SAY_RAISE_SKELETONS'), (-1469011,'Worthless $N! Your friends will join you soon enough!',8293,1,0,0,'nefarian SAY_SLAY'), -(-1469012,'This cannot be! I am the Master here! You mortals are nothing to my kind! DO YOU HEAR? NOTHING!',8292,1,0,0,'nefarian SAY_DEATH'), +(-1469012,'This cannot be! I am the master here! You mortals are nothing to my kind! Do you hear me? Nothing!',8292,1,0,0,'nefarian SAY_DEATH'), (-1469013,'Mages too? You should be more careful when you play with magic...',0,1,0,0,'nefarian SAY_MAGE'), (-1469014,'Warriors, I know you can hit harder than that! Let\'s see it!',0,1,0,0,'nefarian SAY_WARRIOR'), (-1469015,'Druids and your silly shapeshifting. Let\'s see it in action!',0,1,0,0,'nefarian SAY_DRUID'), @@ -1100,17 +1119,21 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen (-1469021,'Rogues? Stop hiding and face me!',0,1,0,0,'nefarian SAY_ROGUE'), (-1469022,'You\'ll pay for forcing me to do this.',8275,1,0,0,'razorgore SAY_EGGS_BROKEN1'), -(-1469023,'Fools! These eggs are more precious than you know.',8276,1,0,0,'razorgore SAY_EGGS_BROKEN2'), -(-1469024,'No! Not another one! I\'ll have your heads for this atrocity.',8277,1,0,0,'razorgore SAY_EGGS_BROKEN3'), +(-1469023,'Fools! These eggs are more precious than you know!',8276,1,0,0,'razorgore SAY_EGGS_BROKEN2'), +(-1469024,'No - not another one! I\'ll have your heads for this atrocity!',8277,1,0,0,'razorgore SAY_EGGS_BROKEN3'), (-1469025,'If I fall into the abyss I\'ll take all of you mortals with me...',8278,1,0,0,'razorgore SAY_DEATH'), -(-1469026,'Too late...friends. Nefarius\' corruption has taken hold. I cannot...control myself.',8281,1,0,0,'vaelastrasz SAY_LINE1'), -(-1469027,'I beg you Mortals, flee! Flee before I lose all control. The Black Fire rages within my heart. I must release it!',8282,1,0,0,'vaelastrasz SAY_LINE2'), -(-1469028,'FLAME! DEATH! DESTRUCTION! COWER MORTALS BEFORE THE WRATH OF LORD....NO! I MUST FIGHT THIS!',8283,1,0,0,'vaelastrasz SAY_LINE3'), -(-1469029,'Nefarius\' hate has made me stronger than ever before. You should have fled, while you could, mortals! The fury of Blackrock courses through my veins!',8285,1,0,0,'vaelastrasz SAY_HALFLIFE'), -(-1469030,'Forgive me $N, your death only adds to my failure.',8284,1,0,0,'vaelastrasz SAY_KILLTARGET'), +(-1469026,'Too late, friends! Nefarius\' corruption has taken hold...I cannot...control myself.',8281,1,0,1,'vaelastrasz SAY_LINE1'), +(-1469027,'I beg you, mortals - FLEE! Flee before I lose all sense of control! The black fire rages within my heart! I MUST- release it!',8282,1,0,1,'vaelastrasz SAY_LINE2'), +(-1469028,'FLAME! DEATH! DESTRUCTION! Cower, mortals before the wrath of Lord...NO - I MUST fight this! Alexstrasza help me, I MUST fight it!',8283,1,0,1,'vaelastrasz SAY_LINE3'), +(-1469029,'Nefarius\' hate has made me stronger than ever before! You should have fled while you could, mortals! The fury of Blackrock courses through my veins!',8285,1,0,0,'vaelastrasz SAY_HALFLIFE'), +(-1469030,'Forgive me, $N! Your death only adds to my failure!',8284,1,0,0,'vaelastrasz SAY_KILLTARGET'), + +(-1469031,'Death Knights, get over here!',0,1,0,0,'nefarian SAY_DEATH_KNIGHT'), -(-1469031,'Death Knights, get over here!',0,1,0,0,'nefarian SAY_DEATH_KNIGHT'); +(-1469032,'Get up, little red wyrm...and destroy them!',0,1,0,1,'victor_nefarius SAY_NEFARIUS_CORRUPT_2'), + +(-1469033,'%s flee as the controlling power of the orb is drained.',0,2,0,0,'razorgore EMOTE_TROOPS_FLEE'); -- -1 509 000 RUINS OF AHN'QIRAJ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,comment) VALUES @@ -3513,7 +3536,10 @@ INSERT INTO gossip_texts (entry,content_default,comment) VALUES INSERT INTO gossip_texts (entry,content_default,comment) VALUES (-3469000,'I\'ve made no mistakes.','victor_nefarius GOSSIP_ITEM_NEFARIUS_1'), (-3469001,'You have lost your mind, Nefarius. You speak in riddles.','victor_nefarius GOSSIP_ITEM_NEFARIUS_2'), -(-3469002,'Please do.','victor_nefarius GOSSIP_ITEM_NEFARIUS_3'); +(-3469002,'Please do.','victor_nefarius GOSSIP_ITEM_NEFARIUS_3'), + +(-3469003,'I cannot, Vaelastrasz! Surely something can be done to heal you!','vaelastrasz GOSSIP_ITEM_VAEL_1'), +(-3469004,'Vaelastrasz, no!!!','vaelastrasz GOSSIP_ITEM_VAEL_2'); -- -3 560 000 ESCAPE FROM DURNHOLDE (OLD HILLSBRAD) INSERT INTO gossip_texts (entry,content_default,comment) VALUES @@ -5620,4 +5646,32 @@ INSERT INTO script_waypoint VALUES (4508, 45, 1948.35, 1571.35, 80.96, 30000, 'SAY_WILLIX_END'), (4508, 46, 1947.02, 1566.42, 81.80, 30000, ''); +DELETE FROM script_waypoint WHERE entry = 8516; +INSERT INTO script_waypoint VALUES +(8516, 1,2603.18, 725.259, 54.6927, 0, ''), +(8516, 2,2587.13, 734.392, 55.231, 0, ''), +(8516, 3,2570.69, 753.572, 54.5855, 0, ''), +(8516, 4,2558.51, 747.66, 54.4482, 0, ''), +(8516, 5,2544.23, 772.924, 47.9255, 0, ''), +(8516, 6,2530.08, 797.475, 45.97, 0, ''), +(8516, 7,2521.83, 799.127, 44.3061, 0, ''), +(8516, 8,2502.61, 789.222, 39.5074, 0, ''), +(8516, 9,2495.25, 789.406, 39.499, 0, ''), +(8516, 10,2488.07, 802.455, 42.9834, 0, ''), +(8516, 11,2486.64, 826.649, 43.6363, 0, ''), +(8516, 12,2492.64, 835.166, 45.1427, 0, ''), +(8516, 13,2505.02, 847.564, 47.6487, 0, ''), +(8516, 14,2538.96, 877.362, 47.6781, 0, ''), +(8516, 15,2546.07, 885.672, 47.6789, 0, ''), +(8516, 16,2548.02, 897.584, 47.7277, 0, ''), +(8516, 17,2544.29, 909.116, 46.2506, 0, ''), +(8516, 18,2523.60, 920.306, 45.8717, 0, ''), +(8516, 19,2522.69, 933.546, 47.5769, 0, ''), +(8516, 20,2531.63, 959.893, 49.4111, 0, ''), +(8516, 21,2540.23, 973.338, 50.1241, 0, ''), +(8516, 22,2547.21, 977.489, 49.9759, 0, ''), +(8516, 23,2558.75, 969.243, 50.7353, 0, ''), +(8516, 24,2575.60, 950.138, 52.8460, 0, ''), +(8516, 25,2575.60, 950.138, 52.8460, 0, ''); + -- EOF diff --git a/system/ScriptLoader.cpp b/system/ScriptLoader.cpp index ccb0572..f6a5dc2 100644 --- a/system/ScriptLoader.cpp +++ b/system/ScriptLoader.cpp @@ -215,6 +215,8 @@ extern void AddSC_boss_epoch_hunter(); extern void AddSC_boss_lieutenant_drake(); extern void AddSC_instance_old_hillsbrad(); extern void AddSC_old_hillsbrad(); +extern void AddSC_dire_maul(); // dire_maul +extern void AddSC_instance_dire_maul(); extern void AddSC_boss_celebras_the_cursed(); //maraudon extern void AddSC_boss_landslide(); extern void AddSC_boss_noxxion(); @@ -243,6 +245,7 @@ extern void AddSC_instance_wailing_caverns(); // wailing_caverns extern void AddSC_wailing_caverns(); extern void AddSC_boss_zumrah(); // zulfarrak extern void AddSC_instance_zulfarrak(); +extern void AddSC_zulfarrak(); // culling of stratholme extern void AddSC_boss_lord_epoch(); @@ -512,10 +515,10 @@ extern void AddSC_instance_arcatraz(); extern void AddSC_boss_high_botanist_freywinn(); //TK, botanica extern void AddSC_boss_laj(); extern void AddSC_boss_warp_splinter(); -extern void AddSC_boss_kaelthas(); //TK, the_eye -extern void AddSC_boss_void_reaver(); extern void AddSC_boss_alar(); // TK, the_eye extern void AddSC_boss_high_astromancer_solarian(); +extern void AddSC_boss_kaelthas(); +extern void AddSC_boss_void_reaver(); extern void AddSC_instance_the_eye(); extern void AddSC_the_eye(); extern void AddSC_boss_gatewatcher_iron_hand(); //TK, the_mechanar @@ -747,6 +750,8 @@ void AddScripts() AddSC_boss_epoch_hunter(); AddSC_boss_lieutenant_drake(); AddSC_instance_old_hillsbrad(); + AddSC_dire_maul(); // dire_maul + AddSC_instance_dire_maul(); AddSC_old_hillsbrad(); AddSC_boss_celebras_the_cursed(); //maraudon AddSC_boss_landslide(); @@ -775,6 +780,7 @@ void AddScripts() AddSC_instance_wailing_caverns(); // wailing_caverns AddSC_wailing_caverns(); AddSC_boss_zumrah(); // zulfarrak + AddSC_zulfarrak(); AddSC_instance_zulfarrak(); AddSC_ashenvale(); @@ -1033,10 +1039,10 @@ void AddScripts() AddSC_boss_high_botanist_freywinn(); //TK, botanica AddSC_boss_laj(); AddSC_boss_warp_splinter(); - AddSC_boss_kaelthas(); //TK, the_eye - AddSC_boss_void_reaver(); AddSC_boss_alar(); // TK, the_eye AddSC_boss_high_astromancer_solarian(); + AddSC_boss_kaelthas(); + AddSC_boss_void_reaver(); AddSC_instance_the_eye(); AddSC_the_eye(); AddSC_boss_gatewatcher_iron_hand(); //TK, the_mechanar