From 726e686f08e44d056fa561c2244bb2a8083e75b2 Mon Sep 17 00:00:00 2001 From: megamage Date: Tue, 16 Jun 2009 11:45:33 -0500 Subject: *Cleanup of scripts. --HG-- branch : trunk --- src/bindings/scripts/include/sc_creature.cpp | 2 +- src/bindings/scripts/include/sc_creature.h | 25 ++++++++++------------ .../mana_tombs/boss_nexusprince_shaffar.cpp | 2 -- .../sethekk_halls/boss_tailonking_ikiss.cpp | 2 +- .../shadow_labyrinth/boss_ambassador_hellmaw.cpp | 2 +- .../boss_blackheart_the_inciter.cpp | 2 +- .../shadow_labyrinth/boss_grandmaster_vorpil.cpp | 2 +- .../zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp | 4 ++-- .../scripts/zone/azuremyst_isle/azuremyst_isle.cpp | 4 +--- .../scripts/zone/black_temple/boss_bloodboil.cpp | 2 +- .../scripts/zone/black_temple/boss_illidan.cpp | 6 +++--- .../zone/black_temple/boss_mother_shahraz.cpp | 2 +- .../zone/black_temple/boss_reliquary_of_souls.cpp | 2 +- .../zone/black_temple/boss_shade_of_akama.cpp | 4 ++-- .../scripts/zone/black_temple/boss_supremus.cpp | 2 +- .../zone/black_temple/boss_teron_gorefiend.cpp | 2 +- .../zone/black_temple/boss_warlord_najentus.cpp | 2 +- .../scripts/zone/black_temple/illidari_council.cpp | 4 ++-- .../zone/blackrock_depths/blackrock_depths.cpp | 6 +++--- .../caverns_of_time/dark_portal/boss_aeonus.cpp | 2 +- .../dark_portal/boss_chrono_lord_deja.cpp | 2 +- .../caverns_of_time/dark_portal/boss_temporus.cpp | 2 +- .../caverns_of_time/dark_portal/dark_portal.cpp | 4 ++-- .../zone/caverns_of_time/hyjal/boss_anetheron.cpp | 4 ++-- .../zone/caverns_of_time/hyjal/boss_archimonde.cpp | 4 ++-- .../zone/caverns_of_time/hyjal/boss_azgalor.cpp | 4 ++-- .../zone/caverns_of_time/hyjal/boss_kazrogal.cpp | 2 +- .../hyjal/boss_rage_winterchill.cpp | 2 +- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 2 +- .../zone/caverns_of_time/hyjal/hyjal_trash.cpp | 20 ++++++++--------- .../old_hillsbrad/boss_captain_skarloc.cpp | 2 +- .../old_hillsbrad/boss_epoch_hunter.cpp | 2 +- .../old_hillsbrad/old_hillsbrad.cpp | 4 ++-- .../serpent_shrine/boss_fathomlord_karathress.cpp | 8 +++---- .../serpent_shrine/boss_hydross_the_unstable.cpp | 2 +- .../serpent_shrine/boss_lady_vashj.cpp | 10 ++++----- .../serpent_shrine/boss_leotheras_the_blind.cpp | 4 ++-- .../serpent_shrine/boss_lurker_below.cpp | 2 +- .../serpent_shrine/boss_morogrim_tidewalker.cpp | 2 +- .../steam_vault/boss_hydromancer_thespia.cpp | 2 +- .../steam_vault/boss_mekgineer_steamrigger.cpp | 4 ++-- .../steam_vault/boss_warlord_kalithresh.cpp | 4 ++-- .../eastern_plaguelands/the_scarlet_enclave.cpp | 2 +- .../scripts/zone/gruuls_lair/boss_gruul.cpp | 2 +- .../zone/gruuls_lair/boss_high_king_maulgar.cpp | 10 ++++----- .../blood_furnace/boss_broggok.cpp | 2 +- .../blood_furnace/boss_kelidan_the_breaker.cpp | 4 ++-- .../blood_furnace/boss_the_maker.cpp | 2 +- .../shattered_halls/boss_nethekurse.cpp | 5 ++--- .../shattered_halls/boss_warbringer_omrogg.cpp | 2 +- .../boss_warchief_kargath_bladefist.cpp | 2 +- .../zone/isle_of_queldanas/isle_of_queldanas.cpp | 2 +- .../scripts/scripts/zone/karazhan/boss_moroes.cpp | 4 ++-- .../scripts/zone/karazhan/boss_nightbane.cpp | 2 +- .../zone/karazhan/boss_prince_malchezaar.cpp | 2 +- .../scripts/zone/karazhan/boss_shade_of_aran.cpp | 2 +- .../zone/karazhan/boss_terestian_illhoof.cpp | 4 ++-- .../scripts/scripts/zone/karazhan/bosses_opera.cpp | 16 +++++++------- .../scripts/scripts/zone/karazhan/karazhan.cpp | 4 ++-- .../magisters_terrace/boss_felblood_kaelthas.cpp | 4 ++-- .../magisters_terrace/boss_priestess_delrissa.cpp | 4 ++-- .../magisters_terrace/boss_selin_fireheart.cpp | 2 +- .../zone/magisters_terrace/boss_vexallus.cpp | 2 +- .../scripts/zone/molten_core/boss_golemagg.cpp | 4 ++-- .../zone/molten_core/boss_majordomo_executus.cpp | 2 +- .../zone/molten_core/boss_sulfuron_harbinger.cpp | 4 ++-- .../scripts/scripts/zone/mulgore/mulgore.cpp | 6 ++---- .../scripts/scripts/zone/naxxramas/boss_gothik.cpp | 2 +- .../scripts/zone/nexus/nexus/boss_anomalus.cpp | 2 +- .../scripts/zone/nexus/nexus/boss_keristrasza.cpp | 2 +- .../zone/nexus/nexus/boss_magus_telestra.cpp | 2 +- .../scripts/zone/nexus/nexus/boss_ormorok.cpp | 2 +- .../scripts/scripts/zone/orgrimmar/orgrimmar.cpp | 2 +- .../scripts/zone/razorfen_kraul/razorfen_kraul.cpp | 6 +----- .../scarlet_monastery/boss_headless_horseman.cpp | 2 +- .../zone/shadowfang_keep/shadowfang_keep.cpp | 2 +- .../zone/shadowmoon_valley/shadowmoon_valley.cpp | 2 +- .../zone/stratholme/boss_order_of_silver_hand.cpp | 2 +- .../zone/sunwell_plateau/boss_brutallus.cpp | 2 +- .../zone/sunwell_plateau/boss_eredar_twins.cpp | 4 ++-- .../scripts/zone/sunwell_plateau/boss_felmyst.cpp | 2 +- .../scripts/zone/sunwell_plateau/boss_kalecgos.cpp | 6 +++--- .../zone/sunwell_plateau/boss_kiljaeden.cpp | 10 ++++----- .../scripts/zone/sunwell_plateau/boss_muru.cpp | 12 +++++------ .../zone/tempest_keep/arcatraz/arcatraz.cpp | 4 ++-- .../arcatraz/boss_harbinger_skyriss.cpp | 4 ++-- .../zone/tempest_keep/the_eye/boss_alar.cpp | 2 +- .../zone/tempest_keep/the_eye/boss_astromancer.cpp | 4 ++-- .../zone/tempest_keep/the_eye/boss_kaelthas.cpp | 6 +++--- .../zone/tempest_keep/the_eye/boss_void_reaver.cpp | 2 +- .../the_mechanar/boss_gatewatcher_ironhand.cpp | 2 +- .../the_mechanar/boss_nethermancer_sepethrea.cpp | 4 ++-- .../zone/temple_of_ahnqiraj/boss_bug_trio.cpp | 6 +++--- .../zone/temple_of_ahnqiraj/boss_skeram.cpp | 2 +- .../zone/temple_of_ahnqiraj/boss_twinemperors.cpp | 2 +- .../utgarde_keep/boss_ingvar_the_plunderer.cpp | 6 +++--- .../utgarde_keep/utgarde_keep/boss_keleseth.cpp | 4 ++-- .../utgarde_keep/boss_skarvald_dalronn.cpp | 4 ++-- .../utgarde_keep/utgarde_keep/utgarde_keep.cpp | 2 +- .../scripts/zone/zangarmarsh/zangarmarsh.cpp | 16 +++++++------- .../scripts/scripts/zone/zulaman/boss_akilzon.cpp | 2 +- .../scripts/scripts/zone/zulaman/boss_halazzi.cpp | 2 +- .../scripts/scripts/zone/zulaman/boss_hexlord.cpp | 4 ++-- .../scripts/scripts/zone/zulaman/boss_janalai.cpp | 6 +++--- .../scripts/scripts/zone/zulaman/boss_nalorakk.cpp | 2 +- .../scripts/scripts/zone/zulaman/boss_zuljin.cpp | 2 +- .../scripts/scripts/zone/zulaman/zulaman.cpp | 2 +- .../scripts/scripts/zone/zulfarrak/zulfarrak.cpp | 4 ++-- .../scripts/scripts/zone/zulgurub/boss_arlokk.cpp | 2 +- .../scripts/scripts/zone/zulgurub/boss_hakkar.cpp | 2 +- .../scripts/scripts/zone/zulgurub/boss_jeklik.cpp | 4 ++-- .../scripts/scripts/zone/zulgurub/boss_jindo.cpp | 6 +++--- .../scripts/zone/zulgurub/boss_mandokir.cpp | 4 ++-- .../scripts/scripts/zone/zulgurub/boss_marli.cpp | 2 +- .../scripts/scripts/zone/zulgurub/boss_thekal.cpp | 6 +++--- .../scripts/scripts/zone/zulgurub/boss_venoxis.cpp | 2 +- 116 files changed, 218 insertions(+), 232 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index f893eb6c1bf..045f85150e9 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -71,7 +71,7 @@ void SummonList::DespawnAll() erase(begin()); summon->SetVisibility(VISIBILITY_OFF); if(summon->isSummon() && !summon->isPet()) - ((TempSummon*)summon)->UnSummon(); + CAST_SUM(summon)->UnSummon(); else summon->setDeathState(JUST_DIED); summon->RemoveCorpse(); diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index db12a846757..f145ff09942 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -13,18 +13,15 @@ #include "CreatureAIImpl.h" #include "InstanceData.h" -#define USE_DYNAMIC_CAST -#ifdef USE_DYNAMIC_CAST -#define CAST_PLR(a) (dynamic_cast(a)) -#define CAST_CRE(a) (dynamic_cast(a)) -#define CAST_VEH(a) (dynamic_cast(a)) -#define CAST_AI(a,b) (dynamic_cast(b)) -#else -#define CAST_PLR(a) (static_cast(a)) -#define CAST_CRE(a) (static_cast(a)) -#define CAST_VEH(a) (static_cast(a)) -#define CAST_AI(a,b) (static_cast(b)) -#endif +#define SCRIPT_CAST_TYPE dynamic_cast +//#define SCRIPT_CAST_TYPE static_cast + +#define CAST_PLR(a) (SCRIPT_CAST_TYPE(a)) +#define CAST_CRE(a) (SCRIPT_CAST_TYPE(a)) +#define CAST_VEH(a) (SCRIPT_CAST_TYPE(a)) +#define CAST_SUM(a) (SCRIPT_CAST_TYPE(a)) +#define CAST_PET(a) (SCRIPT_CAST_TYPE(a)) +#define CAST_AI(a,b) (SCRIPT_CAST_TYPE(b)) #define GET_SPELL(a) (const_cast(GetSpellStore()->LookupEntry(a))) @@ -84,10 +81,10 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI void SummonedCreatureDespawn(Creature* /*unit*/) {} // Called when hit by a spell - void SpellHit(Unit* caster, const SpellEntry*) {} + void SpellHit(Unit* caster, const SpellEntry *spell) {} // Called when spell hits a target - void SpellHitTarget(Unit* target, const SpellEntry*) {} + void SpellHitTarget(Unit* target, const SpellEntry *spell) {} //Called at waypoint reached or PointMovement end void MovementInform(uint32 type, uint32 id){} diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp index 0869a6e72cd..f24abe4a4c7 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp @@ -350,8 +350,6 @@ struct TRINITY_DLL_DECL mob_ethereal_apprenticeAI : public ScriptedAI isFireboltTurn = true; } - void Aggro(Unit* who) {} - void UpdateAI(const uint32 diff) { if(!UpdateVictim()) diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp index 61758b12e6e..5495a2c8998 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp @@ -54,7 +54,7 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI { boss_talon_king_ikissAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp index 324524c0b71..9e38ddea302 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp @@ -46,7 +46,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI { boss_ambassador_hellmawAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp index ebabd317940..5fc7111edb0 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp @@ -55,7 +55,7 @@ struct TRINITY_DLL_DECL boss_blackheart_the_inciterAI : public ScriptedAI { boss_blackheart_the_inciterAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp index 34bda60c1b7..edd249cfebb 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp @@ -126,7 +126,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI { boss_grandmaster_vorpilAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); Intro = false; } diff --git a/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp b/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp index 5f0d4bf03ff..38b5b55d1d7 100644 --- a/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp +++ b/src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp @@ -50,7 +50,7 @@ struct TRINITY_DLL_DECL boss_elder_nadoxAI : public ScriptedAI { boss_elder_nadoxAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = c->GetMap()->IsHeroic(); } @@ -182,7 +182,7 @@ struct TRINITY_DLL_DECL mob_ahnkahar_nerubianAI : public ScriptedAI { mob_ahnkahar_nerubianAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Reset(); } diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index d769b132af2..2048961fc08 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -582,8 +582,6 @@ struct TRINITY_DLL_DECL npc_nestlewood_owlkinAI : public ScriptedAI m_creature->SetVisibility(VISIBILITY_ON); } - void Aggro(Unit *who) {} - void UpdateAI(const uint32 diff) { //timer gets adjusted by the triggered aura effect @@ -624,7 +622,7 @@ bool EffectDummyCreature_npc_nestlewood_owlkin(Unit *pCaster, uint32 spellId, ui pCreatureTarget->UpdateEntry(ENTRY_OWLKIN_INOC); //set despawn timer, since we want to remove creature after a short time - ((npc_nestlewood_owlkinAI*)pCreatureTarget->AI())->DespawnTimer = 15000; + CAST_AI(npc_nestlewood_owlkinAI, pCreatureTarget->AI())->DespawnTimer = 15000; //always return true when we are handling this spell and effect return true; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp index 48405c1190c..30d86880911 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp @@ -67,7 +67,7 @@ struct TRINITY_DLL_DECL boss_gurtogg_bloodboilAI : public ScriptedAI { boss_gurtogg_bloodboilAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 55625b18eb6..d26c864145c 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -366,7 +366,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI { boss_illidan_stormrageAI(Creature* c) : ScriptedAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); SpellEntry *TempSpell = GET_SPELL(SPELL_SHADOWFIEND_PASSIVE); @@ -973,7 +973,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI { npc_akama_illidanAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -1725,7 +1725,7 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI { mob_parasitic_shadowfiendAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp index ba3d5316e76..8a00b3a2e0f 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp @@ -80,7 +80,7 @@ struct TRINITY_DLL_DECL boss_shahrazAI : public ScriptedAI { boss_shahrazAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp index e750d5b0732..29f1278c79b 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp @@ -120,7 +120,7 @@ struct TRINITY_DLL_DECL boss_reliquary_of_soulsAI : public ScriptedAI { boss_reliquary_of_soulsAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); EssenceGUID = 0; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp index ed6bc3dcf15..1b375f0be0f 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp @@ -167,7 +167,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI { boss_shade_of_akamaAI(Creature* c) : ScriptedAI(c), summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); AkamaGUID = pInstance ? pInstance->GetData64(DATA_AKAMA_SHADE) : 0; m_creature->setActive(true);//if view distance is too low m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); @@ -507,7 +507,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI { ShadeHasDied = false; StartCombat = false; - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); ShadeGUID = pInstance ? pInstance->GetData64(DATA_SHADEOFAKAMA) : NOT_STARTED; m_creature->setActive(true); EventBegun = false; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index a5841cf86a6..9d240f26b7a 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -67,7 +67,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI { boss_supremusAI(Creature *c) : ScriptedAI(c), summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp index b79abe5e393..1ebb2c7aa25 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp @@ -197,7 +197,7 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI { boss_teron_gorefiendAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp index 3029231abd9..3933c79847b 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp @@ -62,7 +62,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI { boss_najentusAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp index 0c43ba57041..ae8c6ece29f 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp @@ -192,7 +192,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI { mob_illidari_councilAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); for(uint8 i = 0; i < 4; ++i) Council[i] = 0; } @@ -348,7 +348,7 @@ struct TRINITY_DLL_DECL boss_illidari_councilAI : public ScriptedAI { boss_illidari_councilAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); for(uint8 i = 0; i < 4; ++i) Council[i] = 0; LoadedGUIDs = false; diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp index 135f63bc08c..571f3bf7e7b 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp @@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI { npc_grimstoneAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); MobSpawnId = rand()%6; } @@ -622,7 +622,7 @@ struct TRINITY_DLL_DECL npc_marshal_windsorAI : public npc_escortAI { npc_marshal_windsorAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void WaypointReached(uint32 i) @@ -1079,7 +1079,7 @@ struct TRINITY_DLL_DECL npc_rocknotAI : public npc_escortAI { npc_rocknotAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp index 56a99619504..59cf2acf589 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp @@ -42,7 +42,7 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI { boss_aeonusAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp index 7745c0c56c9..18dab77f84c 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp @@ -42,7 +42,7 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI { boss_chrono_lord_dejaAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp index 74264aef142..edf204c20e4 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp @@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI { boss_temporusAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/dark_portal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/dark_portal.cpp index 740e3d221f6..a8f4e9b748e 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/dark_portal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/dark_portal.cpp @@ -58,7 +58,7 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI { npc_medivh_bmAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -244,7 +244,7 @@ struct TRINITY_DLL_DECL npc_time_riftAI : public ScriptedAI { npc_time_riftAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp index e4016707a99..be3d57b7bcc 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp @@ -40,7 +40,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI { boss_anetheronAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; SpellEntry *TempSpell = GET_SPELL(SPELL_SLEEP); @@ -225,7 +225,7 @@ struct TRINITY_DLL_DECL mob_towering_infernalAI : public ScriptedAI { mob_towering_infernalAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); if(pInstance) AnetheronGUID = pInstance->GetData64(DATA_ANETHERON); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp index 6b6529b292e..92195cc73b6 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp @@ -76,7 +76,7 @@ struct mob_ancient_wispAI : public ScriptedAI { mob_ancient_wispAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -206,7 +206,7 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public hyjal_trashAI { boss_archimondeAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp index 8ca8ba36575..b788726c60f 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp @@ -31,7 +31,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI { boss_azgalorAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; SpellEntry *TempSpell = GET_SPELL(SPELL_HOWL_OF_AZGALOR); @@ -187,7 +187,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI { mob_lesser_doomguardAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); if(pInstance) AzgalorGUID = pInstance->GetData64(DATA_AZGALOR); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp index c8e149e6a37..3dfe54e0cf6 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp @@ -28,7 +28,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI { boss_kazrogalAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; SpellEntry *TempSpell = GET_SPELL(SPELL_MARK); diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp index 924652f3d41..fcbe58a6661 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp @@ -34,7 +34,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI { boss_rage_winterchillAI(Creature *c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index b6a9f0fecae..a6ac3068808 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -308,7 +308,7 @@ float HordeFirePos[65][8]=//spawn points for the fire visuals (GO) in the horde hyjalAI::hyjalAI(Creature *c) : npc_escortAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); VeinsSpawned[0] = false; VeinsSpawned[1] = false; for(uint8 i=0;i<14;i++) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 92cbfdbf3ab..0ece895ec8d 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -141,7 +141,7 @@ float HordeOverrunWP[21][3]=//waypoints in the horde base used in the end in the hyjal_trashAI::hyjal_trashAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); IsEvent = false; Delay = 0; LastOverronPos = 0; @@ -375,7 +375,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI { mob_giant_infernalAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); meteor = false;//call once! CanMove = false; Delay = rand()%30000; @@ -509,7 +509,7 @@ struct mob_abominationAI : public hyjal_trashAI { mob_abominationAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -604,7 +604,7 @@ struct mob_ghoulAI : public hyjal_trashAI { mob_ghoulAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -707,7 +707,7 @@ struct mob_necromancerAI : public hyjal_trashAI { mob_necromancerAI(Creature* c) : hyjal_trashAI(c), summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -825,7 +825,7 @@ struct mob_bansheeAI : public hyjal_trashAI { mob_bansheeAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -924,7 +924,7 @@ struct mob_crypt_fiendAI : public hyjal_trashAI { mob_crypt_fiendAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -1010,7 +1010,7 @@ struct mob_fel_stalkerAI : public hyjal_trashAI { mob_fel_stalkerAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -1096,7 +1096,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI { mob_frost_wyrmAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; Reset(); @@ -1207,7 +1207,7 @@ struct mob_gargoyleAI : public hyjal_trashAI { mob_gargoyleAI(Creature* c) : hyjal_trashAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); go = false; pos = 0; DummyTarget[0] = 0;DummyTarget[1] = 0;DummyTarget[2] = 0; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp index feff5debf3e..55676fb4f50 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp @@ -42,7 +42,7 @@ struct TRINITY_DLL_DECL boss_captain_skarlocAI : public ScriptedAI { boss_captain_skarlocAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp index 26e1cb57e1a..781cb8fd1d6 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp @@ -44,7 +44,7 @@ struct TRINITY_DLL_DECL boss_epoch_hunterAI : public ScriptedAI { boss_epoch_hunterAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp index ec01c32b5a3..04550ec624e 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp @@ -177,7 +177,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI { npc_thrall_old_hillsbradAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); m_creature->setActive(true); } @@ -581,7 +581,7 @@ struct TRINITY_DLL_DECL npc_tarethaAI : public npc_escortAI { npc_tarethaAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp index 5e9afdf5c33..fb15b427bfa 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp @@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI { boss_fathomlord_karathressAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Advisors[0] = 0; Advisors[1] = 0; Advisors[2] = 0; @@ -305,7 +305,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_sharkkisAI : public ScriptedAI { boss_fathomguard_sharkkisAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -449,7 +449,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_tidalvessAI : public ScriptedAI { boss_fathomguard_tidalvessAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -564,7 +564,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_caribdisAI : public ScriptedAI { boss_fathomguard_caribdisAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp index bd2365336f0..2de639ad0bb 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp @@ -78,7 +78,7 @@ struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI { boss_hydross_the_unstableAI(Creature *c) : ScriptedAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp index ea7745ce6ec..76023dd6acb 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp @@ -132,7 +132,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI { boss_lady_vashjAI (Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Intro = false; JustCreated = true; m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); //set it only once on creature create (no need do intro if wiped) @@ -583,7 +583,7 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI { mob_enchanted_elementalAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -688,7 +688,7 @@ struct TRINITY_DLL_DECL mob_tainted_elementalAI : public ScriptedAI { mob_tainted_elementalAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -751,7 +751,7 @@ struct TRINITY_DLL_DECL mob_toxic_sporebatAI : public ScriptedAI { mob_toxic_sporebatAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); EnterEvadeMode(); } @@ -883,7 +883,7 @@ struct TRINITY_DLL_DECL mob_shield_generator_channelAI : public ScriptedAI { mob_shield_generator_channelAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp index 032ddb4ef70..020e3d09074 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp @@ -140,7 +140,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI boss_leotheras_the_blindAI(Creature *c) : ScriptedAI(c) { m_creature->GetPosition(x,y,z); - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Demon = 0; for(uint8 i = 0; i < 3; i++)//clear guids @@ -640,7 +640,7 @@ struct TRINITY_DLL_DECL mob_greyheart_spellbinderAI : public ScriptedAI { mob_greyheart_spellbinderAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData());; + pInstance = c->GetInstanceData();; leotherasGUID = 0; AddedBanish = false; } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp index 3fa97e6b608..3a1601013b3 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp @@ -76,7 +76,7 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI { boss_the_lurker_belowAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); SpellEntry *TempSpell = GET_SPELL(SPELL_SPOUT_ANIM); if(TempSpell) { diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index 5038fe09334..b014b4b1e45 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -100,7 +100,7 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI { boss_morogrim_tidewalkerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp index c8bbe986176..3143f8dfe1c 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp @@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_thespiaAI : public ScriptedAI { boss_thespiaAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp index 50d919d3e2c..3d046da4a9d 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp @@ -50,7 +50,7 @@ struct TRINITY_DLL_DECL boss_mekgineer_steamriggerAI : public ScriptedAI { boss_mekgineer_steamriggerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } @@ -199,7 +199,7 @@ struct TRINITY_DLL_DECL mob_steamrigger_mechanicAI : public ScriptedAI { mob_steamrigger_mechanicAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp index f84b6864641..a832cc1c938 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp @@ -44,7 +44,7 @@ struct TRINITY_DLL_DECL mob_naga_distillerAI : public ScriptedAI { mob_naga_distillerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -90,7 +90,7 @@ struct TRINITY_DLL_DECL boss_warlord_kalithreshAI : public ScriptedAI { boss_warlord_kalithreshAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp index 482a7169ad3..56ac5c83d03 100644 --- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp +++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp @@ -562,7 +562,7 @@ struct TRINITY_DLL_DECL npc_ros_dark_riderAI : public ScriptedAI // this should be before next one otherwise he may enter vehicle again if(!me->m_Vehicle && who->GetEntry() == 28782 && CAST_CRE(who)->isVehicle() && CAST_VEH(who)->HasEmptySeat(0)) - me->EnterVehicle((Vehicle*)who); + me->EnterVehicle(CAST_VEH(who)); ScriptedAI::MoveInLineOfSight(who); } diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp index 0335799b4e9..4fa46cabaec 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp @@ -53,7 +53,7 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI { boss_gruulAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp index c3dfd193776..91ded349921 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp @@ -108,7 +108,7 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI { boss_high_king_maulgarAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); for(uint8 i = 0; i < 4; ++i) Council[i] = 0; } @@ -304,7 +304,7 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI { boss_olm_the_summonerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 DarkDecay_Timer; @@ -406,7 +406,7 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI { boss_kiggler_the_crazedAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 GreaterPolymorph_Timer; @@ -516,7 +516,7 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI { boss_blindeye_the_seerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 GreaterPowerWordShield_Timer; @@ -614,7 +614,7 @@ struct TRINITY_DLL_DECL boss_krosh_firehandAI : public ScriptedAI { boss_krosh_firehandAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 GreaterFireball_Timer; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp index e3ac1e418a3..8b482ceeb77 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp @@ -37,7 +37,7 @@ struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI { boss_broggokAI(Creature *c) : ScriptedAI(c) { - pInstance = ((ScriptedInstance*)c->GetInstanceData()); + pInstance = c->GetInstanceData(); Reset(); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp index 4d28469bf04..f597f630660 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp @@ -66,7 +66,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI { boss_kelidan_the_breakerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); for(int i=0; i<5; ++i) Channelers[i] = 0; @@ -291,7 +291,7 @@ struct TRINITY_DLL_DECL mob_shadowmoon_channelerAI : public ScriptedAI { mob_shadowmoon_channelerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp index fce2e175888..a7affa739ea 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp @@ -40,7 +40,7 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI { boss_the_makerAI(Creature *c) : ScriptedAI(c) { - pInstance = ((ScriptedInstance*)c->GetInstanceData()); + pInstance = c->GetInstanceData(); Reset(); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp index 0c7c651a0fa..d3930696251 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp @@ -77,7 +77,7 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI { boss_grand_warlock_nethekurseAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } @@ -304,7 +304,7 @@ struct TRINITY_DLL_DECL mob_fel_orc_convertAI : public ScriptedAI { mob_fel_orc_convertAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -318,7 +318,6 @@ struct TRINITY_DLL_DECL mob_fel_orc_convertAI : public ScriptedAI void MoveInLineOfSight(Unit *who) { - return; } void EnterCombat(Unit* who) diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp index bdedc6b4fde..c40a99fa243 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp @@ -128,7 +128,7 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI { boss_warbringer_omroggAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp index 276089a91ee..2714a0785e2 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp @@ -52,7 +52,7 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI { boss_warchief_kargath_bladefistAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp b/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp index d358fbc2a86..1a79bead96c 100644 --- a/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp +++ b/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp @@ -69,7 +69,7 @@ struct TRINITY_DLL_DECL npc_converted_sentryAI : public ScriptedAI DoCast(m_creature, SPELL_CONVERT_CREDIT); if(m_creature->isPet()) - ((Pet*)m_creature)->SetDuration(7500); + CAST_PET(m_creature)->SetDuration(7500); Credit = true; }else Timer -= diff; } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp index 9a8b0bf27b6..75f327d4f75 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp @@ -66,7 +66,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI { AddId[i] = 0; } - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -340,7 +340,7 @@ struct TRINITY_DLL_DECL boss_moroes_guestAI : public ScriptedAI for(uint8 i = 0; i < 4; ++i) GuestGUID[i] = 0; - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void Reset() diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp index f41eaadb575..962e43d3eae 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp @@ -60,7 +60,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI { boss_nightbaneAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Intro = true; } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp index 66005746bbd..4e5b79f655c 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp @@ -157,7 +157,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI { boss_malchezaarAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp index 015a19087ab..599aac40a47 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp @@ -83,7 +83,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI { boss_aranAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp index 24981a903c4..96ba0b146b4 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp @@ -65,7 +65,7 @@ struct TRINITY_DLL_DECL mob_kilrekAI : public ScriptedAI { mob_kilrekAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -157,7 +157,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI { for(uint8 i = 0; i < 2; ++i) PortalGUID[i] = 0; - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp index ec7b9b2a863..ba7142b0bd5 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp @@ -104,7 +104,7 @@ struct TRINITY_DLL_DECL boss_dorotheeAI : public ScriptedAI { boss_dorotheeAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -258,7 +258,7 @@ struct TRINITY_DLL_DECL boss_strawmanAI : public ScriptedAI { boss_strawmanAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -355,7 +355,7 @@ struct TRINITY_DLL_DECL boss_tinheadAI : public ScriptedAI { boss_tinheadAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -448,7 +448,7 @@ struct TRINITY_DLL_DECL boss_roarAI : public ScriptedAI { boss_roarAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -540,7 +540,7 @@ struct TRINITY_DLL_DECL boss_croneAI : public ScriptedAI { boss_croneAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -729,7 +729,7 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI { boss_bigbadwolfAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -920,7 +920,7 @@ struct TRINITY_DLL_DECL boss_julianneAI : public ScriptedAI { boss_julianneAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); EntryYellTimer = 1000; AggroYellTimer = 10000; } @@ -1036,7 +1036,7 @@ struct TRINITY_DLL_DECL boss_romuloAI : public ScriptedAI { boss_romuloAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); EntryYellTimer = 8000; AggroYellTimer = 15000; } diff --git a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp index e984bea31c2..189c75da638 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp @@ -115,7 +115,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI npc_barnesAI(Creature* c) : npc_escortAI(c) { RaidWiped = false; - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -486,7 +486,7 @@ struct TRINITY_DLL_DECL npc_image_of_medivhAI : public ScriptedAI { npc_image_of_medivhAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp index fe62b55f0a4..11e78865550 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp @@ -79,7 +79,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI { boss_felblood_kaelthasAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); Heroic = c->GetMap()->IsHeroic(); + pInstance = c->GetInstanceData(); Heroic = c->GetMap()->IsHeroic(); } ScriptedInstance* pInstance; @@ -450,7 +450,7 @@ struct TRINITY_DLL_DECL mob_felkael_phoenixAI : public ScriptedAI { mob_felkael_phoenixAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp index e101d9713c5..709b6031aba 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp @@ -96,7 +96,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI { boss_priestess_delrissaAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Heroic = c->GetMap()->IsHeroic(); } @@ -358,7 +358,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI boss_priestess_guestAI(Creature* c) : ScriptedAI(c) { Group.clear(); - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); AcquireGUIDs(); } diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp index b23abd1da2a..a5bfa2a629b 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp @@ -53,7 +53,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI { boss_selin_fireheartAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Crystals.clear(); //GUIDs per instance is static, so we only need to load them once. diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp index fb31a3783da..22e25d81e85 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp @@ -53,7 +53,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI { boss_vexallusAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); Heroic = c->GetMap()->IsHeroic(); + pInstance = c->GetInstanceData(); Heroic = c->GetMap()->IsHeroic(); Heroic = c->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp b/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp index c82dc52b6e6..6d6ebb6507f 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp @@ -40,7 +40,7 @@ struct TRINITY_DLL_DECL boss_golemaggAI : public ScriptedAI { boss_golemaggAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -118,7 +118,7 @@ struct TRINITY_DLL_DECL mob_core_ragerAI : public ScriptedAI { mob_core_ragerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 Mangle_Timer; diff --git a/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp b/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp index 7fef37d24c9..b9112cf2350 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp @@ -55,7 +55,7 @@ struct TRINITY_DLL_DECL boss_majordomoAI : public ScriptedAI { boss_majordomoAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp b/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp index 5c61ef9225d..d5d614895dd 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp @@ -39,7 +39,7 @@ struct TRINITY_DLL_DECL boss_sulfuronAI : public ScriptedAI { boss_sulfuronAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 Darkstrike_Timer; @@ -126,7 +126,7 @@ struct TRINITY_DLL_DECL mob_flamewaker_priestAI : public ScriptedAI { mob_flamewaker_priestAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 Heal_Timer; diff --git a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp index 1254d08bf30..b0a6e7bbc58 100644 --- a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp +++ b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp @@ -93,8 +93,6 @@ struct TRINITY_DLL_DECL npc_kyle_frenziedAI : public ScriptedAI m_creature->UpdateEntry(NPC_KYLE_FRENZIED); } - void Aggro(Unit* who) { } - void SpellHit(Unit* pCaster, SpellEntry const* pSpell) { if (!m_creature->isInCombat() && !bEvent && pSpell->Id == SPELL_LUNCH) @@ -152,8 +150,8 @@ struct TRINITY_DLL_DECL npc_kyle_frenziedAI : public ScriptedAI case 3: uiEventTimer = 5000; - if (Unit* pUnit = Unit::GetUnit(*m_creature,uiPlayerGUID)) - ((Player*)pUnit)->TalkedToCreature(m_creature->GetEntry(), m_creature->GetGUID()); + if (Player* pUnit = Unit::GetPlayer(uiPlayerGUID)) + pUnit->TalkedToCreature(m_creature->GetEntry(), m_creature->GetGUID()); m_creature->UpdateEntry(NPC_KYLE_FRIENDLY); break; diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp index a10d41a3bf7..4e9706f913e 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp @@ -276,7 +276,7 @@ struct TRINITY_DLL_DECL mob_gothik_minionAI : public SpellAI { if(me->isSummon()) { - if(Unit *owner = ((TempSummon*)me)->GetSummoner()) + if(Unit *owner = CAST_SUM(me)->GetSummoner()) SpellAI::JustDied(owner); } } diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp index 826c6087181..694fe0cc211 100644 --- a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp +++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp @@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL boss_anomalusAI : public ScriptedAI pInstance->SetData(DATA_ANOMALUS_EVENT, NOT_STARTED); } - void Aggro(Unit* who) + void EnterCombat(Unit* who) { DoScriptText(SAY_AGGRO, m_creature); } diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp index 53e76fd510f..7b7f011eaab 100644 --- a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp +++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp @@ -94,7 +94,7 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI } } - void Aggro(Unit* who) + void EnterCombat(Unit* who) { DoScriptText(SAY_AGGRO, m_creature); DoCast(m_creature, SPELL_INTENSE_COLD); diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp index 5abeaf6ab6f..cec5e3546e5 100644 --- a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp +++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp @@ -105,7 +105,7 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, NOT_STARTED); } - void Aggro(Unit* who) + void EnterCombat(Unit* who) { DoScriptText(SAY_AGGRO, m_creature); } diff --git a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp index 266380f55e7..db9bf2317bb 100644 --- a/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp +++ b/src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp @@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_ormorokAI : public ScriptedAI pInstance->SetData(DATA_ORMOROK_EVENT, NOT_STARTED); } - void Aggro(Unit* who) + void EnterCombat(Unit* who) { DoScriptText(SAY_AGGRO, m_creature); } diff --git a/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp b/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp index 74e7b953ad8..5aa30c22de3 100644 --- a/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp +++ b/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp @@ -101,7 +101,7 @@ struct TRINITY_DLL_DECL npc_shenthulAI : public ScriptedAI { if (Reset_Timer < diff) { - if (Player* pPlayer = (Player*)Unit::GetUnit((*m_creature),playerGUID)) + if (Player* pPlayer = Unit::GetPlayer(playerGUID)) { if (pPlayer->GetTypeId() == TYPEID_PLAYER && pPlayer->GetQuestStatus(QUEST_SHATTERED_SALUTE) == QUEST_STATUS_INCOMPLETE) pPlayer->FailQuest(QUEST_SHATTERED_SALUTE); diff --git a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp index fdebf81afff..b8f4bae71a7 100644 --- a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp +++ b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp @@ -143,7 +143,7 @@ struct TRINITY_DLL_DECL npc_deaths_head_ward_keeperAI : public ScriptedAI { npc_deaths_head_ward_keeperAI(Creature *c) : ScriptedAI(c) { - pInstance = ((ScriptedInstance*)c->GetInstanceData()); + pInstance = c->GetInstanceData(); Reset(); } @@ -155,10 +155,6 @@ struct TRINITY_DLL_DECL npc_deaths_head_ward_keeperAI : public ScriptedAI QuillboarChanneling_Timer = 1500; } - void Aggro(Unit *who) - { - } - void UpdateAI(const uint32 diff) { if (!m_creature->isAlive()) diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp index f0a80248c19..1afd4548701 100644 --- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp +++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp @@ -339,7 +339,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI speed->Effect[1] = SPELL_EFFECT_APPLY_AURA; speed->EffectApplyAuraName[1] = SPELL_AURA_MOD_CONFUSE; }*/ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp index bf7c122d452..3e8a64c8cf4 100644 --- a/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp +++ b/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp @@ -53,7 +53,7 @@ struct TRINITY_DLL_DECL npc_shadowfang_prisonerAI : public npc_escortAI { npc_shadowfang_prisonerAI(Creature *c) : npc_escortAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); uiNpcEntry = c->GetEntry(); } diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp index 2aae2d51e4e..f7ec954f282 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp @@ -138,7 +138,7 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI DoCast(m_creature, SPELL_JUST_EATEN); DoScriptText(SAY_JUST_EATEN, m_creature); - if (Player* pPlr = (Player*)Unit::GetUnit((*m_creature), uiPlayerGUID)) + if (Player* pPlr = Unit::GetPlayer(uiPlayerGUID)) pPlr->KilledMonster(NPC_EVENT_PINGER, m_creature->GetGUID()); Reset(); diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp index 316cbaef9d3..4405a50461b 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp @@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_silver_hand_bossesAI : public ScriptedAI { boss_silver_hand_bossesAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp index d06873bc0bf..081c83e5977 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp @@ -67,7 +67,7 @@ enum Spells struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI { boss_brutallusAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp index 92099f70ee6..814ad0c6b46 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp @@ -94,7 +94,7 @@ enum Creatures struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI { boss_sacrolashAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -354,7 +354,7 @@ CreatureAI* GetAI_boss_sacrolash(Creature *_Creature) struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI { boss_alythessAI(Creature *c) : Scripted_NoMovementAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); IntroStepCounter = 10; } diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp index f15a7742a8c..25e9d46dfc1 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp @@ -127,7 +127,7 @@ static EventFelmyst MaxTimer[]= struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI { boss_felmystAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); // wait for core patch be accepted /*SpellEntry *TempSpell = GET_SPELL(SPELL_ENCAPSULATE_EFFECT); diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp index 600f4906ca5..a97115f826e 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp @@ -102,7 +102,7 @@ struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI { boss_kalecgosAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); SathGUID = 0; DoorGUID = 0; } @@ -250,7 +250,7 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI { boss_sathrovarrAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); KalecGUID = 0; KalecgosGUID = 0; } @@ -458,7 +458,7 @@ struct TRINITY_DLL_DECL boss_kalecAI : public ScriptedAI bool isEnraged; // if demon is enraged boss_kalecAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void Reset() diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp index caf39318dd7..8dbee3680a2 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp @@ -296,7 +296,7 @@ bool GOHello_go_orb_of_the_blue_flight(Player *plr, GameObject* go) struct TRINITY_DLL_DECL boss_kalecgos_kjAI : public ScriptedAI { boss_kalecgos_kjAI(Creature* c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } GameObject* Orb[4]; @@ -409,7 +409,7 @@ CreatureAI* GetAI_boss_kalecgos_kj(Creature *_Creature) struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI { boss_kiljaedenAI(Creature* c) : Scripted_NoMovementAI(c), Summons(m_creature){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -724,7 +724,7 @@ CreatureAI* GetAI_boss_kiljaeden(Creature *_Creature) struct TRINITY_DLL_DECL mob_kiljaeden_controllerAI : public Scripted_NoMovementAI { mob_kiljaeden_controllerAI(Creature* c) : Scripted_NoMovementAI(c), Summons(m_creature){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -813,7 +813,7 @@ CreatureAI* GetAI_mob_kiljaeden_controller(Creature *_Creature) struct TRINITY_DLL_DECL mob_hand_of_the_deceiverAI : public ScriptedAI { mob_hand_of_the_deceiverAI(Creature* c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -1035,7 +1035,7 @@ CreatureAI* GetAI_mob_armageddon(Creature *_Creature) struct TRINITY_DLL_DECL mob_shield_orbAI : public ScriptedAI { mob_shield_orbAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } bool PointReached; diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp index cd53ca034f4..b81f602d7d3 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp @@ -116,7 +116,7 @@ uint32 EnrageTimer = 600000; struct TRINITY_DLL_DECL boss_entropiusAI : public ScriptedAI { boss_entropiusAI(Creature *c) : ScriptedAI(c), Summons(m_creature){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Combat = false; } @@ -202,7 +202,7 @@ CreatureAI* GetAI_boss_entropius(Creature *_Creature) struct TRINITY_DLL_DECL boss_muruAI : public Scripted_NoMovementAI { boss_muruAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -343,7 +343,7 @@ CreatureAI* GetAI_boss_muru(Creature *_Creature) struct TRINITY_DLL_DECL npc_muru_portalAI : public Scripted_NoMovementAI { npc_muru_portalAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -406,7 +406,7 @@ CreatureAI* GetAI_npc_muru_portal(Creature *_Creature) struct TRINITY_DLL_DECL npc_dark_fiendAI : public ScriptedAI { npc_dark_fiendAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -460,7 +460,7 @@ CreatureAI* GetAI_npc_dark_fiend(Creature *_Creature) struct TRINITY_DLL_DECL npc_void_sentinelAI : public ScriptedAI { npc_void_sentinelAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -511,7 +511,7 @@ CreatureAI* GetAI_npc_void_sentinel(Creature *_Creature) struct TRINITY_DLL_DECL npc_blackholeAI : public ScriptedAI { npc_blackholeAI(Creature *c) : ScriptedAI(c){ - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp index 0392437eeb5..f26a387abc1 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp @@ -63,7 +63,7 @@ struct TRINITY_DLL_DECL npc_millhouse_manastormAI : public ScriptedAI { npc_millhouse_manastormAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; @@ -251,7 +251,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI { npc_warden_mellicharAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp index 37e12c60b2e..4158e6a863d 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp @@ -57,7 +57,7 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI { boss_harbinger_skyrissAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); Intro = false; } @@ -279,7 +279,7 @@ struct TRINITY_DLL_DECL boss_harbinger_skyriss_illusionAI : public ScriptedAI { boss_harbinger_skyriss_illusionAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp index 6a927191322..ca04a00af95 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp @@ -69,7 +69,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI { boss_alarAI(Creature *c) : ScriptedAI(c) { - pInstance =(c->GetInstanceData()); + pInstance =c->GetInstanceData(); DefaultMoveSpeedRate = m_creature->GetSpeedRate(MOVE_RUN); } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp index f886ecae224..12dbe8ad55e 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp @@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI { boss_high_astromancer_solarianAI(Creature *c) : ScriptedAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); defaultarmor = m_creature->GetArmor(); defaultsize = m_creature->GetFloatValue(OBJECT_FIELD_SCALE_X); @@ -393,7 +393,7 @@ struct TRINITY_DLL_DECL mob_solarium_priestAI : public ScriptedAI { mob_solarium_priestAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp index 28bd1590f03..d3cd77010d2 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp @@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI advisorbase_ai(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void MoveInLineOfSight(Unit *who) @@ -274,7 +274,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI { boss_kaelthasAI(Creature *c) : ScriptedAI(c), summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); AdvisorGuid[0] = 0; AdvisorGuid[1] = 0; AdvisorGuid[2] = 0; @@ -1397,7 +1397,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI { mob_phoenix_tkAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp index aa96435bbb1..2fd4a5d65f0 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp @@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_void_reaverAI : public ScriptedAI { boss_void_reaverAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp index 86e36072546..952876157fa 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp @@ -44,7 +44,7 @@ struct TRINITY_DLL_DECL boss_gatewatcher_iron_handAI : public ScriptedAI { boss_gatewatcher_iron_handAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp index e14aba074cf..904ded07159 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp @@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI { boss_nethermancer_sepethreaAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } @@ -166,7 +166,7 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI { mob_ragin_flamesAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); HeroicMode = m_creature->GetMap()->IsHeroic(); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp index 2c5ffe06bfc..f88a65a5617 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp @@ -39,7 +39,7 @@ struct TRINITY_DLL_DECL boss_kriAI : public ScriptedAI { boss_kriAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -124,7 +124,7 @@ struct TRINITY_DLL_DECL boss_vemAI : public ScriptedAI { boss_vemAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -205,7 +205,7 @@ struct TRINITY_DLL_DECL boss_yaujAI : public ScriptedAI { boss_yaujAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp index 1fc47f68295..a26f0f12e3e 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp @@ -53,7 +53,7 @@ struct TRINITY_DLL_DECL boss_skeramAI : public ScriptedAI { boss_skeramAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); IsImage = false; } diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp index 1c741bdd859..62f06160251 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp @@ -75,7 +75,7 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI boss_twinemperorsAI(Creature *c): ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void TwinReset() diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp index 035df9082c8..b8a1ca21f45 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp @@ -69,7 +69,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI { boss_ingvar_the_plundererAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = c->GetMap()->IsHeroic(); } @@ -285,7 +285,7 @@ struct TRINITY_DLL_DECL mob_annhylde_the_callerAI : public ScriptedAI { mob_annhylde_the_callerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } float x,y,z; @@ -388,7 +388,7 @@ struct TRINITY_DLL_DECL mob_ingvar_throw_dummyAI : public ScriptedAI { mob_ingvar_throw_dummyAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = c->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp index a145ddcc425..c05d28bc58b 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp @@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI { boss_kelesethAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); Heroic = c->GetMap()->IsHeroic(); } @@ -210,7 +210,7 @@ struct TRINITY_DLL_DECL mob_vrykul_skeletonAI : public ScriptedAI { mob_vrykul_skeletonAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp index 8078716d2d8..5c5a5ba2f16 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp @@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL boss_skarvald_the_constructorAI : public ScriptedAI { boss_skarvald_the_constructorAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } @@ -206,7 +206,7 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI { boss_dalronn_the_controllerAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic(); } diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp index 517d1270f73..42f1fc00317 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp @@ -30,7 +30,7 @@ struct TRINITY_DLL_DECL npc_dragonflayer_forge_masterAI : public ScriptedAI { npc_dragonflayer_forge_masterAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); fm_Type = 0; } diff --git a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp index a3f84aa0dc2..e6d6ecf8f0a 100644 --- a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp +++ b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp @@ -278,9 +278,9 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* pUnit = Unit::GetUnit(*m_creature, PlayerGUID); + Player* pUnit = Unit::GetPlayer(PlayerGUID); - if (!pUnit || pUnit->GetTypeId() != TYPEID_PLAYER) + if (!pUnit) return; switch(i) @@ -305,17 +305,17 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI break; case 26: DoScriptText(SAY_END, m_creature, pUnit); - ((Player*)pUnit)->GroupEventHappens(QUEST_ESCAPE_FROM, m_creature); + pUnit->GroupEventHappens(QUEST_ESCAPE_FROM, m_creature); break; } } void JustDied(Unit* killer) { - if (Unit* pUnit = Unit::GetUnit(*m_creature, PlayerGUID)) + if (Player* pUnit = Unit::GetPlayer(PlayerGUID)) { - if (((Player*)pUnit)->GetQuestStatus(QUEST_ESCAPE_FROM) == QUEST_STATUS_INCOMPLETE) - ((Player*)pUnit)->FailQuest(QUEST_ESCAPE_FROM); + if (pUnit->GetQuestStatus(QUEST_ESCAPE_FROM) == QUEST_STATUS_INCOMPLETE) + pUnit->FailQuest(QUEST_ESCAPE_FROM); } } @@ -330,7 +330,7 @@ bool QuestAccept_npc_kayra_longmane(Player* pPlayer, Creature* pCreature, Quest if (pQuest->GetQuestId() == QUEST_ESCAPE_FROM) { DoScriptText(SAY_START, pCreature, pPlayer); - ((npc_escortAI*)(pCreature->AI()))->Start(false, true, false, pPlayer->GetGUID()); + CAST_AI(npc_escortAI, pCreature->AI())->Start(false, true, false, pPlayer->GetGUID()); } return true; } @@ -341,7 +341,7 @@ CreatureAI* GetAI_npc_kayra_longmaneAI(Creature* pCreature) thisAI->FillPointMovementListForCreature(); - return (CreatureAI*)thisAI; + return thisAI; } /*###### ## AddSC diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp index 7861232026e..3d1895351d6 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp @@ -64,7 +64,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI SpellEntry *TempSpell = GET_SPELL(SPELL_ELECTRICAL_DAMAGE); if(TempSpell) TempSpell->EffectBasePoints[1] = 49;//disable bugged lightning until fixed in core - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp index fc1fb3ce592..ec264a7f9d1 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp @@ -75,7 +75,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI { boss_halazziAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); // need to find out what controls totem's spell cooldown SpellEntry *TempSpell = GET_SPELL(SPELL_LIGHTNING); if(TempSpell && TempSpell->CastingTimeIndex != 5) diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp index b57cc4e0753..2e93b685120 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp @@ -179,7 +179,7 @@ struct TRINITY_DLL_DECL boss_hexlord_addAI : public ScriptedAI boss_hexlord_addAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } void Reset() {} @@ -202,7 +202,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI { boss_hex_lord_malacrassAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); SelectAddEntry(); for(uint8 i = 0; i < 4; ++i) AddGUID[i] = 0; diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp index e8564c84a10..926a751c7cd 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp @@ -101,7 +101,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI { boss_janalaiAI(Creature *c) : ScriptedAI(c) { - pInstance =(c->GetInstanceData()); + pInstance =c->GetInstanceData(); SpellEntry *TempSpell = GET_SPELL(SPELL_HATCH_EGG); if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1) @@ -481,7 +481,7 @@ struct TRINITY_DLL_DECL mob_amanishi_hatcherAI : public ScriptedAI { mob_amanishi_hatcherAI(Creature *c) : ScriptedAI(c) { - pInstance =(c->GetInstanceData()); + pInstance =c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -612,7 +612,7 @@ struct TRINITY_DLL_DECL mob_hatchlingAI : public ScriptedAI { mob_hatchlingAI(Creature *c) : ScriptedAI(c) { - pInstance =(c->GetInstanceData()); + pInstance =c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp index 96038629cb3..80f2c754e8d 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp @@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_nalorakkAI : public ScriptedAI { MoveEvent = true; MovePhase = 0; - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp index ea1eddff107..a48f139eb16 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp @@ -143,7 +143,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI { boss_zuljinAI(Creature *c) : ScriptedAI(c), Summons(m_creature) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp index dd16b652c0d..23b33fa8962 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp @@ -40,7 +40,7 @@ struct TRINITY_DLL_DECL npc_forest_frogAI : public ScriptedAI { npc_forest_frogAI(Creature* c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp b/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp index 80db24d7871..c06cd917b0e 100644 --- a/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp +++ b/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp @@ -44,7 +44,7 @@ struct TRINITY_DLL_DECL npc_sergeant_blyAI : public ScriptedAI { npc_sergeant_blyAI(Creature *c) : ScriptedAI(c) { - //pInstance = (c->GetInstanceData()); + //pInstance = c->GetInstanceData(); } //ScriptedInstance* pInstance; @@ -141,7 +141,7 @@ struct TRINITY_DLL_DECL npc_weegli_blastfuseAI : public ScriptedAI { npc_weegli_blastfuseAI(Creature *c) : ScriptedAI(c) { - //pInstance = (c->GetInstanceData()); + //pInstance = c->GetInstanceData(); } //ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp index f8fb9500dc5..018f33cf2bf 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp @@ -38,7 +38,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI { boss_arlokkAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp index 2202fecc19c..6879c04646f 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp @@ -46,7 +46,7 @@ struct TRINITY_DLL_DECL boss_hakkarAI : public ScriptedAI { boss_hakkarAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp index f4d99434402..1abac285389 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp @@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI { boss_jeklikAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -212,7 +212,7 @@ struct TRINITY_DLL_DECL mob_batriderAI : public ScriptedAI { mob_batriderAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp index b5271291a4d..279ec81b3eb 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp @@ -43,7 +43,7 @@ struct TRINITY_DLL_DECL boss_jindoAI : public ScriptedAI { boss_jindoAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; @@ -168,7 +168,7 @@ struct TRINITY_DLL_DECL mob_healing_wardAI : public ScriptedAI { mob_healing_wardAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 Heal_Timer; @@ -207,7 +207,7 @@ struct TRINITY_DLL_DECL mob_shade_of_jindoAI : public ScriptedAI { mob_shade_of_jindoAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 ShadowShock_Timer; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp index 3c10e16dde7..e2c3f306e8b 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp @@ -46,7 +46,7 @@ struct TRINITY_DLL_DECL boss_mandokirAI : public ScriptedAI { boss_mandokirAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 KillCount; @@ -270,7 +270,7 @@ struct TRINITY_DLL_DECL mob_ohganAI : public ScriptedAI { mob_ohganAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 SunderArmor_Timer; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp index e77f08bbc39..ff5785418fc 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp @@ -42,7 +42,7 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI { boss_marliAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp index 23fe5901be9..76d3d5268e9 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp @@ -54,7 +54,7 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI { boss_thekalAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 MortalCleave_Timer; @@ -241,7 +241,7 @@ struct TRINITY_DLL_DECL mob_zealot_lorkhanAI : public ScriptedAI { mob_zealot_lorkhanAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 Shield_Timer; @@ -385,7 +385,7 @@ struct TRINITY_DLL_DECL mob_zealot_zathAI : public ScriptedAI { mob_zealot_zathAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } uint32 SweepingStrikes_Timer; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp index 7c72b6f79c0..7e3629e0b91 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp @@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI { boss_venoxisAI(Creature *c) : ScriptedAI(c) { - pInstance = (c->GetInstanceData()); + pInstance = c->GetInstanceData(); } ScriptedInstance *pInstance; -- cgit v1.2.3 From 7b3d740749e873eab2480deeaaf559fc66f3be4d Mon Sep 17 00:00:00 2001 From: megamage Date: Tue, 16 Jun 2009 12:25:18 -0500 Subject: *Do not give rating if two groups from the same arena teams fight against each other. (This is a temp fix. They should not even begin the battle) --HG-- branch : trunk --- src/game/BattleGround.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 4c0c900a711..71062657c0b 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -684,7 +684,7 @@ void BattleGround::EndBattleGround(uint32 winner) { winner_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(winner)); loser_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner))); - if (winner_arena_team && loser_arena_team) + if (winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team) { loser_rating = loser_arena_team->GetStats().rating; winner_rating = winner_arena_team->GetStats().rating; @@ -710,7 +710,7 @@ void BattleGround::EndBattleGround(uint32 winner) if (!plr) { //if rated arena match - make member lost! - if (isArena() && isRated() && winner_arena_team && loser_arena_team) + if (isArena() && isRated() && winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team) { if (team == winner) winner_arena_team->OfflineMemberLost(itr->first, loser_rating); @@ -735,7 +735,7 @@ void BattleGround::EndBattleGround(uint32 winner) //if(!team) team = plr->GetTeam(); // per player calculation - if (isArena() && isRated() && winner_arena_team && loser_arena_team) + if (isArena() && isRated() && winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team) { if (team == winner) { @@ -776,7 +776,7 @@ void BattleGround::EndBattleGround(uint32 winner) plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, 1); } - if (isArena() && isRated() && winner_arena_team && loser_arena_team) + if (isArena() && isRated() && winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team) { // update arena points only after increasing the player's match count! //obsolete: winner_arena_team->UpdateArenaPointsHelper(); @@ -1011,7 +1011,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac //left a rated match while the encounter was in progress, consider as loser ArenaTeam * winner_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(team))); ArenaTeam * loser_arena_team = objmgr.GetArenaTeamById(GetArenaTeamIdForTeam(team)); - if (winner_arena_team && loser_arena_team) + if (winner_arena_team && loser_arena_team && winner_arena_team != loser_arena_team) loser_arena_team->MemberLost(plr,winner_arena_team->GetRating()); } } -- cgit v1.2.3 From ab06dcc442dffeaf21478b49d6a4d0ba9d9d1f9c Mon Sep 17 00:00:00 2001 From: QAston Date: Tue, 16 Jun 2009 22:46:17 +0200 Subject: "*Fix Kindred Spirits. *Fix typo causing auras SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR to modify ap with too big amount. --HG-- branch : trunk --- sql/updates/4081_world.sql | 15 +++++++++++++++ sql/world.sql | 7 ++++++- sql/world_spell_full.sql | 5 +++++ src/game/StatSystem.cpp | 2 +- src/game/Unit.cpp | 6 ++++++ 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 sql/updates/4081_world.sql (limited to 'src') diff --git a/sql/updates/4081_world.sql b/sql/updates/4081_world.sql new file mode 100644 index 00000000000..4eb5898681a --- /dev/null +++ b/sql/updates/4081_world.sql @@ -0,0 +1,15 @@ +DELETE FROM `spell_pet_auras` WHERE `spell` IN(56314, 56315, 56316, 56317, 56318); +INSERT INTO `spell_pet_auras` VALUES +(56314,0,57447), +(56315,0,57482), +(56316,0,57453), +(56317,0,57457), +(56318,0,57458); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN(57447, 57482, 57453, 57457, 57458); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(57447,57485,2,'Kindred Spirits'), +(57482,57484,2,'Kindred Spirits'), +(57453,57483,2,'Kindred Spirits'), +(57457,57482,2,'Kindred Spirits'), +(57458,57475,2,'Kindred Spirits'); \ No newline at end of file diff --git a/sql/world.sql b/sql/world.sql index 9915e83dc2a..5af5d424e8d 100644 --- a/sql/world.sql +++ b/sql/world.sql @@ -14318,7 +14318,12 @@ INSERT INTO `spell_pet_auras` VALUES (23822,17252,35703), (23823,17252,35704), (23824,17252,35705), -(23825,17252,35706); +(23825,17252,35706), +(56314,0,57447), +(56315,0,57482), +(56316,0,57453), +(56317,0,57457), +(56318,0,57458); /*!40000 ALTER TABLE `spell_pet_auras` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index e0483161553..06188c6b934 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -74,6 +74,11 @@ INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comm ( -52610, -62071, 0, 'Savage Roar'), (51209, 55095, 1, 'Hungering cold - frost fever'), (50334, 58923, 2, 'Berserk - modify target number aura'), +(57447,57485,2,'Kindred Spirits'), +(57482,57484,2,'Kindred Spirits'), +(57453,57483,2,'Kindred Spirits'), +(57457,57482,2,'Kindred Spirits'), +(57458,57475,2,'Kindred Spirits'), -- Creature ( 36574, 36650, 0, 'Apply Phase Slip Vulnerability'), diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index 7a0b6f285eb..8287ed2b2bf 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -378,7 +378,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged ) AuraEffectList const& mAPbyArmor = GetAurasByType(SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR); for(AuraEffectList::const_iterator iter = mAPbyArmor.begin(); iter != mAPbyArmor.end(); ++iter) // always: ((*i)->GetModifier()->m_miscvalue == 1 == SPELL_SCHOOL_MASK_NORMAL) - attPowerMod += int32(GetArmor() / (*iter)->GetMiscValue()); + attPowerMod += int32(GetArmor() / (*iter)->GetAmount()); } float attPowerMultiplier = GetModifierValue(unitMod, TOTAL_PCT) - 1.0f; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4cef59a9037..e12b7ecd7ca 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -13340,6 +13340,12 @@ void Unit::AddPetAura(PetAura const* petSpell) if(GetTypeId() != TYPEID_PLAYER) return; + // Aura already added - not need to add it twice + // This check is to prevent existing pet having aura applied twice (passive auras can stack) + // if aura has more than 1 dummy effect + if (m_petAuras.find(petSpell)!= m_petAuras.end()) + return; + m_petAuras.insert(petSpell); if(Pet* pet = ((Player*)this)->GetPet()) pet->CastPetAura(petSpell); -- cgit v1.2.3 From d906ea05d6deefadb150d21ff80f0d74657515a8 Mon Sep 17 00:00:00 2001 From: megamage Date: Tue, 16 Jun 2009 17:58:44 -0500 Subject: *Add a crashlog before an assert. --HG-- branch : trunk --- src/game/Object.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 0e7eed9bff0..1afd3ac3ae7 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -87,11 +87,15 @@ Object::~Object( ) if(IsInWorld()) { - sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d deleted but still in world!!", GetGUID(), GetTypeId()); + sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d, entry=%u deleted but still in world!!", GetGUID(), GetTypeId(), GetEntry()); assert(false); } - assert(!m_objectUpdated); + if(m_objectUpdated) + { + sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d, entry=%u deleted but still in update list!!", GetGUID(), GetTypeId(), GetEntry()); + assert(false); + } if(m_uint32Values) { -- cgit v1.2.3 From 9bb07ab5a9725ccc002540300c6caddf969daef7 Mon Sep 17 00:00:00 2001 From: QAston Date: Wed, 17 Jun 2009 01:12:40 +0200 Subject: *Use amount check instead of positivity check for aura effects. *Fix Overkill and Master of subtlety. --HG-- branch : trunk --- src/game/SpellAuras.cpp | 10 +++++----- src/game/SpellMgr.cpp | 10 +++++++--- src/game/Unit.cpp | 24 +++++++++++------------- 3 files changed, 23 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 520d1bd87ef..d55510b47ff 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -960,7 +960,7 @@ void Aura::SendAuraUpdate() data << uint32(GetId()); data << uint8(m_auraFlags); data << uint8(m_auraLevel); - data << uint8(m_stackAmount > 1 ? (m_procCharges > 1 ? m_stackAmount * m_procCharges : m_stackAmount) : m_procCharges); + data << uint8(m_stackAmount > 1 ? m_stackAmount : m_procCharges); if(!(m_auraFlags & AFLAG_CASTER)) { @@ -4804,7 +4804,7 @@ void AuraEffect::HandleAuraModResistance(bool apply, bool Real, bool /*changeAmo { m_target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), TOTAL_VALUE, float(m_amount), apply); if(m_target->GetTypeId() == TYPEID_PLAYER || ((Creature*)m_target)->isPet()) - m_target->ApplyResistanceBuffModsMod(SpellSchools(x),GetParentAura()->IsPositive(),m_amount, apply); + m_target->ApplyResistanceBuffModsMod(SpellSchools(x),m_amount > 0,m_amount, apply); } } @@ -5441,7 +5441,7 @@ void AuraEffect::HandleModDamageDone(bool apply, bool Real, bool changeAmount) if(m_target->GetTypeId() == TYPEID_PLAYER) { - if(GetParentAura()->IsPositive()) + if(m_amount > 0) m_target->ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS,m_amount,apply); else m_target->ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG,m_amount,apply); @@ -5465,7 +5465,7 @@ void AuraEffect::HandleModDamageDone(bool apply, bool Real, bool changeAmount) // This information for client side use only if(m_target->GetTypeId() == TYPEID_PLAYER) { - if(GetParentAura()->IsPositive()) + if(m_amount > 0) { for(int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; i++) { @@ -5488,7 +5488,7 @@ void AuraEffect::HandleModDamageDone(bool apply, bool Real, bool changeAmount) void AuraEffect::HandleModDamagePercentDone(bool apply, bool Real, bool changeAmount) { - sLog.outDebug("AURA MOD DAMAGE type:%u negative:%u", GetMiscValue(), GetParentAura()->IsPositive() ? 0 : 1); + sLog.outDebug("AURA MOD DAMAGE type:%u negative:%u", GetMiscValue(), m_amount > 0); // apply item specific bonuses for already equipped weapon if((Real || changeAmount) && m_target->GetTypeId()==TYPEID_PLAYER) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index a522d8c051a..3f2d9204750 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -597,6 +597,13 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) break; } + // Special case: effects which determine positivity of whole spell + for (uint8 i = 0;iEffectApplyAuraName[i] == SPELL_AURA_MOD_STEALTH) + return true; + } + switch(spellproto->Effect[effIndex]) { // always positive effects (check before target checks that provided non-positive result in some case for positive effects) @@ -1349,9 +1356,6 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr // Exist req for PROC_EX_EX_TRIGGER_ALWAYS if ((procExtra & AURA_SPELL_PROC_EX_MASK) && (procEvent_procEx & PROC_EX_EX_TRIGGER_ALWAYS)) return true; - // Passive spells can`t trigger if need hit - if ((procEvent_procEx & PROC_EX_NORMAL_HIT)) - return false; // Check Extra Requirement like (hit/crit/miss/resist/parry/dodge/block/immune/reflect/absorb and other) if (procEvent_procEx & procExtra) return true; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e12b7ecd7ca..037c00fcff2 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4915,6 +4915,17 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger } return false; } + // Overkill + case 58426: + { + if (procEx & AURA_REMOVE_PROC_EX_MASK) + triggered_spell_id = 58428; + else + { + triggered_spell_id = 58427; + } + break; + } // Eye for an Eye case 9799: case 25988: @@ -5033,18 +5044,6 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger triggered_spell_id = 34650; break; } - // Overkill - case 58426: - { - if (procEx & AURA_REMOVE_PROC_EX_MASK) - triggered_spell_id = 58428; - else - { - basepoints0 = -triggerAmount; - triggered_spell_id = 58427; - } - break; - } // Mark of Malice case 33493: { @@ -13486,7 +13485,6 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura * aura, SpellEntry co { modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_CHANCE_OF_SUCCESS,chance); } - return roll_chance_f(chance); } -- cgit v1.2.3 From eba1debc3e3591f5905574e7a5081e5e0c987b12 Mon Sep 17 00:00:00 2001 From: Kudlaty Date: Wed, 17 Jun 2009 02:02:38 +0200 Subject: Merge [SD2] r1016 Restore build and simplify code. --HG-- branch : trunk --- .../scripts/zone/black_temple/boss_illidan.cpp | 9 ++++---- .../scripts/zone/black_temple/boss_supremus.cpp | 2 +- .../zone/blackrock_depths/blackrock_depths.cpp | 2 +- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 6 ++---- .../steam_vault/instance_steam_vault.cpp | 8 ++++---- .../eastern_plaguelands/the_scarlet_enclave.cpp | 3 +-- .../scripts/zone/gruuls_lair/boss_gruul.cpp | 3 +-- .../blood_furnace/boss_broggok.cpp | 2 +- .../blood_furnace/boss_kelidan_the_breaker.cpp | 2 +- .../blood_furnace/boss_the_maker.cpp | 2 +- .../instance_hellfire_ramparts.cpp | 2 +- .../shattered_halls/boss_nethekurse.cpp | 2 +- .../scripts/zone/karazhan/boss_nightbane.cpp | 4 ++-- .../zone/karazhan/boss_prince_malchezaar.cpp | 15 +++----------- .../scripts/zone/karazhan/boss_shade_of_aran.cpp | 8 ++++---- .../scripts/scripts/zone/karazhan/bosses_opera.cpp | 24 +++++++++++----------- .../scripts/scripts/zone/karazhan/karazhan.cpp | 10 ++++----- .../magisters_terrace/boss_felblood_kaelthas.cpp | 17 +++++++-------- .../magisters_terrace/boss_priestess_delrissa.cpp | 2 +- .../magisters_terrace/boss_selin_fireheart.cpp | 12 ++++------- .../zone/magisters_terrace/boss_vexallus.cpp | 2 +- .../razorfen_kraul/instance_razorfen_kraul.cpp | 2 +- .../zone/stratholme/instance_stratholme.cpp | 6 ++---- .../scripts/zone/sunwell_plateau/boss_kalecgos.cpp | 12 +++++------ .../zone/sunwell_plateau/boss_kiljaeden.cpp | 2 +- .../zone/tempest_keep/arcatraz/arcatraz.cpp | 4 ++-- .../arcatraz/boss_harbinger_skyriss.cpp | 2 +- 27 files changed, 71 insertions(+), 94 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index d26c864145c..4c836c2036a 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -24,7 +24,7 @@ EndScriptData */ #include "precompiled.h" #include "def_black_temple.h" -#define GETGO(obj, guid) GameObject* obj = GameObject::GetGameObject(*m_creature, guid) +#define GETGO(obj, guid) GameObject* obj = pInstance->instance->GetGameObject(pInstance->GetData64(guid)) #define GETUNIT(unit, guid) Unit* unit = Unit::GetUnit(*m_creature, guid) #define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*m_creature, guid) #define HPPCT(unit) unit->GetHealth()*100 / unit->GetMaxHealth() @@ -459,9 +459,8 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI for(uint8 i = DATA_GAMEOBJECT_ILLIDAN_DOOR_R; i < DATA_GAMEOBJECT_ILLIDAN_DOOR_L + 1; ++i) { - GameObject* Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(i)); - if(Door) - Door->SetGoState(GO_STATE_ACTIVE); // Open Doors + if (GameObject* pDoor = pInstance->instance->GetGameObject(pInstance->GetData64(i))) + pDoor->SetGoState(GO_STATE_ACTIVE); // Open Doors } } @@ -1630,7 +1629,7 @@ struct TRINITY_DLL_DECL cage_trap_triggerAI : public ScriptedAI DespawnTimer = 5000; if(who->HasAura(SPELL_ENRAGE)) who->RemoveAurasDueToSpell(SPELL_ENRAGE); // Dispel his enrage - //if(GameObject* CageTrap = GameObject::GetGameObject(*m_creature, CageTrapGUID)) + //if(GameObject* CageTrap = pInstance->instance->GetGameObject(pInstance->GetData64(CageTrapGUID))) // CageTrap->SetLootState(GO_JUST_DEACTIVATED); } } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index 9d240f26b7a..c8a48fe63ce 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -105,7 +105,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI void ToggleDoors(bool close) { - if(GameObject* Doors = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GAMEOBJECT_SUPREMUS_DOORS))) + if(GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_SUPREMUS_DOORS))) { if(close) Doors->SetGoState(GO_STATE_READY); // Closed else Doors->SetGoState(GO_STATE_ACTIVE); // Open diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp index 571f3bf7e7b..6209da759e5 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp @@ -1098,7 +1098,7 @@ struct TRINITY_DLL_DECL npc_rocknotAI : public npc_escortAI void DoGo(uint32 id, uint32 state) { - if (GameObject *go = GameObject::GetGameObject(*m_creature,pInstance->GetData64(id))) + if (GameObject *go = pInstance->instance->GetGameObject(pInstance->GetData64(id))) go->SetGoState((GOState)state); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index a6ac3068808..92ca93dcc2c 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -728,8 +728,7 @@ void hyjalAI::DeSpawnVeins() if(!ai)return; for (uint8 i = 0; i<7; i++) { - GameObject* gem = GameObject::GetGameObject((*m_creature), ai->VeinGUID[i]); - if(gem) + if (GameObject* gem = pInstance->instance->GetGameObject(pInstance->GetData64(ai->VeinGUID[i]))) gem->RemoveFromWorld(); } }else if (Faction) @@ -740,8 +739,7 @@ void hyjalAI::DeSpawnVeins() if(!ai)return; for (uint8 i = 7; i<14; i++) { - GameObject* gem = GameObject::GetGameObject((*m_creature), ai->VeinGUID[i]); - if(gem) + if(GameObject* gem = pInstance->instance->GetGameObject(pInstance->GetData64(ai->VeinGUID[i]))) gem->RemoveFromWorld(); } } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp index b2a58ef7ed1..9f0cb4a7d4c 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp @@ -140,12 +140,12 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance case TYPE_HYDROMANCER_THESPIA: if (data == SPECIAL) { - if (GameObject *_go = GameObject::GetGameObject(*player,AccessPanelHydro)) + if (GameObject *_go = instance->GetGameObject(AccessPanelHydro)) _go->SetGoState(GO_STATE_ACTIVE); if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL) { - if (GameObject *_go = GameObject::GetGameObject(*player,MainChambersDoor)) + if (GameObject *_go = instance->GetGameObject(MainChambersDoor)) _go->SetGoState(GO_STATE_ACTIVE); } debug_log("TSCR: Instance Steamvault: Access panel used."); @@ -155,12 +155,12 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance case TYPE_MEKGINEER_STEAMRIGGER: if (data == SPECIAL) { - if (GameObject *_go = GameObject::GetGameObject(*player,AccessPanelMek)) + if (GameObject *_go = instance->GetGameObject(AccessPanelMek)) _go->SetGoState(GO_STATE_ACTIVE); if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL) { - if (GameObject *_go = GameObject::GetGameObject(*player,MainChambersDoor)) + if (GameObject *_go = instance->GetGameObject(MainChambersDoor)) _go->SetGoState(GO_STATE_ACTIVE); } debug_log("TSCR: Instance Steamvault: Access panel used."); diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp index 56ac5c83d03..066c401049f 100644 --- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp +++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp @@ -281,8 +281,7 @@ void npc_unworthy_initiateAI::UpdateAI(const uint32 diff) Creature* trigger = m_creature->SummonCreature(29521,x,y,z,0,TEMPSUMMON_MANUAL_DESPAWN,100); if(trigger) { - GameObject* go_prison = GameObject::GetGameObject((*m_creature),nearest_prison); - if(go_prison) + if(GameObject* go_prison = GameObject::GetGameObject((*m_creature),nearest_prison)) go_prison->ResetDoorOrButton(); CAST_AI(npc_unworthy_initiate_anchorAI, trigger->AI())->SetTarget(m_creature->GetGUID()); diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp index 4fa46cabaec..9dea3d1533d 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp @@ -111,8 +111,7 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI { pInstance->SetData(DATA_GRUULEVENT, DONE); - GameObject* EncounterDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GRUULDOOR)); - if (EncounterDoor) + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GRUULDOOR))) EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door } } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp index 8b482ceeb77..7e227620b02 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp @@ -111,7 +111,7 @@ struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI { if (pInstance) { - if (GameObject* Doors = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DOOR))) + if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR))) { if (close == 1) Doors->SetGoState(GO_STATE_READY); // Closed diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp index f597f630660..30fb505b30c 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp @@ -261,7 +261,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI { if (pInstance) { - if (GameObject* Doors = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DOOR))) + if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR))) { if (close == 1) Doors->SetGoState(GO_STATE_READY); // Closed diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp index a7affa739ea..b91f071dc5d 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp @@ -139,7 +139,7 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI { if (pInstance) { - if (GameObject* Doors = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DOOR))) + if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR))) { if (close == 1) Doors->SetGoState(GO_STATE_READY); // Closed diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp index c106924d5b7..4061b2b3b65 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp @@ -79,7 +79,7 @@ struct TRINITY_DLL_DECL instance_ramparts : public ScriptedInstance else uiChest = m_uiChestNGUID; - if (GameObject* pGo = GameObject::GetGameObject(*pPlayer,uiChest)) + if (GameObject* pGo = instance->GetGameObject(uiChest)) { if (pGo->isSpawned()) return; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp index d3930696251..ba59dbfe03a 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp @@ -235,7 +235,7 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI if (pInstance->GetData64(DATA_NETHEKURSE_DOOR)) { - if (GameObject *Door = GameObject::GetGameObject(*m_creature,pInstance->GetData64(DATA_NETHEKURSE_DOOR))) + if (GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_NETHEKURSE_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); } } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp index 962e43d3eae..45f79215409 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp @@ -138,9 +138,9 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI void HandleTerraceDoors(bool open) { - if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1))) + if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1))) Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY); - if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2))) + if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2))) Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY); } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp index 4e5b79f655c..4775ed79a70 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp @@ -208,11 +208,8 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI if(pInstance) { - GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)); - if(Door) - { + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); - } } } @@ -240,11 +237,8 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI if(pInstance) { - GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)); - if(Door) - { + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); - } } } @@ -254,11 +248,8 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI if(pInstance) { - GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)); - if(Door) - { + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR))) Door->SetGoState(GO_STATE_READY); - } } } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp index 599aac40a47..4f739520c8e 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp @@ -142,7 +142,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI // Not in progress pInstance->SetData(DATA_SHADEOFARAN_EVENT, NOT_STARTED); - if(GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); } } @@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI { pInstance->SetData(DATA_SHADEOFARAN_EVENT, DONE); - if(GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); } } @@ -181,7 +181,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI if(pInstance) { pInstance->SetData(DATA_SHADEOFARAN_EVENT, IN_PROGRESS); - if(GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) Door->SetGoState(GO_STATE_READY); } } @@ -232,7 +232,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI { if(pInstance) { - if(GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) + if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR))) Door->SetGoState(GO_STATE_READY); CloseDoorTimer = 0; } diff --git a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp index ba7142b0bd5..87eb787c095 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp @@ -573,11 +573,11 @@ struct TRINITY_DLL_DECL boss_croneAI : public ScriptedAI { pInstance->SetData(DATA_OPERA_EVENT, DONE); - if (GameObject* lDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) lDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* rDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) + if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) rDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* pSideEntrance = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) + if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); } } @@ -768,11 +768,11 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI { pInstance->SetData(DATA_OPERA_EVENT, DONE); - if (GameObject* lDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) lDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* rDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) + if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) rDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* pSideEntrance = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) + if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); } } @@ -1015,11 +1015,11 @@ struct TRINITY_DLL_DECL boss_julianneAI : public ScriptedAI { pInstance->SetData(DATA_OPERA_EVENT, DONE); - if (GameObject* lDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) lDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* rDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) + if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) rDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* pSideEntrance = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) + if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); } } @@ -1104,11 +1104,11 @@ struct TRINITY_DLL_DECL boss_romuloAI : public ScriptedAI { pInstance->SetData(DATA_OPERA_EVENT, DONE); - if (GameObject* lDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) lDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* rDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) + if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT))) rDoor->SetGoState(GO_STATE_ACTIVE); - if (GameObject* pSideEntrance = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) + if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR))) pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); } } diff --git a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp index 189c75da638..34786712948 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp @@ -148,10 +148,10 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI Event = pInstance->GetData(DATA_OPERA_PERFORMANCE); - if (GameObject* Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) Door->SetGoState(GO_STATE_READY); - if (GameObject* Curtain = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS))) + if (GameObject* Curtain = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS))) Curtain->SetGoState(GO_STATE_READY); } } @@ -180,7 +180,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI case 5: if(pInstance) { - if (GameObject* Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) Door->SetGoState(GO_STATE_READY); } IsBeingEscorted = false; @@ -261,7 +261,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI if(!pInstance) return; - if (GameObject* Curtain = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS))) + if (GameObject* Curtain = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS))) Curtain->SetGoState(GO_STATE_ACTIVE); CurtainTimer = 0; @@ -315,7 +315,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI pInstance->SetData(DATA_OPERA_EVENT, IN_PROGRESS); - if (GameObject* Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT))) Door->SetGoState(GO_STATE_ACTIVE); m_creature->CastSpell(m_creature, SPELL_TUXEDO, true); diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp index 11e78865550..692f93a91a0 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp @@ -130,8 +130,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI if (pInstance) pInstance->SetData(DATA_KAELTHAS_EVENT, 0); - GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_KAEL_DOOR)); - if (Door) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here) // Small door opened after event are expected to be closed by default } @@ -139,8 +138,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI void JustDied(Unit *killer) { DoScriptText(SAY_DEATH, m_creature); - GameObject* EncounterDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_KAEL_DOOR)); - if (EncounterDoor) + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door } @@ -154,8 +152,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI { if (pInstance) { - GameObject* EncounterDoor = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_KAEL_DOOR)); - if (EncounterDoor) + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) EncounterDoor->SetGoState(GO_STATE_READY); //Close the encounter door, open it in JustDied/Reset } } @@ -347,10 +344,10 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI if (pInstance) { - GameObject* KaelLeft = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_KAEL_STATUE_LEFT)); - if (KaelLeft) KaelLeft->SetGoState(GO_STATE_ACTIVE); - GameObject* KaelRight = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_KAEL_STATUE_RIGHT)); - if (KaelRight) KaelRight->SetGoState(GO_STATE_ACTIVE); + if (GameObject* KaelLeft = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_STATUE_LEFT))) + KaelLeft->SetGoState(GO_STATE_ACTIVE); + if (GameObject* KaelRight = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_STATUE_RIGHT))) + KaelRight->SetGoState(GO_STATE_ACTIVE); } }else { diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp index 709b6031aba..2a7187442cf 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp @@ -231,7 +231,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI pInstance->SetData(DATA_DELRISSA_EVENT, DONE); - if (GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_DELRISSA_DOOR))) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_DELRISSA_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); } diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp index a5bfa2a629b..2dcafcc2154 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp @@ -105,8 +105,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI } } - GameObject* Door = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)); - if (Door) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here) // Small door opened after event are expected to be closed by default // Set Inst data for encounter @@ -187,8 +186,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI if (pInstance) { - GameObject* EncounterDoor = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)); - if (EncounterDoor) + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR))) EncounterDoor->SetGoState(GO_STATE_READY); //Close the encounter door, open it in JustDied/Reset } } @@ -236,12 +234,10 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI pInstance->SetData(DATA_SELIN_EVENT, DONE); // Encounter complete! - GameObject* EncounterDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)); - if (EncounterDoor) + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR))) EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door - GameObject* ContinueDoor = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_SELIN_DOOR)); - if (ContinueDoor) + if (GameObject* ContinueDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_DOOR))) ContinueDoor->SetGoState(GO_STATE_ACTIVE); // Open the door leading further in ShatterRemainingCrystals(); diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp index 22e25d81e85..2465ce91e72 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp @@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI { pInstance->SetData(DATA_VEXALLUS_EVENT, DONE); - if (GameObject* Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_VEXALLUS_DOOR))) + if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_VEXALLUS_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); } } diff --git a/src/bindings/scripts/scripts/zone/razorfen_kraul/instance_razorfen_kraul.cpp b/src/bindings/scripts/scripts/zone/razorfen_kraul/instance_razorfen_kraul.cpp index 93e8ce711bf..679358c6ceb 100644 --- a/src/bindings/scripts/scripts/zone/razorfen_kraul/instance_razorfen_kraul.cpp +++ b/src/bindings/scripts/scripts/zone/razorfen_kraul/instance_razorfen_kraul.cpp @@ -76,7 +76,7 @@ struct TRINITY_DLL_DECL instance_razorfen_kraul : public ScriptedInstance return; } - if (GameObject *go = GameObject::GetGameObject(*player,guid)) + if (GameObject *go = instance->GetGameObject(guid)) go->SetGoState(GOState(state)); } diff --git a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp index 71d9b66aa4c..918fec913b5 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp @@ -136,12 +136,10 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance //if withRestoreTime true, then newState will be ignored and GO should be restored to original state after 10 seconds void UpdateGoState(uint64 goGuid, uint32 newState, bool withRestoreTime) { - Player *player = GetPlayerInMap(); - - if (!player || !goGuid) + if (!goGuid) return; - if (GameObject *go = GameObject::GetGameObject(*player, goGuid)) + if (GameObject *go = instance->GetGameObject(goGuid)) { if (withRestoreTime) go->UseDoorOrButton(10); diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp index a97115f826e..8033148d4cd 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp @@ -136,8 +136,8 @@ struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI Unit *Sath = Unit::GetUnit(*m_creature,SathGUID); if(Sath) CAST_CRE(Sath)->AI()->EnterEvadeMode(); - GameObject *Door = GameObject::GetGameObject(*m_creature, DoorGUID); - if(Door) Door->SetLootState(GO_JUST_DEACTIVATED); + if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DoorGUID))) + Door->SetLootState(GO_JUST_DEACTIVATED); m_creature->setFaction(14); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); @@ -169,8 +169,8 @@ struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI { m_creature->SetStandState(UNIT_STAND_STATE_STAND); DoScriptText(SAY_EVIL_AGGRO, m_creature); - GameObject *Door = GameObject::GetGameObject(*m_creature, DoorGUID); - if(Door) Door->SetLootState(GO_ACTIVATED); + if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DoorGUID))) + Door->SetLootState(GO_ACTIVATED); DoZoneInCombat(); if(pInstance) @@ -544,8 +544,8 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff) m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); m_creature->CombatStop(); - GameObject *Door = GameObject::GetGameObject(*m_creature, DoorGUID); - if(Door) Door->SetLootState(GO_JUST_DEACTIVATED); + if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DoorGUID))) + Door->SetLootState(GO_JUST_DEACTIVATED); TalkSequence++; } if(TalkTimer <= diff) diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp index 8dbee3680a2..360ae55bd5e 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp @@ -337,7 +337,7 @@ struct TRINITY_DLL_DECL boss_kalecgos_kjAI : public ScriptedAI return; uint8 i = 0; for(std::list::iterator itr = orbList.begin(); itr != orbList.end(); ++itr, ++i){ - Orb[i] = GameObject::GetGameObject(*m_creature, (*itr)->GetGUID()); + Orb[i] = pInstance->instance->GetGameObject(pInstance->GetData64((*itr)->GetGUID())); } } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp index f26a387abc1..2be8a7fdb39 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp @@ -305,7 +305,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI if( pInstance ) { pInstance->SetData(TYPE_HARBINGERSKYRISS,IN_PROGRESS); - if (GameObject* Sphere = GameObject::GetGameObject(*m_creature,pInstance->GetData64(DATA_SPHERE_SHIELD))) + if (GameObject* Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD))) Sphere->SetGoState(GO_STATE_READY); IsRunning = true; } @@ -346,7 +346,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI case 2: DoCast(m_creature,SPELL_TARGET_ALPHA); pInstance->SetData(TYPE_WARDEN_1,IN_PROGRESS); - if (GameObject *Sphere = GameObject::GetGameObject(*m_creature,pInstance->GetData64(DATA_SPHERE_SHIELD))) + if (GameObject *Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD))) Sphere->SetGoState(GO_STATE_READY); break; case 3: diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp index 4158e6a863d..e0488bca7ce 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp @@ -162,7 +162,7 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI { case 1: DoScriptText(SAY_INTRO, m_creature); - if (GameObject* Sphere = GameObject::GetGameObject(*m_creature,pInstance->GetData64(DATA_SPHERE_SHIELD))) + if (GameObject* Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD))) Sphere->SetGoState(GO_STATE_ACTIVE); ++Intro_Phase; Intro_Timer = 25000; -- cgit v1.2.3 From 79dd0f345d8d837bfc3e0b3e01a079c71d513558 Mon Sep 17 00:00:00 2001 From: Anubisss Date: Wed, 17 Jun 2009 02:19:23 +0200 Subject: *Fix quest Custodian of Time's script by Azrael. *and use Player(with GetPlayer()) pointer instead of Unit in the script. --HG-- branch : trunk --- .../scripts/scripts/zone/tanaris/tanaris.cpp | 50 +++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp index cefca8902d3..089d4eaae4f 100644 --- a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp +++ b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp @@ -152,34 +152,34 @@ struct TRINITY_DLL_DECL npc_custodian_of_timeAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit *pTemp = Unit::GetUnit(*m_creature,PlayerGUID); - if( !pTemp ) + Player *pPlayer = Unit::GetPlayer(PlayerGUID); + if( !pPlayer ) return; switch( i ) { - case 2: DoScriptText(WHISPER_CUSTODIAN_1, m_creature, pTemp); break; - case 3: DoScriptText(WHISPER_CUSTODIAN_2, m_creature, pTemp); break; - case 4: DoScriptText(WHISPER_CUSTODIAN_3, m_creature, pTemp); break; - case 5: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pTemp); break; - case 7: DoScriptText(WHISPER_CUSTODIAN_5, m_creature, pTemp); break; - case 8: DoScriptText(WHISPER_CUSTODIAN_6, m_creature, pTemp); break; - case 9: DoScriptText(WHISPER_CUSTODIAN_7, m_creature, pTemp); break; - case 10: DoScriptText(WHISPER_CUSTODIAN_8, m_creature, pTemp); break; - case 11: DoScriptText(WHISPER_CUSTODIAN_9, m_creature, pTemp); break; - case 12: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pTemp); break; - case 15: DoScriptText(WHISPER_CUSTODIAN_10, m_creature, pTemp); break; - case 16: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pTemp); break; - case 18: DoScriptText(WHISPER_CUSTODIAN_11, m_creature, pTemp); break; - case 19: DoScriptText(WHISPER_CUSTODIAN_12, m_creature, pTemp); break; - case 20: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pTemp); break; - case 24: DoScriptText(WHISPER_CUSTODIAN_13, m_creature, pTemp); break; - case 25: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pTemp); break; - case 26: - DoScriptText(WHISPER_CUSTODIAN_14, m_creature, pTemp); - DoCast(pTemp,34883); - //below here is temporary workaround, to be removed when spell works properly - CAST_PLR(pTemp)->AreaExploredOrEventHappens(10277); + case 0: DoScriptText(WHISPER_CUSTODIAN_1, m_creature, pPlayer); break; + case 1: DoScriptText(WHISPER_CUSTODIAN_2, m_creature, pPlayer); break; + case 2: DoScriptText(WHISPER_CUSTODIAN_3, m_creature, pPlayer); break; + case 3: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pPlayer); break; + case 5: DoScriptText(WHISPER_CUSTODIAN_5, m_creature, pPlayer); break; + case 6: DoScriptText(WHISPER_CUSTODIAN_6, m_creature, pPlayer); break; + case 7: DoScriptText(WHISPER_CUSTODIAN_7, m_creature, pPlayer); break; + case 8: DoScriptText(WHISPER_CUSTODIAN_8, m_creature, pPlayer); break; + case 9: DoScriptText(WHISPER_CUSTODIAN_9, m_creature, pPlayer); break; + case 10: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pPlayer); break; + case 13: DoScriptText(WHISPER_CUSTODIAN_10, m_creature, pPlayer); break; + case 14: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pPlayer); break; + case 16: DoScriptText(WHISPER_CUSTODIAN_11, m_creature, pPlayer); break; + case 17: DoScriptText(WHISPER_CUSTODIAN_12, m_creature, pPlayer); break; + case 18: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pPlayer); break; + case 22: DoScriptText(WHISPER_CUSTODIAN_13, m_creature, pPlayer); break; + case 23: DoScriptText(WHISPER_CUSTODIAN_4, m_creature, pPlayer); break; + case 24: + DoScriptText(WHISPER_CUSTODIAN_14, m_creature, pPlayer); + DoCast(pPlayer, 34883); + // below here is temporary workaround, to be removed when spell works properly + pPlayer->AreaExploredOrEventHappens(10277); break; } } @@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL npc_custodian_of_timeAI : public npc_escortAI if( who->GetTypeId() == TYPEID_PLAYER ) { - if( CAST_PLR(who)->HasAura(34877) && CAST_PLR(who)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE ) + if( who->HasAura(34877) && CAST_PLR(who)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE ) { float Radius = 10.0; if( m_creature->IsWithinDistInMap(who, Radius) ) -- cgit v1.2.3 From 5547366ce3600189ff560521cbd2ed553d481a63 Mon Sep 17 00:00:00 2001 From: Anubisss Date: Wed, 17 Jun 2009 03:05:40 +0200 Subject: *Allow horde characters do quest Cluck! by Thraxx. --HG-- branch : trunk --- src/bindings/scripts/scripts/npc/npcs_special.cpp | 45 +++++++++-------------- 1 file changed, 18 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/npc/npcs_special.cpp b/src/bindings/scripts/scripts/npc/npcs_special.cpp index 2f9f193943d..f195d54b882 100644 --- a/src/bindings/scripts/scripts/npc/npcs_special.cpp +++ b/src/bindings/scripts/scripts/npc/npcs_special.cpp @@ -43,12 +43,11 @@ EndContentData */ # npc_chicken_cluck #########*/ -#define EMOTE_A_HELLO -1070004 -#define EMOTE_H_HELLO -1070005 -#define EMOTE_CLUCK_TEXT2 -1070006 +#define EMOTE_HELLO -1070004 +#define EMOTE_CLUCK_TEXT -1070006 #define QUEST_CLUCK 3861 -#define FACTION_FRIENDLY 84 +#define FACTION_FRIENDLY 35 #define FACTION_CHICKEN 31 struct TRINITY_DLL_DECL npc_chicken_cluckAI : public ScriptedAI @@ -60,7 +59,6 @@ struct TRINITY_DLL_DECL npc_chicken_cluckAI : public ScriptedAI void Reset() { ResetFlagTimer = 120000; - m_creature->setFaction(FACTION_CHICKEN); m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); } @@ -85,31 +83,24 @@ struct TRINITY_DLL_DECL npc_chicken_cluckAI : public ScriptedAI void ReceiveEmote( Player *player, uint32 emote ) { - if( emote == TEXTEMOTE_CHICKEN ) + switch( emote ) { - if( player->GetTeam() == ALLIANCE ) - { - if( rand()%30 == 1 ) + case TEXTEMOTE_CHICKEN: + if( player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_NONE && rand()%30 == 1 ) { - if( player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_NONE ) - { - m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - m_creature->setFaction(FACTION_FRIENDLY); - DoScriptText(EMOTE_A_HELLO, m_creature); - } + m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + m_creature->setFaction(FACTION_FRIENDLY); + DoScriptText(EMOTE_HELLO, m_creature); } - } - else - DoScriptText(EMOTE_H_HELLO,m_creature); - } - if( emote == TEXTEMOTE_CHEER && player->GetTeam() == ALLIANCE ) - { - if( player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_COMPLETE ) - { - m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - m_creature->setFaction(FACTION_FRIENDLY); - DoScriptText(EMOTE_CLUCK_TEXT2, m_creature); - } + break; + case TEXTEMOTE_CHEER: + if( player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_COMPLETE ) + { + m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + m_creature->setFaction(FACTION_FRIENDLY); + DoScriptText(EMOTE_CLUCK_TEXT, m_creature); + } + break; } } }; -- cgit v1.2.3 From 3c502513b00c7f3cb85207c61a01051425cbb9a9 Mon Sep 17 00:00:00 2001 From: Kudlaty Date: Wed, 17 Jun 2009 03:35:23 +0200 Subject: Merge [SD2] r1017 Remove no longer needed functions used in instance scripts. Some additional code cleanup. r1018 Remove redundant calls to InterruptNonMeeleSpells() and use true in CombatStop() calls instead where needed. r1019 Fixed: use correct isInFlight check for item 34475 - Skipp already implemented r1020 Restore work of three scripts after recent changes in AI about AttackedBy(), also some additional code cleanup. --HG-- branch : trunk --- src/bindings/scripts/scripts/npc/npc_escortAI.cpp | 4 +- .../shadow_labyrinth/instance_shadow_labyrinth.cpp | 17 ---- .../scripts/zone/azuremyst_isle/azuremyst_isle.cpp | 4 +- .../scripts/scripts/zone/barrens/the_barrens.cpp | 2 +- .../scripts/zone/black_temple/boss_illidan.cpp | 3 +- .../zone/black_temple/boss_shade_of_akama.cpp | 13 +-- .../blackrock_depths/instance_blackrock_depths.cpp | 25 ------ .../dark_portal/instance_dark_portal.cpp | 87 ++++++++----------- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 3 +- .../steam_vault/instance_steam_vault.cpp | 25 ------ .../instance_hellfire_ramparts.cpp | 40 +++------ .../zone/hellfire_peninsula/hellfire_peninsula.cpp | 2 +- .../scripts/scripts/zone/karazhan/bosses_opera.cpp | 4 +- .../scripts/scripts/zone/nagrand/nagrand.cpp | 13 ++- .../shadowfang_keep/instance_shadowfang_keep.cpp | 31 ++----- .../scripts/zone/stormwind/stormwind_city.cpp | 98 +++++++++++++--------- .../zone/stratholme/instance_stratholme.cpp | 72 ++++++---------- .../scripts/scripts/zone/teldrassil/teldrassil.cpp | 3 +- .../zone/terokkar_forest/terokkar_forest.cpp | 2 +- 19 files changed, 164 insertions(+), 284 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index d464a369826..681cf05e272 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -115,7 +115,7 @@ void npc_escortAI::UpdateAI(const uint32 diff) m_creature->setDeathState(JUST_DIED); m_creature->SetHealth(0); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->DeleteThreatList(); m_creature->Respawn(); m_creature->GetMotionMaster()->Clear(true); @@ -161,7 +161,7 @@ void npc_escortAI::UpdateAI(const uint32 diff) m_creature->setDeathState(JUST_DIED); m_creature->SetHealth(0); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->DeleteThreatList(); m_creature->Respawn(); m_creature->GetMotionMaster()->Clear(true); diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp index cc63d253d1b..9747159fcaf 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp @@ -92,23 +92,6 @@ struct TRINITY_DLL_DECL instance_shadow_labyrinth : public ScriptedInstance } } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - - debug_log("TSCR: Instance Shadow Labyrinth: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void SetData(uint32 type, uint32 data) { switch(type) diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index 2048961fc08..9cfbcb7f4ee 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL npc_draenei_survivorAI : public ScriptedAI m_creature->GetMotionMaster()->MoveIdle(); m_creature->setDeathState(JUST_DIED); m_creature->SetHealth(0); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->DeleteThreatList(); m_creature->RemoveCorpse(); }else RunAwayTimer -= diff; @@ -593,7 +593,7 @@ struct TRINITY_DLL_DECL npc_nestlewood_owlkinAI : public ScriptedAI m_creature->SetVisibility(VISIBILITY_OFF); m_creature->setDeathState(JUST_DIED); m_creature->SetHealth(0); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->DeleteThreatList(); m_creature->RemoveCorpse(); }else DespawnTimer -= diff; diff --git a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp index 30a9db9f29c..f1dbc48ee79 100644 --- a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp +++ b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp @@ -120,7 +120,7 @@ struct TRINITY_DLL_DECL npc_taskmaster_fizzuleAI : public ScriptedAI { m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->StopMoving(); m_creature->GetMotionMaster()->MoveIdle(); diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 4c836c2036a..a045218f00a 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -1037,10 +1037,9 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI // Do not call reset in Akama's evade mode, as this will stop him from summoning minions after he kills the first bit void EnterEvadeMode() { - m_creature->InterruptNonMeleeSpells(true); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); } void EnterCombat(Unit *who) {} diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp index 1b375f0be0f..78903b14b2a 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp @@ -257,17 +257,12 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI { Channeler->RemoveCorpse(); Channeler->Respawn(); - Channeler->InterruptNonMeleeSpells(true); - Channeler->RemoveAurasDueToSpell(SPELL_SHADE_SOUL_CHANNEL); } - if (Channeler->isAlive()) - { - Channeler->CastSpell(m_creature, SPELL_SHADE_SOUL_CHANNEL, true); - Channeler->CastSpell(m_creature, SPELL_SHADE_SOUL_CHANNEL_2, true); - Channeler->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - GridSearcherSucceeded = true; - } + Channeler->CastSpell(m_creature, SPELL_SHADE_SOUL_CHANNEL, true); + Channeler->CastSpell(m_creature, SPELL_SHADE_SOUL_CHANNEL_2, true); + Channeler->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + GridSearcherSucceeded = true; } } }else error_log("SD2 ERROR: No Channelers are stored in the list. This encounter will not work properly"); diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp index d84bd96791d..750d611b58e 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp @@ -114,23 +114,6 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance Encounter[i] = NOT_STARTED; } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - - debug_log("TSCR: Instance Blackrock Depths: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void OnCreatureCreate(Creature *creature, bool add) { switch(creature->GetEntry()) @@ -166,14 +149,6 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance void SetData(uint32 type, uint32 data) { - Player *player = GetPlayerInMap(); - - if (!player) - { - debug_log("TSCR: Instance Blackrock Depths: SetData (Type: %u Data %u) cannot find any player.", type, data); - return; - } - debug_log("TSCR: Instance Blackrock Depths: SetData update (Type: %u Data %u)", type, data); switch(type) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp index e988782ad60..58962c0c469 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp @@ -95,23 +95,6 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance NextPortal_Timer = 0; } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - - debug_log("TSCR: Instance Black Portal: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void UpdateBMWorldState(uint32 id, uint32 state) { Map::PlayerList const& players = instance->GetPlayers(); @@ -158,7 +141,7 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance //what other conditions to check? bool CanProgressEvent() { - if (!GetPlayerInMap()) + if (instance->GetPlayers().isEmpty()) return false; return true; @@ -183,14 +166,6 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance void SetData(uint32 type, uint32 data) { - Player *player = GetPlayerInMap(); - - if (!player) - { - debug_log("TSCR: Instance Black Portal: SetData (Type: %u Data %u) cannot find any player.", type, data); - return; - } - switch(type) { case TYPE_MEDIVH: @@ -201,11 +176,11 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance if (!mShieldPercent) { - if (Unit *medivh = Unit::GetUnit(*player,MedivhGUID)) + if (Creature* pMedivh = instance->GetCreature(MedivhGUID)) { - if (medivh->isAlive()) + if (pMedivh->isAlive()) { - medivh->DealDamage(medivh, medivh->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + pMedivh->DealDamage(pMedivh, pMedivh->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); Encounter[0] = FAIL; Encounter[1] = NOT_STARTED; } @@ -225,11 +200,22 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance if (data == DONE) { //this may be completed further out in the post-event - if (Unit *medivh = Unit::GetUnit(*player,MedivhGUID)) + debug_log("TSCR: Instance Dark Portal: Event completed."); + Map::PlayerList const& players = instance->GetPlayers(); + + if (!players.isEmpty()) { - debug_log("TSCR: Instance Dark Portal: Event completed."); - player->GroupEventHappens(QUEST_OPENING_PORTAL,medivh); - player->GroupEventHappens(QUEST_MASTER_TOUCH,medivh); + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + { + 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); + } + } } } @@ -272,24 +258,25 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance return 0; } - Unit* SummonedPortalBoss(Unit* source) + Creature* SummonedPortalBoss(Creature* pSource) { uint32 entry = RiftWaves[GetRiftWaveId()].PortalBoss; + if (entry == RIFT_BOSS) entry = RandRiftBoss(); float x,y,z; - source->GetRandomPoint(source->GetPositionX(),source->GetPositionY(),source->GetPositionZ(),10.0f,x,y,z); + pSource->GetRandomPoint(pSource->GetPositionX(),pSource->GetPositionY(),pSource->GetPositionZ(),10.0f,x,y,z); //normalize Z-level if we can, if rift is not at ground level. z = std::max(instance->GetHeight(x, y, MAX_HEIGHT), instance->GetWaterLevel(x, y)); debug_log("TSCR: Instance Dark Portal: Summoning rift boss entry %u.",entry); - Unit *Summon = source->SummonCreature(entry,x,y,z,source->GetOrientation(), + Creature* pSummoned = pSource->SummonCreature(entry,x,y,z,pSource->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); - if (Summon) - return Summon; + if (pSummoned) + return pSummoned; debug_log("TSCR: Instance Dark Portal: what just happened there? No boss, no loot, no fun..."); return NULL; @@ -297,11 +284,7 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance void DoSpawnPortal() { - Player *player = GetPlayerInMap(); - if (!player) - return; - - if (Unit *medivh = Unit::GetUnit(*player,MedivhGUID)) + if (Creature* pMedivh = instance->GetCreature(MedivhGUID)) { int tmp = rand()%(4-1); @@ -311,26 +294,26 @@ struct TRINITY_DLL_DECL instance_dark_portal : public ScriptedInstance CurrentRiftId = tmp; - Unit *temp = medivh->SummonCreature(C_TIME_RIFT, + Creature* pTemp = pMedivh->SummonCreature(C_TIME_RIFT, PortalLocation[tmp][0],PortalLocation[tmp][1],PortalLocation[tmp][2],PortalLocation[tmp][3], TEMPSUMMON_CORPSE_DESPAWN,0); - if (temp) + if (pTemp) { - temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - if (Unit* boss = SummonedPortalBoss(temp)) + if (Creature* pBoss = SummonedPortalBoss(pTemp)) { - if (boss->GetEntry() == C_AEONUS) + if (pBoss->GetEntry() == C_AEONUS) { - boss->AddThreat(medivh,0.0f); + pBoss->AddThreat(pMedivh,0.0f); } else { - boss->AddThreat(temp,0.0f); - temp->CastSpell(boss,SPELL_RIFT_CHANNEL,false); + pBoss->AddThreat(pTemp,0.0f); + pTemp->CastSpell(pBoss,SPELL_RIFT_CHANNEL,false); } } } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index 92ca93dcc2c..487347c1c18 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -409,11 +409,10 @@ void hyjalAI::Reset() void hyjalAI::EnterEvadeMode() { - m_creature->InterruptNonMeleeSpells(true); if(m_creature->GetEntry() != JAINA) m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->LoadCreaturesAddon(); if(m_creature->isAlive()) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp index 9f0cb4a7d4c..a35551481fa 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp @@ -88,23 +88,6 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance return false; } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - - debug_log("TSCR: Instance Steamvault: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void OnCreatureCreate(Creature *creature, bool add) { switch(creature->GetEntry()) @@ -127,14 +110,6 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance void SetData(uint32 type, uint32 data) { - Player *player = GetPlayerInMap(); - - if (!player) - { - debug_log("TSCR: Instance Steamvault: SetData (Type: %u Data %u) cannot find any player.", type, data); - return; - } - switch(type) { case TYPE_HYDROMANCER_THESPIA: diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp index 4061b2b3b65..21e88eab4c4 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp @@ -51,41 +51,21 @@ struct TRINITY_DLL_DECL instance_ramparts : public ScriptedInstance } } - Player* GetFirstPlayerInInstance() - { - Map::PlayerList const& pPlayers = instance->GetPlayers(); - - if (!pPlayers.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = pPlayers.begin(); itr != pPlayers.end(); ++itr) - { - if (Player* pPlr = itr->getSource()) - return pPlr; - } - } - - debug_log("TSCR: Instance Ramparts: GetFirstPlayerInInstance, but PlayerList is empty."); - return NULL; - } - void DoRespawnChest() { - if (Player* pPlayer = GetFirstPlayerInInstance()) - { - uint64 uiChest; + uint64 uiChest; - if (instance->IsHeroic()) - uiChest = m_uiChestHGUID; - else - uiChest = m_uiChestNGUID; + if (instance->IsHeroic()) + uiChest = m_uiChestHGUID; + else + uiChest = m_uiChestNGUID; - if (GameObject* pGo = instance->GetGameObject(uiChest)) - { - if (pGo->isSpawned()) - return; + if (GameObject* pGo = instance->GetGameObject(uiChest)) + { + if (pGo->isSpawned()) + return; - pGo->SetRespawnTime(HOUR*IN_MILISECONDS); - } + pGo->SetRespawnTime(HOUR*IN_MILISECONDS); } } diff --git a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp index a32112ed709..19046679816 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp @@ -90,7 +90,7 @@ struct TRINITY_DLL_DECL npc_aeranasAI : public ScriptedAI m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); DoScriptText(SAY_FREE, m_creature); return; } diff --git a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp index 87eb787c095..8208f320e0f 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp @@ -1161,7 +1161,7 @@ void boss_julianneAI::DamageTaken(Unit* done_by, uint32 &damage) Romulo->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Romulo->GetMotionMaster()->Clear(); Romulo->setDeathState(JUST_DIED); - Romulo->CombatStop(); + Romulo->CombatStop(true); Romulo->DeleteThreatList(); Romulo->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); } @@ -1216,7 +1216,7 @@ void boss_romuloAI::DamageTaken(Unit* done_by, uint32 &damage) Julianne->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Julianne->GetMotionMaster()->Clear(); Julianne->setDeathState(JUST_DIED); - Julianne->CombatStop(); + Julianne->CombatStop(true); Julianne->DeleteThreatList(); Julianne->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); } diff --git a/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp b/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp index 1ed6b003504..22f80983084 100644 --- a/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp +++ b/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp @@ -109,6 +109,17 @@ struct TRINITY_DLL_DECL mob_lumpAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } + void AttackedBy(Unit* pAttacker) + { + if (m_creature->getVictim()) + return; + + if (m_creature->IsFriendlyTo(pAttacker)) + return; + + AttackStart(pAttacker); + } + void DamageTaken(Unit *done_by, uint32 & damage) { if (done_by->GetTypeId() == TYPEID_PLAYER && (m_creature->GetHealth() - damage)*100 / m_creature->GetMaxHealth() < 30) @@ -122,7 +133,7 @@ struct TRINITY_DLL_DECL mob_lumpAI : public ScriptedAI m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->setFaction(1080); //friendly m_creature->SetStandState(UNIT_STAND_STATE_SIT); DoScriptText(LUMP_DEFEAT, m_creature); diff --git a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp index fb8b14c368e..c8382eaaa96 100644 --- a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp +++ b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp @@ -66,22 +66,6 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance Encounter[i] = NOT_STARTED; } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - debug_log("TSCR: Instance Shadowfang Keep: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void OnCreatureCreate(Creature* pCreature, bool add) { switch(pCreature->GetEntry()) @@ -115,18 +99,13 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance void DoSpeech() { - Player* pPlayer = GetPlayerInMap(); + Creature* pAda = instance->GetCreature(uiAdaGUID); + Creature* pAsh = instance->GetCreature(uiAshGUID); - if (pPlayer) + if (pAda && pAda->isAlive() && pAsh && pAsh->isAlive()) { - Unit* pAda = Unit::GetUnit(*pPlayer,uiAdaGUID); - Unit* pAsh = Unit::GetUnit(*pPlayer,uiAshGUID); - - if (pAda && pAda->isAlive() && pAsh && pAsh->isAlive()) - { - DoScriptText(SAY_BOSS_DIE_AD,pAda); - DoScriptText(SAY_BOSS_DIE_AS,pAsh); - } + DoScriptText(SAY_BOSS_DIE_AD,pAda); + DoScriptText(SAY_BOSS_DIE_AS,pAsh); } } diff --git a/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp b/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp index 3182a56926c..c952c1057f7 100644 --- a/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp +++ b/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp @@ -64,58 +64,67 @@ bool GossipSelect_npc_archmage_malin(Player *player, Creature *_Creature, uint32 ## npc_bartleby ######*/ +enum +{ + FACTION_ENEMY = 168, + QUEST_BEAT = 1640 +}; + struct TRINITY_DLL_DECL npc_bartlebyAI : public ScriptedAI { - npc_bartlebyAI(Creature *c) : ScriptedAI(c) {} + npc_bartlebyAI(Creature *c) : ScriptedAI(c) + { + m_uiNormalFaction = c->getFaction(); + } - uint64 PlayerGUID; + uint32 m_uiNormalFaction; void Reset() { - m_creature->setFaction(11); - - PlayerGUID = 0; + if (m_creature->getFaction() != m_uiNormalFaction) + m_creature->setFaction(m_uiNormalFaction); } - void JustDied(Unit *who) + void AttackedBy(Unit* pAttacker) { - m_creature->setFaction(11); + if (m_creature->getVictim()) + return; + + if (m_creature->IsFriendlyTo(pAttacker)) + return; + + AttackStart(pAttacker); } - void DamageTaken(Unit *done_by, uint32 & damage) + void Aggro(Unit *who) { } + + void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) { - if(damage > m_creature->GetHealth() || ((m_creature->GetHealth() - damage)*100 / m_creature->GetMaxHealth() < 15)) + if (uiDamage > m_creature->GetHealth() || ((m_creature->GetHealth() - uiDamage)*100 / m_creature->GetMaxHealth() < 15)) { //Take 0 damage - damage = 0; - - if (done_by->GetTypeId() == TYPEID_PLAYER && done_by->GetGUID() == PlayerGUID) - { - CAST_PLR(done_by)->AttackStop(); - CAST_PLR(done_by)->AreaExploredOrEventHappens(1640); - } - m_creature->CombatStop(); + uiDamage = 0; + + if (pDoneBy->GetTypeId() == TYPEID_PLAYER) + ((Player*)pDoneBy)->AreaExploredOrEventHappens(QUEST_BEAT); EnterEvadeMode(); } } - - void EnterCombat(Unit *who) {} }; -bool QuestAccept_npc_bartleby(Player *player, Creature *_Creature, Quest const *_Quest) +bool QuestAccept_npc_bartleby(Player* pPlayer, Creature* pCreature, Quest const* pQuest) { - if(_Quest->GetQuestId() == 1640) + if (pQuest->GetQuestId() == QUEST_BEAT) { - _Creature->setFaction(168); - CAST_AI(npc_bartlebyAI, _Creature->AI())->PlayerGUID = player->GetGUID(); - CAST_AI(npc_bartlebyAI, _Creature->AI())->AttackStart(player); + pCreature->setFaction(FACTION_ENEMY); + ((npc_bartlebyAI*)pCreature->AI())->AttackStart(pPlayer); } return true; } -CreatureAI* GetAI_npc_bartleby(Creature *_creature) +CreatureAI* GetAI_npc_bartleby(Creature* pCreature) { - return new npc_bartlebyAI(_creature); + return new npc_bartlebyAI(pCreature); } /*###### @@ -130,31 +139,44 @@ enum struct TRINITY_DLL_DECL npc_dashel_stonefistAI : public ScriptedAI { - npc_dashel_stonefistAI(Creature *c) : ScriptedAI(c) { uiNormFaction = c->getFaction(); } + npc_dashel_stonefistAI(Creature *c) : ScriptedAI(c) + { + m_uiNormalFaction = c->getFaction(); + } - uint32 uiNormFaction; + uint32 m_uiNormalFaction; void Reset() { - m_creature->setFaction(uiNormFaction); + if (m_creature->getFaction() != m_uiNormalFaction) + m_creature->setFaction(m_uiNormalFaction); } - void DamageTaken(Unit *done_by, uint32 & damage) + void AttackedBy(Unit* pAttacker) { - if ((damage > m_creature->GetHealth()) || (m_creature->GetHealth() - damage)*100 / m_creature->GetMaxHealth() < 15) + if (m_creature->getVictim()) + return; + + if (m_creature->IsFriendlyTo(pAttacker)) + return; + + AttackStart(pAttacker); + } + + void Aggro(Unit *who) {} + + void DamageTaken(Unit* pDoneBy, uint32 &uiDamage) + { + if (uiDamage > m_creature->GetHealth() || ((m_creature->GetHealth() - uiDamage)*100 / m_creature->GetMaxHealth() < 15)) { - //Take 0 damage - damage = 0; + uiDamage = 0; - if (done_by->GetTypeId() == TYPEID_PLAYER) - CAST_PLR(done_by)->AreaExploredOrEventHappens(QUEST_MISSING_DIPLO_PT8); + if (pDoneBy->GetTypeId() == TYPEID_PLAYER) + ((Player*)pDoneBy)->AreaExploredOrEventHappens(QUEST_MISSING_DIPLO_PT8); - //m_creature->CombatStop(); EnterEvadeMode(); } } - - void EnterCombat(Unit *who) {} }; bool QuestAccept_npc_dashel_stonefist(Player* pPlayer, Creature* pCreature, Quest const* pQuest) diff --git a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp index 918fec913b5..12f68359a4a 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp @@ -102,23 +102,6 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance abomnationGUID.clear(); } - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - - if (!players.isEmpty()) - { - for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* plr = itr->getSource()) - return plr; - } - } - - debug_log("TSCR: Instance Stratholme: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - bool StartSlaugtherSquare() { //change to DONE when crystals implemented @@ -183,14 +166,6 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance void SetData(uint32 type, uint32 data) { - Player *player = GetPlayerInMap(); - - if (!player) - { - debug_log("TSCR: Instance Stratholme: SetData (Type: %u Data %u) cannot find any player.", type, data); - return; - } - switch(type) { case TYPE_BARON_RUN: @@ -206,8 +181,10 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance //may add code to remove aura from players, but in theory the time should be up already and removed. break; case DONE: - if (Unit *t = Unit::GetUnit(*player, ysidaTriggerGUID)) - t->SummonCreature(C_YSIDA,t->GetPositionX(),t->GetPositionY(),t->GetPositionZ(),t->GetOrientation(),TEMPSUMMON_TIMED_DESPAWN,1800000); + if (Creature* pYsidaT = instance->GetCreature(ysidaTriggerGUID)) + pYsidaT->SummonCreature(C_YSIDA, + pYsidaT->GetPositionX(),pYsidaT->GetPositionY(),pYsidaT->GetPositionZ(),pYsidaT->GetOrientation(), + TEMPSUMMON_TIMED_DESPAWN,1800000); BaronRun_Timer = 0; break; } @@ -243,9 +220,9 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance uint32 count = abomnationGUID.size(); for(std::set::iterator i = abomnationGUID.begin(); i != abomnationGUID.end(); ++i) { - if (Unit* abom = Unit::GetUnit(*player, *i)) + if (Creature* pAbom = instance->GetCreature(*i)) { - if (!abom->isAlive()) + if (!pAbom->isAlive()) --count; } } @@ -254,9 +231,12 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance { //a bit itchy, it should close the door after 10 secs, but it doesn't. skipping it for now. //UpdateGoState(ziggurat4GUID,0,true); - player->SummonCreature(C_RAMSTEIN,4032.84,-3390.24,119.73,4.71,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000); + if (Creature* pBaron = instance->GetCreature(baronGUID)) + pBaron->SummonCreature(C_RAMSTEIN,4032.84,-3390.24,119.73,4.71,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000); debug_log("TSCR: Instance Stratholme: Ramstein spawned."); - } else debug_log("TSCR: Instance Stratholme: %u Abomnation left to kill.",count); + } + else + debug_log("TSCR: Instance Stratholme: %u Abomnation left to kill.",count); } if (data == DONE) { @@ -270,22 +250,22 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance { if (GetData(TYPE_BARON_RUN) == IN_PROGRESS) { - if (Group *pGroup = player->GetGroup()) + Map::PlayerList const& players = instance->GetPlayers(); + + if (!players.isEmpty()) { - for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next()) + for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) { - Player* pGroupie = itr->getSource(); - if (!pGroupie) - continue; - - if (pGroupie->HasAura(SPELL_BARON_ULTIMATUM)) - pGroupie->RemoveAurasDueToSpell(SPELL_BARON_ULTIMATUM); + if (Player* pPlayer = itr->getSource()) + { + if (pPlayer->HasAura(SPELL_BARON_ULTIMATUM)) + pPlayer->RemoveAurasDueToSpell(SPELL_BARON_ULTIMATUM); + + if (pPlayer->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE) + pPlayer->AreaExploredOrEventHappens(QUEST_DEAD_MAN_PLEA); + } } - } else if (player->HasAura(SPELL_BARON_ULTIMATUM)) - player->RemoveAurasDueToSpell(SPELL_BARON_ULTIMATUM); - - if (Unit *temp = Unit::GetUnit(*player,GetData64(DATA_BARON))) - player->GroupEventHappens(QUEST_DEAD_MAN_PLEA,temp); + } SetData(TYPE_BARON_RUN,DONE); } @@ -363,10 +343,10 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance { if (SlaugtherSquare_Timer <= diff) { - if (Player *p = GetPlayerInMap()) + if (Creature* pBaron = instance->GetCreature(baronGUID)) { for(uint8 i = 0; i < 4; i++) - p->SummonCreature(C_BLACK_GUARD,4032.84,-3390.24,119.73,4.71,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000); + pBaron->SummonCreature(C_BLACK_GUARD,4032.84,-3390.24,119.73,4.71,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000); UpdateGoState(ziggurat4GUID,0,false); UpdateGoState(ziggurat5GUID,0,false); diff --git a/src/bindings/scripts/scripts/zone/teldrassil/teldrassil.cpp b/src/bindings/scripts/scripts/zone/teldrassil/teldrassil.cpp index fb376795119..eff160843de 100644 --- a/src/bindings/scripts/scripts/zone/teldrassil/teldrassil.cpp +++ b/src/bindings/scripts/scripts/zone/teldrassil/teldrassil.cpp @@ -73,10 +73,9 @@ struct TRINITY_DLL_DECL npc_mistAI : public ScriptedAI void EnterEvadeMode() { - m_creature->InterruptNonMeleeSpells(true); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); m_creature->LoadCreaturesAddon(); if (m_creature->isAlive()) diff --git a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp index cf55ff0123d..e35c45b2cf0 100644 --- a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp +++ b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp @@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL mob_unkor_the_ruthlessAI : public ScriptedAI m_creature->SetStandState(UNIT_STAND_STATE_SIT); m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); - m_creature->CombatStop(); + m_creature->CombatStop(true); UnkorUnfriendly_Timer = 60000; } -- cgit v1.2.3 From e62c77fb1d4e069fff0719cca7f2c618c2b72b67 Mon Sep 17 00:00:00 2001 From: Kudlaty Date: Wed, 17 Jun 2009 07:16:40 +0200 Subject: Merge [SD2] r1021 Remove ScriptedAI boolean InCombat and use real combat state instead where check is needed. r1022 Added new ScriptedInstance function, DoUseDoorOrButton() for future use in instance scripts. r1023 Updated instance function DoUseDoorOrButton with additional variables. Remove some older code and replace to use new function. r1024 Fix typo in previous commit. - Skip r1025 Added instance script for blood furnace and make bosses set instance data. Some code cleanup - only some code cleanup --HG-- branch : trunk --- .../scripts/scripts/creature/mob_event_ai.cpp | 25 ++++---- src/bindings/scripts/scripts/custom/test.cpp | 2 +- .../sethekk_halls/instance_sethekk_halls.cpp | 18 +++--- .../shadow_labyrinth/instance_shadow_labyrinth.cpp | 20 ++++--- .../black_temple/.boss_teron_gorefiend.cpp-woains | 5 +- .../scripts/zone/black_temple/boss_supremus.cpp | 6 +- .../serpent_shrine/boss_lady_vashj.cpp | 11 ++-- .../blood_furnace/boss_broggok.cpp | 19 ++++--- .../blood_furnace/boss_kelidan_the_breaker.cpp | 66 ++++++++++++---------- .../blood_furnace/boss_the_maker.cpp | 26 +++++---- .../instance_magtheridons_lair.cpp | 2 +- .../zone/naxxramas/boss_highlord_mograine.cpp | 2 +- .../shadowfang_keep/instance_shadowfang_keep.cpp | 12 ++-- .../zone/stratholme/instance_stratholme.cpp | 12 ++-- .../zone/sunwell_plateau/boss_eredar_twins.cpp | 12 +--- .../scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp | 1 - .../scripts/zone/uldaman/boss_archaedas.cpp | 6 -- src/game/InstanceData.cpp | 37 ++++++++++++ src/game/InstanceData.h | 6 ++ 19 files changed, 161 insertions(+), 127 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp index d43b863300d..e59c50e1311 100644 --- a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp +++ b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp @@ -128,7 +128,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI { case EVENT_T_TIMER: { - if (!InCombat) + if (!m_creature->isInCombat()) return false; //Repeat Timers @@ -148,7 +148,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_TIMER_OOC: { - if (InCombat) + if (m_creature->isInCombat()) return false; //Repeat Timers @@ -168,7 +168,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_HP: { - if (!InCombat || !m_creature->GetMaxHealth()) + if (!m_creature->isInCombat() || !m_creature->GetMaxHealth()) return false; uint32 perc = (m_creature->GetHealth()*100) / m_creature->GetMaxHealth(); @@ -193,7 +193,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_MANA: { - if (!InCombat || !m_creature->GetMaxPower(POWER_MANA)) + if (!m_creature->isInCombat() || !m_creature->GetMaxPower(POWER_MANA)) return false; uint32 perc = (m_creature->GetPower(POWER_MANA)*100) / m_creature->GetMaxPower(POWER_MANA); @@ -303,7 +303,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_TARGET_HP: { - if (!InCombat || !m_creature->getVictim() || !m_creature->getVictim()->GetMaxHealth()) + if (!m_creature->isInCombat() || !m_creature->getVictim() || !m_creature->getVictim()->GetMaxHealth()) return false; uint32 perc = (m_creature->getVictim()->GetHealth()*100) / m_creature->getVictim()->GetMaxHealth(); @@ -328,7 +328,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_TARGET_CASTING: { - if (!InCombat || !m_creature->getVictim() || !m_creature->getVictim()->IsNonMeleeSpellCasted(false, false, true)) + if (!m_creature->isInCombat() || !m_creature->getVictim() || !m_creature->getVictim()->IsNonMeleeSpellCasted(false, false, true)) return false; //Repeat Timers @@ -348,7 +348,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_FRIENDLY_HP: { - if (!InCombat) + if (!m_creature->isInCombat()) return false; Unit* pUnit = DoSelectLowestHpFriendly(param2, param1); @@ -375,7 +375,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI break; case EVENT_T_FRIENDLY_IS_CC: { - if (!InCombat) + if (!m_creature->isInCombat()) return false; std::list pList = DoFindFriendlyCC(param2); @@ -1030,7 +1030,6 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI void JustRespawned() { - InCombat = false; IsFleeing = false; Reset(); @@ -1110,7 +1109,6 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI void JustDied(Unit* killer) { - InCombat = false; IsFleeing = false; Reset(); @@ -1207,9 +1205,8 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI { //Begin melee attack if we are within range - if (!InCombat) + if (!m_creature->isInCombat()) { - InCombat = true; Aggro(who); } @@ -1226,7 +1223,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI void MoveInLineOfSight(Unit *who) { - if (!who || InCombat) + if (!who || m_creature->isInCombat()) return; //Check for OOC LOS Event @@ -1278,7 +1275,7 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI void UpdateAI(const uint32 diff) { //Check if we are in combat (also updates calls threat update code) - bool Combat = InCombat ? UpdateVictim() : false; + bool Combat = m_creature->isInCombat() ? UpdateVictim() : false; //Must return if creature isn't alive. Normally select hostil target and get victim prevent this if (!m_creature->isAlive()) diff --git a/src/bindings/scripts/scripts/custom/test.cpp b/src/bindings/scripts/scripts/custom/test.cpp index ff3de65f599..a372de8f65c 100644 --- a/src/bindings/scripts/scripts/custom/test.cpp +++ b/src/bindings/scripts/scripts/custom/test.cpp @@ -103,7 +103,7 @@ struct TRINITY_DLL_DECL npc_testAI : public npc_escortAI npc_escortAI::UpdateAI(diff); //Combat check - if (InCombat && m_creature->getVictim()) + if (m_creature->isInCombat() && m_creature->getVictim()) { if (DeathCoilTimer < diff) { diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp index fbe926ffba0..9e0ee3ad8c7 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp @@ -30,21 +30,17 @@ struct TRINITY_DLL_DECL instance_sethekk_halls : public ScriptedInstance { instance_sethekk_halls(Map *map) : ScriptedInstance(map) {Initialize();}; - GameObject *IkissDoor; + uint64 m_uiIkissDoorGUID; void Initialize() { - IkissDoor = NULL; + m_uiIkissDoorGUID = 0; } - void OnGameObjectCreate(GameObject *go, bool add) + void OnObjectCreate(GameObject* pGo) { - switch(go->GetEntry()) - { - case IKISS_DOOR: - IkissDoor = go; - break; - } + if (pGo->GetEntry() == IKISS_DOOR) + m_uiIkissDoorGUID = pGo->GetGUID(); } void SetData(uint32 type, uint32 data) @@ -52,8 +48,8 @@ struct TRINITY_DLL_DECL instance_sethekk_halls : public ScriptedInstance switch(type) { case DATA_IKISSDOOREVENT: - if( IkissDoor ) - IkissDoor->SetGoState(GO_STATE_ACTIVE); + if (data == DONE) + DoUseDoorOrButton(m_uiIkissDoorGUID,DAY*IN_MILISECONDS); break; } } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp index 9747159fcaf..f740e0d9596 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp @@ -73,8 +73,16 @@ struct TRINITY_DLL_DECL instance_shadow_labyrinth : public ScriptedInstance { switch(go->GetEntry()) { - case REFECTORY_DOOR: RefectoryDoorGUID = go->GetGUID(); break; - case SCREAMING_HALL_DOOR: ScreamingHallDoorGUID = go->GetGUID(); break; + case REFECTORY_DOOR: + RefectoryDoorGUID = go->GetGUID(); + if (Encounter[2] == DONE) + DoUseDoorOrButton(RefectoryDoorGUID); + break; + case SCREAMING_HALL_DOOR: + ScreamingHallDoorGUID = go->GetGUID(); + if (Encounter[3] == DONE) + DoUseDoorOrButton(ScreamingHallDoorGUID); + break; } } @@ -117,17 +125,13 @@ struct TRINITY_DLL_DECL instance_shadow_labyrinth : public ScriptedInstance case DATA_BLACKHEARTTHEINCITEREVENT: if( data == DONE ) - { - HandleGameObject(RefectoryDoorGUID, true); - } + DoUseDoorOrButton(RefectoryDoorGUID); Encounter[2] = data; break; case DATA_GRANDMASTERVORPILEVENT: if( data == DONE ) - { - HandleGameObject(ScreamingHallDoorGUID, true); - } + DoUseDoorOrButton(ScreamingHallDoorGUID); Encounter[3] = data; break; diff --git a/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains b/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains index 327b670c6d3..19a31cd35d6 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains +++ b/src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains @@ -92,7 +92,7 @@ struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI CheckTeronTimer = 5000; }else CheckTeronTimer -= diff; - if(ShadowBoltTimer < diff && InCombat) + if(ShadowBoltTimer < diff && m_creature->isInCombat()) { DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SHADOWBOLT); ShadowBoltTimer = 10000; @@ -255,7 +255,7 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI m_creature->AddThreat(who, 1.0f); } - if(!InCombat && !Intro && m_creature->IsWithinDistInMap(who, 60.0f) && (who->GetTypeId() == TYPEID_PLAYER)) + if(!m_creature->isInCombat() && !Intro && m_creature->IsWithinDistInMap(who, 60.0f) && (who->GetTypeId() == TYPEID_PLAYER)) { if(pInstance) pInstance->SetData(DATA_TERONGOREFIENDEVENT, IN_PROGRESS); @@ -427,7 +427,6 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI DoomBlossom->setFaction(m_creature->getFaction()); DoomBlossom->AddThreat(target, 1.0f); ((mob_doom_blossomAI*)DoomBlossom->AI())->SetTeronGUID(m_creature->GetGUID()); - ((mob_doom_blossomAI*)DoomBlossom->AI())->InCombat = true; SetThreatList(DoomBlossom); SummonDoomBlossomTimer = 35000; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index c8a48fe63ce..1805019dc42 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -107,8 +107,10 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI { if(GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_SUPREMUS_DOORS))) { - if(close) Doors->SetGoState(GO_STATE_READY); // Closed - else Doors->SetGoState(GO_STATE_ACTIVE); // Open + if(close) + Doors->SetGoState(GO_STATE_READY); // Closed + else + Doors->SetGoState(GO_STATE_ACTIVE); // Open } } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp index 76023dd6acb..2481e6d858f 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp @@ -158,7 +158,6 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI uint8 Phase; bool Entangle; - bool InCombat; bool Intro; bool CanAttack; bool JustCreated; @@ -181,7 +180,6 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI Phase = 0; Entangle = false; - InCombat = false; if(JustCreated) { CanAttack = false; @@ -241,7 +239,6 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI case 3: DoScriptText(SAY_AGGRO4, m_creature); break; } - InCombat = true; Phase = 1; if(pInstance) @@ -266,7 +263,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI if(Phase != 2) AttackStart(who); - if(!InCombat) + if(!m_creature->isInCombat()) StartEvent(); } @@ -293,7 +290,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI if(Phase != 2) AttackStart(who); - if(!InCombat) + if(!m_creature->isInCombat()) StartEvent(); } } @@ -340,7 +337,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI } } //to prevent abuses during phase 2 - if(Phase == 2 && !m_creature->getVictim() && InCombat) + if(Phase == 2 && !m_creature->getVictim() && m_creature->isInCombat()) { EnterEvadeMode(); return; @@ -672,7 +669,7 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); } } - if(CAST_AI(boss_lady_vashjAI, Vashj->AI())->InCombat == false || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead()) + if(!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead()) { //call Unsummon() m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp index 7e227620b02..e77ce3d2fdf 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp @@ -24,21 +24,22 @@ EndScriptData */ #include "precompiled.h" #include "def_blood_furnace.h" - -#define SAY_AGGRO -1542008 - -#define SPELL_SLIME_SPRAY 30913 -#define SPELL_POISON_CLOUD 30916 -#define SPELL_POISON_BOLT 30917 - -#define SPELL_POISON 30914 +enum +{ + SAY_AGGRO = -1542008, + + SPELL_SLIME_SPRAY = 30913, + SPELL_POISON_CLOUD = 30916, + SPELL_POISON_BOLT = 30917, + + SPELL_POISON = 30914 +}; struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI { boss_broggokAI(Creature *c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); - Reset(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp index 30fb505b30c..63c6bc3832a 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp @@ -29,29 +29,32 @@ EndContentData */ #include "precompiled.h" #include "def_blood_furnace.h" -#define SAY_WAKE -1542000 - -#define SAY_ADD_AGGRO_1 -1542001 -#define SAY_ADD_AGGRO_2 -1542002 -#define SAY_ADD_AGGRO_3 -1542003 - -#define SAY_KILL_1 -1542004 -#define SAY_KILL_2 -1542005 -#define SAY_NOVA -1542006 -#define SAY_DIE -1542007 - -#define SPELL_CORRUPTION 30938 -#define SPELL_EVOCATION 30935 -#define SPELL_BURNING_NOVA 30940 - -#define SPELL_FIRE_NOVA 33132 -#define H_SPELL_FIRE_NOVA 37371 - -#define SPELL_SHADOW_BOLT_VOLLEY 28599 -#define H_SPELL_SHADOW_BOLT_VOLLEY 40070 - -#define ENTRY_KELIDAN 17377 -#define ENTRY_CHANNELER 17653 +enum +{ + SAY_WAKE = -1542000, + SAY_ADD_AGGRO_1 = -1542001, + SAY_ADD_AGGRO_2 = -1542002, + SAY_ADD_AGGRO_3 = -1542003, + SAY_KILL_1 = -1542004, + SAY_KILL_2 = -1542005, + SAY_NOVA = -1542006, + SAY_DIE = -1542007, + + SPELL_CORRUPTION = 30938, + SPELL_EVOCATION = 30935, + + SPELL_FIRE_NOVA = 33132, + H_SPELL_FIRE_NOVA = 37371, + + SPELL_SHADOW_BOLT_VOLLEY = 28599, + H_SPELL_SHADOW_BOLT_VOLLEY = 40070, + + SPELL_BURNING_NOVA = 30940, + SPELL_VORTEX = 37370, + + ENTRY_KELIDAN = 17377, + ENTRY_CHANNELER = 17653 +}; const float ShadowmoonChannelers[5][4]= { @@ -67,7 +70,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI boss_kelidan_the_breakerAI(Creature *c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); - HeroicMode = m_creature->GetMap()->IsHeroic(); + HeroicMode = c->GetMap()->IsHeroic(); for(int i=0; i<5; ++i) Channelers[i] = 0; } @@ -281,18 +284,21 @@ CreatureAI* GetAI_boss_kelidan_the_breaker(Creature *_Creature) ## mob_shadowmoon_channeler ######*/ -#define SPELL_SHADOW_BOLT 12739 -#define H_SPELL_SHADOW_BOLT 15472 - -#define SPELL_MARK_OF_SHADOW 30937 -#define SPELL_CHANNELING 39123 +enum +{ + SPELL_SHADOW_BOLT = 12739, + H_SPELL_SHADOW_BOLT = 15472, + + SPELL_MARK_OF_SHADOW = 30937, + SPELL_CHANNELING = 39123 +}; struct TRINITY_DLL_DECL mob_shadowmoon_channelerAI : public ScriptedAI { mob_shadowmoon_channelerAI(Creature *c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); - HeroicMode = m_creature->GetMap()->IsHeroic(); + HeroicMode = c->GetMap()->IsHeroic(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp index b91f071dc5d..97676ece79c 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp @@ -24,24 +24,26 @@ EndScriptData */ #include "precompiled.h" #include "def_blood_furnace.h" -#define SAY_AGGRO_1 -1542009 -#define SAY_AGGRO_2 -1542010 -#define SAY_AGGRO_3 -1542011 -#define SAY_KILL_1 -1542012 -#define SAY_KILL_2 -1542013 -#define SAY_DIE -1542014 - -#define SPELL_ACID_SPRAY 38153 // heroic 38973 ??? 38153 -#define SPELL_EXPLODING_BREAKER 30925 -#define SPELL_KNOCKDOWN 20276 -#define SPELL_DOMINATION 25772 // ??? +enum +{ + SAY_AGGRO_1 = -1542009, + SAY_AGGRO_2 = -1542010, + SAY_AGGRO_3 = -1542011, + SAY_KILL_1 = -1542012, + SAY_KILL_2 = -1542013, + SAY_DIE = -1542014, + + SPELL_ACID_SPRAY = 38153, // heroic 38973 ??? 38153 + SPELL_EXPLODING_BREAKER = 30925, + SPELL_KNOCKDOWN = 20276, + SPELL_DOMINATION = 25772 // ??? +}; struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI { boss_the_makerAI(Creature *c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); - Reset(); } ScriptedInstance* pInstance; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp index 872c074373d..6b49df203f4 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp @@ -189,7 +189,7 @@ struct TRINITY_DLL_DECL instance_magtheridons_lair : public ScriptedInstance case DATA_COLLAPSE: // true - collapse / false - reset for(std::set::iterator i = ColumnGUID.begin(); i != ColumnGUID.end(); ++i) - HandleGameObject(*i, data); + DoUseDoorOrButton(*i); break; default: break; diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp index 8bfce605bc4..44e8455d41a 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp @@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_highlord_mograineAI : public ScriptedAI void InitialYell() { - if(!InCombat) + if(!m_creature->isInCombat()) { switch(rand()%3) { diff --git a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp index c8382eaaa96..a5f8c84d918 100644 --- a/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp +++ b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp @@ -82,17 +82,17 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance case GO_COURTYARD_DOOR: DoorCourtyardGUID = go->GetGUID(); if (Encounter[0] == DONE) - go->SetGoState(GO_STATE_ACTIVE); + DoUseDoorOrButton(DoorCourtyardGUID); break; case GO_SORCERER_DOOR: DoorSorcererGUID = go->GetGUID(); if (Encounter[2] == DONE) - go->SetGoState(GO_STATE_ACTIVE); + DoUseDoorOrButton(DoorSorcererGUID); break; case GO_ARUGAL_DOOR: DoorArugalGUID = go->GetGUID(); if (Encounter[3] == DONE) - go->SetGoState(GO_STATE_ACTIVE); + DoUseDoorOrButton(DoorArugalGUID); break; } } @@ -115,7 +115,7 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance { case TYPE_FREE_NPC: if(data == DONE) - HandleGameObject(DoorCourtyardGUID,0); + DoUseDoorOrButton(DoorCourtyardGUID); Encounter[0] = data; break; case TYPE_RETHILGORE: @@ -125,12 +125,12 @@ struct TRINITY_DLL_DECL instance_shadowfang_keep : public ScriptedInstance break; case TYPE_FENRUS: if(data == DONE) - HandleGameObject(DoorSorcererGUID,0); + DoUseDoorOrButton(DoorSorcererGUID); Encounter[2] = data; break; case TYPE_NANDOS: if(data == DONE) - HandleGameObject(DoorArugalGUID,0); + DoUseDoorOrButton(DoorArugalGUID); Encounter[3] = data; break; } diff --git a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp index 12f68359a4a..523b117181c 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp @@ -193,21 +193,21 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance case TYPE_BARONESS: Encounter[1] = data; if (data == IN_PROGRESS) - UpdateGoState(ziggurat1GUID,0,false); + UpdateGoState(ziggurat1GUID,GO_STATE_ACTIVE,false); if (data == IN_PROGRESS) //change to DONE when crystals implemented StartSlaugtherSquare(); break; case TYPE_NERUB: Encounter[2] = data; if (data == IN_PROGRESS) - UpdateGoState(ziggurat2GUID,0,false); + UpdateGoState(ziggurat2GUID,GO_STATE_ACTIVE,false); if (data == IN_PROGRESS) //change to DONE when crystals implemented StartSlaugtherSquare(); break; case TYPE_PALLID: Encounter[3] = data; if (data == IN_PROGRESS) - UpdateGoState(ziggurat3GUID,0,false); + UpdateGoState(ziggurat3GUID,GO_STATE_ACTIVE,false); if (data == IN_PROGRESS) //change to DONE when crystals implemented StartSlaugtherSquare(); break; @@ -215,7 +215,7 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance if (data == IN_PROGRESS) { if (Encounter[4] != IN_PROGRESS) - UpdateGoState(portGauntletGUID,1,false); + UpdateGoState(portGauntletGUID,GO_STATE_READY,false); uint32 count = abomnationGUID.size(); for(std::set::iterator i = abomnationGUID.begin(); i != abomnationGUID.end(); ++i) @@ -348,8 +348,8 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance for(uint8 i = 0; i < 4; i++) pBaron->SummonCreature(C_BLACK_GUARD,4032.84,-3390.24,119.73,4.71,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000); - UpdateGoState(ziggurat4GUID,0,false); - UpdateGoState(ziggurat5GUID,0,false); + UpdateGoState(ziggurat4GUID,GO_STATE_ACTIVE,false); + UpdateGoState(ziggurat5GUID,GO_STATE_ACTIVE,false); debug_log("TSCR: Instance Stratholme: Black guard sentries spawned. Opening gates to baron."); } SlaugtherSquare_Timer = 0; diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp index 814ad0c6b46..10cf91a0c28 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp @@ -99,7 +99,6 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI ScriptedInstance *pInstance; - bool InCombat; bool SisterDeath; bool Enraged; @@ -112,7 +111,6 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI void Reset() { - InCombat = false; Enraged = false; if(pInstance) @@ -127,12 +125,11 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI if(Temp->getVictim()) { m_creature->getThreatManager().addThreat(Temp->getVictim(),0.0f); - InCombat = true; } } } - if(!InCombat) + if(!m_creature->isInCombat()) { ShadowbladesTimer = 10000; ShadownovaTimer = 30000; @@ -360,7 +357,6 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI ScriptedInstance *pInstance; - bool InCombat; bool SisterDeath; bool Enraged; @@ -376,7 +372,6 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI void Reset() { - InCombat = false; Enraged = false; if(pInstance) @@ -391,12 +386,11 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI if(Temp->getVictim()) { m_creature->getThreatManager().addThreat(Temp->getVictim(),0.0f); - InCombat = true; } } } - if(!InCombat) + if(!m_creature->isInCombat()) { ConflagrationTimer = 45000; BlazeTimer = 100; @@ -430,7 +424,7 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI void AttackStart(Unit *who) { - if (!InCombat) + if (!m_creature->isInCombat()) { Scripted_NoMovementAI::AttackStart(who); } diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp index 700e7230d14..9a59c5b7dbc 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp @@ -44,7 +44,6 @@ struct TRINITY_DLL_DECL boss_ouroAI : public ScriptedAI bool Enrage; bool Submerged; - bool InCombat; void Reset() { diff --git a/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp b/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp index 3221466bfd3..17caebe85bb 100644 --- a/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp +++ b/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp @@ -59,7 +59,6 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI uint32 WallMinionTimer; bool wakingUp; - bool InCombat; bool guardiansAwake; bool vaultWalkersAwake; ScriptedInstance* pInstance; @@ -70,7 +69,6 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI Awaken_Timer = 0; WallMinionTimer = 10000; - InCombat = false; wakingUp = false; guardiansAwake = false; vaultWalkersAwake = false; @@ -217,7 +215,6 @@ struct TRINITY_DLL_DECL mob_archaedas_minionsAI : public ScriptedAI int32 Awaken_Timer; bool wakingUp; - bool InCombat; bool amIAwake; ScriptedInstance* pInstance; @@ -226,7 +223,6 @@ struct TRINITY_DLL_DECL mob_archaedas_minionsAI : public ScriptedAI Arcing_Timer = 3000; Awaken_Timer = 0; - InCombat = false; wakingUp = false; amIAwake = false; @@ -362,12 +358,10 @@ struct TRINITY_DLL_DECL mob_stonekeepersAI : public ScriptedAI pInstance = (m_creature->GetInstanceData()); } - bool InCombat; ScriptedInstance* pInstance; void Reset() { - InCombat = false; m_creature->setFaction(35); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp index d2b341b2d2c..551db4eb2cb 100644 --- a/src/game/InstanceData.cpp +++ b/src/game/InstanceData.cpp @@ -242,3 +242,40 @@ std::string InstanceData::GetBossSaveData() saveStream << (uint32)i->state << " "; return saveStream.str(); } + +void InstanceData::DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState) +{ + if (!uiGuid) + return; + + GameObject* pGo = instance->GetGameObject(uiGuid); + + if (pGo) + { + if (pGo->GetGoType() == GAMEOBJECT_TYPE_DOOR || pGo->GetGoType() == GAMEOBJECT_TYPE_BUTTON) + { + if (pGo->getLootState() == GO_READY) + pGo->UseDoorOrButton(uiWithRestoreTime,bUseAlternativeState); + else if (pGo->getLootState() == GO_ACTIVATED) + pGo->ResetDoorOrButton(); + } + else + error_log("SD2: Script call DoUseDoorOrButton, but gameobject entry %u is type %u.",pGo->GetEntry(),pGo->GetGoType()); + } +} + +void InstanceData::DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn) +{ + if (GameObject* pGo = instance->GetGameObject(uiGuid)) + { + //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) + return; + + if (pGo->isSpawned()) + return; + + pGo->SetRespawnTime(uiTimeToDespawn); + } +} diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h index 819185eacaa..fac766c761e 100644 --- a/src/game/InstanceData.h +++ b/src/game/InstanceData.h @@ -143,6 +143,12 @@ class TRINITY_DLL_SPEC InstanceData : public ZoneScript //use HandleGameObject(GUID,boolen,NULL); in any other script void HandleGameObject(uint64 GUID, bool open, GameObject *go = NULL); + //change active state of doors or buttons + void DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime = 0, bool bUseAlternativeState = false); + + //Respawns a GO having negative spawntimesecs in gameobject-table + void DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn = MINUTE); + virtual bool SetBossState(uint32 id, EncounterState state); const BossBoundaryMap * GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; } protected: -- cgit v1.2.3 From 30195348ac7e004acf84043c5bf9f1c70f19755e Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 17 Jun 2009 00:58:06 -0500 Subject: *Do not allow cancel area autocasted auras. --HG-- branch : trunk --- src/game/SpellMgr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 3f2d9204750..f9d607010ca 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2253,7 +2253,9 @@ void SpellMgr::LoadSpellAreas() spellArea.gender = Gender(fields[7].GetUInt8()); spellArea.autocast = fields[8].GetBool(); - if(!sSpellStore.LookupEntry(spell)) + if(const SpellEntry* spellInfo = sSpellStore.LookupEntry(spell)) + const_cast(spellInfo)->Attributes |= SPELL_ATTR_CANT_CANCEL; + else { sLog.outErrorDb("Spell %u listed in `spell_area` does not exist", spell); continue; -- cgit v1.2.3 From c6765f9365126fbe90d66ca36e2d766a734ce4bb Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 17 Jun 2009 01:01:39 -0500 Subject: *Allow to force to respawn creatures. *Save creature data for vehicles. *Change some visibility update sequence of respawned creatures. *Fix bugs of quest 12687: dark rider may not be on horse / horse cannot be used twice / horse does not respawn at correct phase --HG-- branch : trunk --- .../eastern_plaguelands/the_scarlet_enclave.cpp | 16 +----- src/game/Creature.cpp | 27 ++++----- src/game/Creature.h | 7 ++- src/game/Player.cpp | 4 +- src/game/Vehicle.cpp | 67 ++++++++++++++-------- src/game/Vehicle.h | 3 +- src/game/Wintergrasp.cpp | 3 +- 7 files changed, 68 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp index 066c401049f..3e7137094d2 100644 --- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp +++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp @@ -532,9 +532,7 @@ struct TRINITY_DLL_DECL npc_salanar_the_horsemanAI : public ScriptedAI return; } CAST_PLR(charmer)->ExitVehicle(); - //without this we can see npc kill the horse - who->setDeathState(DEAD); - CAST_CRE(who)->Respawn(); + CAST_CRE(who)->Respawn(true); } } } @@ -554,18 +552,6 @@ struct TRINITY_DLL_DECL npc_ros_dark_riderAI : public ScriptedAI { npc_ros_dark_riderAI(Creature *c) : ScriptedAI(c) {} - void MoveInLineOfSight(Unit *who) - { - if(me->getVictim()) - return; - - // this should be before next one otherwise he may enter vehicle again - if(!me->m_Vehicle && who->GetEntry() == 28782 && CAST_CRE(who)->isVehicle() && CAST_VEH(who)->HasEmptySeat(0)) - me->EnterVehicle(CAST_VEH(who)); - - ScriptedAI::MoveInLineOfSight(who); - } - void EnterCombat(Unit *who) { me->ExitVehicle(); diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index eb711a77ab5..be0747f0a89 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -1780,7 +1780,7 @@ void Creature::setDeathState(DeathState s) LoadCreaturesAddon(true); Motion_Initialize(); if(GetCreatureData() && GetPhaseMask() != GetCreatureData()->phaseMask) - SetPhaseMask(GetCreatureData()->phaseMask, true); + SetPhaseMask(GetCreatureData()->phaseMask, false); } } @@ -1802,16 +1802,19 @@ bool Creature::FallGround() return true; } -void Creature::Respawn() +void Creature::Respawn(bool force) { - RemoveCorpse(); + DestroyForNearbyPlayers(); - // forced recreate creature object at clients - UnitVisibility currentVis = GetVisibility(); - SetVisibility(VISIBILITY_RESPAWN); - ObjectAccessor::UpdateObjectVisibility(this); - SetVisibility(currentVis); // restore visibility state - ObjectAccessor::UpdateObjectVisibility(this); + if(force) + { + if(isAlive()) + setDeathState(JUST_DIED); + else if(getDeathState() != CORPSE) + setDeathState(CORPSE); + } + + RemoveCorpse(); if(getDeathState()==DEAD) { @@ -1846,11 +1849,9 @@ void Creature::Respawn() uint16 poolid = poolhandler.IsPartOfAPool(GetGUIDLow(), GetTypeId()); if (poolid) poolhandler.UpdatePool(poolid, GetGUIDLow(), GetTypeId()); - - //GetMap()->Add(this); - - } + + SetToNotify(); } bool Creature::IsImmunedToSpell(SpellEntry const* spellInfo) diff --git a/src/game/Creature.h b/src/game/Creature.h index b44b5b68ef5..99dd3b3417d 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -672,7 +672,7 @@ class TRINITY_DLL_SPEC Creature : public Unit time_t const& GetRespawnTime() const { return m_respawnTime; } time_t GetRespawnTimeEx() const; void SetRespawnTime(uint32 respawn) { m_respawnTime = respawn ? time(NULL) + respawn : 0; } - void Respawn(); + void Respawn(bool force = false); void SaveRespawnTime(); uint32 GetRespawnDelay() const { return m_respawnDelay; } @@ -786,6 +786,9 @@ class TRINITY_DLL_SPEC Creature : public Unit bool DisableReputationGain; + CreatureInfo const* m_creatureInfo; // in heroic mode can different from ObjMgr::GetCreatureTemplate(GetEntry()) + CreatureData const* m_creatureData; + private: //WaypointMovementGenerator vars uint32 m_waypointID; @@ -795,8 +798,6 @@ class TRINITY_DLL_SPEC Creature : public Unit CreatureGroup *m_formation; GridReference m_gridRef; - CreatureInfo const* m_creatureInfo; // in heroic mode can different from ObjMgr::GetCreatureTemplate(GetEntry()) - CreatureData const* m_creatureData; }; class AssistDelayEvent : public BasicEvent diff --git a/src/game/Player.cpp b/src/game/Player.cpp index cbcf52789bb..02c7fa18e9f 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -18366,8 +18366,8 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool return false; // forbidden to seen (at GM respawn command) - if(u->GetVisibility() == VISIBILITY_RESPAWN) - return false; + //if(u->GetVisibility() == VISIBILITY_RESPAWN) + // return false; // Grid dead/alive checks // non visible at grid for any stealth state diff --git a/src/game/Vehicle.cpp b/src/game/Vehicle.cpp index 0464c52705e..fd1fbae5926 100644 --- a/src/game/Vehicle.cpp +++ b/src/game/Vehicle.cpp @@ -45,26 +45,6 @@ void Vehicle::AddToWorld() m_zoneScript->OnCreatureCreate(this, true); ObjectAccessor::Instance().AddObject(this); - switch(GetEntry()) - { - //case 27850:InstallAccessory(27905,1);break; - case 28312:InstallAccessory(28319,7);break; - case 32627:InstallAccessory(32629,7);break; - case 33109:InstallAccessory(33167,1);break; - case 33060:InstallAccessory(33067,7);break; - case 33113: - InstallAccessory(33114,0); - InstallAccessory(33114,1); - InstallAccessory(33114,2); - InstallAccessory(33114,3); - InstallAccessory(33139,7); - break; - case 33114: - InstallAccessory(33143,1); - //InstallAccessory(33142,0); - InstallAccessory(33142,2); - break; - } for(uint32 i = 0; i < MAX_SPELL_VEHICLE; ++i) { if(!m_spells[i]) @@ -85,11 +65,38 @@ void Vehicle::AddToWorld() } } + InstallAllAccessories(); + Unit::AddToWorld(); AIM_Initialize(); } } +void Vehicle::InstallAllAccessories() +{ + switch(GetEntry()) + { + //case 27850:InstallAccessory(27905,1);break; + case 28782:InstallAccessory(28768,0);break; // Acherus Deathcharger + case 28312:InstallAccessory(28319,7);break; + case 32627:InstallAccessory(32629,7);break; + case 33109:InstallAccessory(33167,1);break; + case 33060:InstallAccessory(33067,7);break; + case 33113: + InstallAccessory(33114,0); + InstallAccessory(33114,1); + InstallAccessory(33114,2); + InstallAccessory(33114,3); + InstallAccessory(33139,7); + break; + case 33114: + InstallAccessory(33143,1); + //InstallAccessory(33142,0); + InstallAccessory(33142,2); + break; + } +} + void Vehicle::RemoveFromWorld() { if(IsInWorld()) @@ -110,7 +117,7 @@ void Vehicle::setDeathState(DeathState s) // overwrite vir for(SeatMap::iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr) { if(Unit *passenger = itr->second.passenger) - if(passenger->GetTypeId() == TYPEID_UNIT && ((Creature*)passenger)->isVehicle()) + if(passenger->GetOwnerGUID() == GetGUID()) { passenger->ExitVehicle(); ((Vehicle*)passenger)->setDeathState(s); @@ -118,12 +125,15 @@ void Vehicle::setDeathState(DeathState s) // overwrite vir } RemoveAllPassengers(); } - else if(s == JUST_ALIVED) + + Creature::setDeathState(s); + + if(s == JUST_ALIVED) { + InstallAllAccessories(); if(m_usableSeatNum) SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); } - Creature::setDeathState(s); } void Vehicle::Update(uint32 diff) @@ -226,6 +236,15 @@ int8 Vehicle::GetNextEmptySeat(int8 seatId, bool next) const void Vehicle::InstallAccessory(uint32 entry, int8 seatId) { + if(Unit *passenger = GetPassenger(seatId)) + { + // already installed + if(passenger->GetEntry() == entry) + return; + + passenger->ExitVehicle(); // this should not happen + } + const CreatureInfo *cInfo = objmgr.GetCreatureTemplate(entry); if(!cInfo) return; @@ -421,5 +440,7 @@ bool Vehicle::LoadFromDB(uint32 guid, Map *map) // checked at creature_template loading m_defaultMovementType = MovementGeneratorType(data->movementType); + m_creatureData = data; + return true; } diff --git a/src/game/Vehicle.h b/src/game/Vehicle.h index 309e8a5f02c..9639597bd8f 100644 --- a/src/game/Vehicle.h +++ b/src/game/Vehicle.h @@ -57,7 +57,7 @@ class TRINITY_DLL_SPEC Vehicle : public Creature int8 GetNextEmptySeat(int8 seatId, bool next) const; bool AddPassenger(Unit *passenger, int8 seatId = -1); void RemovePassenger(Unit *passenger); - void InstallAccessory(uint32 entry, int8 seatId); + void InstallAllAccessories(); void Dismiss(); bool LoadFromDB(uint32 guid, Map *map); @@ -68,6 +68,7 @@ class TRINITY_DLL_SPEC Vehicle : public Creature uint32 m_usableSeatNum; void RemoveAllPassengers(); + void InstallAccessory(uint32 entry, int8 seatId); private: void SaveToDB(uint32, uint8) // overwrited of Creature::SaveToDB - don't must be called diff --git a/src/game/Wintergrasp.cpp b/src/game/Wintergrasp.cpp index d604507a799..dbe086bb761 100644 --- a/src/game/Wintergrasp.cpp +++ b/src/game/Wintergrasp.cpp @@ -300,8 +300,7 @@ bool OPvPWintergrasp::UpdateCreatureInfo(Creature *creature) if(entry != creature->GetEntry()) { creature->SetOriginalEntry(entry); - creature->setDeathState(DEAD); - creature->Respawn(); + creature->Respawn(true); } } -- cgit v1.2.3 From fb26b41e330726ec0c726d2da5817d6c10f91afd Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 17 Jun 2009 01:03:21 -0500 Subject: *remove outdated eventai in script. they are in core now. --HG-- branch : trunk --- .../scripts/scripts/creature/mob_event_ai.cpp | 1442 -------------------- .../scripts/scripts/creature/mob_event_ai.h | 223 --- 2 files changed, 1665 deletions(-) delete mode 100644 src/bindings/scripts/scripts/creature/mob_event_ai.cpp delete mode 100644 src/bindings/scripts/scripts/creature/mob_event_ai.h (limited to 'src') diff --git a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp deleted file mode 100644 index e59c50e1311..00000000000 --- a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp +++ /dev/null @@ -1,1442 +0,0 @@ -/* 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 - */ - -/* ScriptData -SDName: Mob_Event_AI -SD%Complete: 90 -SDComment: Database Event AI -SDCategory: Creatures -EndScriptData */ - -#include "precompiled.h" -#include "mob_event_ai.h" -#include "ObjectMgr.h" - -#define EVENT_UPDATE_TIME 500 -#define SPELL_RUN_AWAY 8225 - -struct EventHolder -{ - EventHolder(EventAI_Event p) : Event(p), Time(0), Enabled(true){} - - EventAI_Event Event; - uint32 Time; - bool Enabled; -}; - -struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI -{ - Mob_EventAI(Creature *c, std::list pEventList) : ScriptedAI(c) - { - EventList = pEventList; - Phase = 0; - CombatMovementEnabled = true; - MeleeEnabled = true; - AttackDistance = 0; - AttackAngle = 0.0f; - - //Handle Spawned Events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - case EVENT_T_SPAWNED: - ProcessEvent(*i); - break; - } - } - } - - ~Mob_EventAI() - { - EventList.clear(); - } - - //Variables used by EventAI for handling events - std::list EventList; //Holder for events (stores enabled, time, and eventid) - uint32 EventUpdateTime; //Time between event updates - uint32 EventDiff; //Time between the last event call - - //Variables used by Events themselves - uint8 Phase; //Current phase, max 32 phases - bool CombatMovementEnabled; //If we allow targeted movment gen (movement twoards top threat) - bool MeleeEnabled; //If we allow melee auto attack - uint32 AttackDistance; //Distance to attack from - float AttackAngle; //Angle of attack - uint32 TimetoFleeLeft; //For fleeing - - bool ProcessEvent(EventHolder& pHolder, Unit* pActionInvoker = NULL) - { - if (!pHolder.Enabled || pHolder.Time) - return false; - - //Check the inverse phase mask (event doesn't trigger if current phase bit is set in mask) - if (pHolder.Event.event_inverse_phase_mask & (1 << Phase)) - return false; - - //Store random here so that all random actions match up - uint32 rnd = rand(); - - //Return if chance for event is not met - if (pHolder.Event.event_chance <= rnd % 100) - return false; - - union - { - uint32 param1; - int32 param1_s; - }; - - union - { - uint32 param2; - int32 param2_s; - }; - - union - { - uint32 param3; - int32 param3_s; - }; - - union - { - uint32 param4; - int32 param4_s; - }; - - param1 = pHolder.Event.event_param1; - param2 = pHolder.Event.event_param2; - param3 = pHolder.Event.event_param3; - param4 = pHolder.Event.event_param4; - - //Check event conditions based on the event type, also reset events - switch (pHolder.Event.event_type) - { - case EVENT_T_TIMER: - { - if (!m_creature->isInCombat()) - return false; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_TIMER_OOC: - { - if (m_creature->isInCombat()) - return false; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_HP: - { - if (!m_creature->isInCombat() || !m_creature->GetMaxHealth()) - return false; - - uint32 perc = (m_creature->GetHealth()*100) / m_creature->GetMaxHealth(); - - if (perc > param1 || perc < param2) - return false; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_MANA: - { - if (!m_creature->isInCombat() || !m_creature->GetMaxPower(POWER_MANA)) - return false; - - uint32 perc = (m_creature->GetPower(POWER_MANA)*100) / m_creature->GetMaxPower(POWER_MANA); - - if (perc > param1 || perc < param2) - return false; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_AGGRO: - { - } - break; - case EVENT_T_KILL: - { - //Repeat Timers - if (param1 == param2) - { - pHolder.Time = param1; - - }else if (param2 > param1) - pHolder.Time = urand(param1, param2); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - case EVENT_T_DEATH: - { - } - break; - case EVENT_T_EVADE: - { - } - break; - case EVENT_T_SPELLHIT: - { - //Spell hit is special case, param1 and param2 handled within EventAI::SpellHit - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_RANGE: - { - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_OOC_LOS: - { - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_SPAWNED: - { - } - break; - case EVENT_T_TARGET_HP: - { - if (!m_creature->isInCombat() || !m_creature->getVictim() || !m_creature->getVictim()->GetMaxHealth()) - return false; - - uint32 perc = (m_creature->getVictim()->GetHealth()*100) / m_creature->getVictim()->GetMaxHealth(); - - if (perc > param1 || perc < param2) - return false; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_TARGET_CASTING: - { - if (!m_creature->isInCombat() || !m_creature->getVictim() || !m_creature->getVictim()->IsNonMeleeSpellCasted(false, false, true)) - return false; - - //Repeat Timers - if (param1 == param2) - { - pHolder.Time = param1; - - }else if (param2 > param1) - pHolder.Time = urand(param1, param2); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_FRIENDLY_HP: - { - if (!m_creature->isInCombat()) - return false; - - Unit* pUnit = DoSelectLowestHpFriendly(param2, param1); - - if (!pUnit) - return false; - - pActionInvoker = pUnit; - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_FRIENDLY_IS_CC: - { - if (!m_creature->isInCombat()) - return false; - - std::list pList = DoFindFriendlyCC(param2); - - //List is empty - if (pList.empty()) - return false; - - //We don't really care about the whole list, just return first available - pActionInvoker = *(pList.begin()); - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_FRIENDLY_MISSING_BUFF: - { - std::list pList = DoFindFriendlyMissingBuff(param2, param1); - - //List is empty - if (pList.empty()) - return false; - - //We don't really care about the whole list, just return first available - pActionInvoker = *(pList.begin()); - - //Repeat Timers - if (param3 == param4) - { - pHolder.Time = param3; - - }else if (param4 > param3) - pHolder.Time = urand(param3, param4); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_SUMMONED_UNIT: - { - //Prevent event from occuring on no unit or non creatures - if (!pActionInvoker || pActionInvoker->GetTypeId()!=TYPEID_UNIT) - return false; - - //Creature id doesn't match up - if (param1 && ((Creature*)pActionInvoker)->GetEntry() != param1) - return false; - - //Repeat Timers - if (param2 == param3) - { - pHolder.Time = param2; - - }else if (param3 > param2) - pHolder.Time = urand(param2, param3); - else - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has RandomMax < RandomMin. Event repeating disabled.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - pHolder.Enabled = false; - } - } - break; - case EVENT_T_REACHED_HOME: - { - } - break; - default: - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u has invalid Event Type(%u), missing from ProcessEvent() Switch.", m_creature->GetEntry(), pHolder.Event.event_id, pHolder.Event.event_type); - break; - } - - //Disable non-repeatable events - if (!(pHolder.Event.event_flags & EFLAG_REPEATABLE)) - pHolder.Enabled = false; - - //Process actions - for (uint32 j = 0; j < MAX_ACTIONS; j++) - ProcessAction(pHolder.Event.action[j].type, pHolder.Event.action[j].param1, pHolder.Event.action[j].param2, pHolder.Event.action[j].param3, rnd, pHolder.Event.event_id, pActionInvoker); - - return true; - } - - inline uint32 GetRandActionParam(uint32 rnd, uint32 param1, uint32 param2, uint32 param3) - { - switch (rnd % 3) - { - case 0: - return param1; - break; - case 1: - return param2; - break; - case 2: - return param3; - break; - } - return 0; - } - - inline Unit* GetTargetByType(uint32 Target, Unit* pActionInvoker) - { - switch (Target) - { - case TARGET_T_SELF: - return m_creature; - break; - case TARGET_T_HOSTILE: - return m_creature->getVictim(); - break; - case TARGET_T_HOSTILE_SECOND_AGGRO: - return SelectUnit(SELECT_TARGET_TOPAGGRO,1); - break; - case TARGET_T_HOSTILE_LAST_AGGRO: - return SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0); - break; - case TARGET_T_HOSTILE_RANDOM: - return SelectUnit(SELECT_TARGET_RANDOM,0); - break; - case TARGET_T_HOSTILE_RANDOM_NOT_TOP: - return SelectUnit(SELECT_TARGET_RANDOM,1); - break; - case TARGET_T_ACTION_INVOKER: - return pActionInvoker; - break; - default: - return NULL; - break; - }; - } - - void ProcessAction(uint16 type, uint32 param1, uint32 param2, uint32 param3, uint32 rnd, uint32 EventId, Unit* pActionInvoker) - { - switch (type) - { - case ACTION_T_TEXT: - { - if (!param1) - return; - - uint32 temp = 0; - - if (param2 && param3) - { - switch( rand()%3 ) - { - case 0: temp = param1; break; - case 2: temp = param2; break; - case 3: temp = param3; break; - } - }else if ( param2 && urand(0,1) ) - { - temp = param2; - }else - { - temp = param1; - } - - if (temp) - { - Unit* target = NULL; - Unit* owner = NULL; - - if (pActionInvoker) - { - if (pActionInvoker->GetTypeId() == TYPEID_PLAYER) - target = pActionInvoker; - else if (owner = pActionInvoker->GetOwner()) - { - if (owner->GetTypeId() == TYPEID_PLAYER) - target = owner; - } - } - else if (target = m_creature->getVictim()) - { - if (target->GetTypeId() != TYPEID_PLAYER) - { - if (owner = target->GetOwner()) - { - if (owner->GetTypeId() == TYPEID_PLAYER) - target = owner; - } - } - } - - DoScriptText(temp, m_creature, target); - } - } - break; - case ACTION_T_SET_FACTION: - { - if (param1) - m_creature->setFaction(param1); - else - { - if (CreatureInfo const* ci = GetCreatureTemplateStore(m_creature->GetEntry())) - { - //if no id provided, assume reset and then use default - if (m_creature->getFaction() != ci->faction_A) - m_creature->setFaction(ci->faction_A); - } - } - } - break; - case ACTION_T_MORPH_TO_ENTRY_OR_MODEL: - { - if (param1 || param2) - { - //set model based on entry from creature_template - if (param1) - { - if (CreatureInfo const* ci = GetCreatureTemplateStore(param1)) - { - //use default display - if (ci->Modelid_A1) - m_creature->SetDisplayId(ci->Modelid_A1); - } - } - //if no param1, then use value from param2 (modelId) - else - m_creature->SetDisplayId(param2); - } - else - m_creature->DeMorph(); - } - break; - case ACTION_T_SOUND: - DoPlaySoundToSet(m_creature, param1); - break; - case ACTION_T_EMOTE: - m_creature->HandleEmoteCommand(param1); - break; - case ACTION_T_RANDOM_SOUND: - { - uint32 temp = GetRandActionParam(rnd, param1, param2, param3); - - if (temp != 0xffffffff) - DoPlaySoundToSet(m_creature, temp); - } - break; - case ACTION_T_RANDOM_EMOTE: - { - uint32 temp = GetRandActionParam(rnd, param1, param2, param3); - - if (temp != 0xffffffff) - m_creature->HandleEmoteCommand(temp); - } - break; - case ACTION_T_CAST: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - Unit* caster = m_creature; - - if (!target) - return; - - //Cast is always triggered if target is forced to cast on self - if (param3 & CAST_FORCE_TARGET_SELF) - { - param3 |= CAST_TRIGGERED; - caster = target; - } - - //Allowed to cast only if not casting (unless we interrupt ourself) or if spell is triggered - bool canCast = !(caster->IsNonMeleeSpellCasted(false) && (param3 & CAST_TRIGGERED | CAST_INTURRUPT_PREVIOUS)); - - // If cast flag CAST_AURA_NOT_PRESENT is active, check if target already has aura on them - if(param3 & CAST_AURA_NOT_PRESENT) - { - for(uint8 i = 0; i < 3; ++i) - if(target->HasAura(param1, i)) - return; - } - - if (canCast) - { - const SpellEntry* tSpell = GetSpellStore()->LookupEntry(param1); - - //Verify that spell exists - if (tSpell) - { - //Check if cannot cast spell - if (!(param3 & (CAST_FORCE_TARGET_SELF | CAST_FORCE_CAST)) && - !CanCast(target, tSpell, (param3 & CAST_TRIGGERED))) - { - //Melee current victim if flag not set - if (!(param3 & CAST_NO_MELEE_IF_OOM)) - { - AttackDistance = 0; - AttackAngle = 0; - - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim(), AttackDistance, AttackAngle); - } - - }else - { - //Interrupt any previous spell - if (caster->IsNonMeleeSpellCasted(false) && param3 & CAST_INTURRUPT_PREVIOUS) - caster->InterruptNonMeleeSpells(false); - - caster->CastSpell(target, param1, (param3 & CAST_TRIGGERED)); - } - - }else if (EAI_ErrorLevel > 0) - error_db_log("TSCR: EventAI event %d creature %d attempt to cast spell that doesn't exist %d", EventId, m_creature->GetEntry(), param1); - } - } - break; - case ACTION_T_SUMMON: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - Creature* pCreature = NULL; - - if (param3) - pCreature = DoSpawnCreature(param1, 0, 0, 0, 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, param3); - else pCreature = pCreature = DoSpawnCreature(param1, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0); - - if (!pCreature) - { - if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: EventAI failed to spawn creature %u. Spawn event %d is on creature %d", param1, EventId, m_creature->GetEntry()); - } - else if (param2 != TARGET_T_SELF && target) - pCreature->AI()->AttackStart(target); - } - break; - case ACTION_T_THREAT_SINGLE_PCT: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (target) - DoModifyThreatPercent(target, param1); - } - break; - case ACTION_T_THREAT_ALL_PCT: - { - Unit* Temp = NULL; - - std::list::iterator i = m_creature->getThreatManager().getThreatList().begin(); - for (; i != m_creature->getThreatManager().getThreatList().end(); ++i) - { - Temp = Unit::GetUnit((*m_creature),(*i)->getUnitGuid()); - if (Temp) - DoModifyThreatPercent(Temp, param1); - } - } - break; - case ACTION_T_QUEST_EVENT: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (target && target->GetTypeId() == TYPEID_PLAYER) - ((Player*)target)->AreaExploredOrEventHappens(param1); - } - break; - case ACTION_T_CASTCREATUREGO: - { - Unit* target = GetTargetByType(param3, pActionInvoker); - - if (target && target->GetTypeId() == TYPEID_PLAYER) - ((Player*)target)->CastedCreatureOrGO(param1, m_creature->GetGUID(), param2); - } - break; - case ACTION_T_SET_UNIT_FIELD: - { - Unit* target = GetTargetByType(param3, pActionInvoker); - - if (param1 < OBJECT_END || param1 >= UNIT_END) - return; - - if (target) - target->SetUInt32Value(param1, param2); - } - break; - case ACTION_T_SET_UNIT_FLAG: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (target) - target->SetFlag(UNIT_FIELD_FLAGS, param1); - } - break; - case ACTION_T_REMOVE_UNIT_FLAG: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (target) - target->RemoveFlag(UNIT_FIELD_FLAGS, param1); - } - break; - case ACTION_T_AUTO_ATTACK: - { - if (param1) - MeleeEnabled = true; - else MeleeEnabled = false; - } - break; - case ACTION_T_COMBAT_MOVEMENT: - { - CombatMovementEnabled = param1; - - //Allow movement (create new targeted movement gen if none exist already) - if (CombatMovementEnabled) - { - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim(), AttackDistance, AttackAngle); - } - else - { - m_creature->GetMotionMaster()->MoveIdle(); - } - } - break; - case ACTION_T_SET_PHASE: - { - Phase = param1; - } - break; - case ACTION_T_INC_PHASE: - { - Phase += param1; - - if (Phase > 31) - if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: Event %d incremented Phase above 31. Phase mask cannot be used with phases past 31. CreatureEntry = %d", EventId, m_creature->GetEntry()); - } - break; - case ACTION_T_EVADE: - { - EnterEvadeMode(); - } - break; - case ACTION_T_FLEE: - { - if(m_creature->HasAuraType(SPELL_AURA_PREVENTS_FLEEING)) - break; - TimetoFleeLeft = 8000; - m_creature->DoFleeToGetAssistance(); - IsFleeing = true; - } - break; - case ACTION_T_QUEST_EVENT_ALL: - { - Unit* Temp = NULL; - if( pActionInvoker && pActionInvoker->GetTypeId() == TYPEID_PLAYER ) - { - Temp = Unit::GetUnit((*m_creature),pActionInvoker->GetGUID()); - if( Temp ) - ((Player*)Temp)->GroupEventHappens(param1,m_creature); - } - } - break; - case ACTION_T_CASTCREATUREGO_ALL: - { - Unit* Temp = NULL; - - std::list::iterator i = m_creature->getThreatManager().getThreatList().begin(); - for (; i != m_creature->getThreatManager().getThreatList().end(); ++i) - { - Temp = Unit::GetUnit((*m_creature),(*i)->getUnitGuid()); - if (Temp && Temp->GetTypeId() == TYPEID_PLAYER) - ((Player*)Temp)->CastedCreatureOrGO(param1, m_creature->GetGUID(), param2); - } - } - break; - case ACTION_T_REMOVEAURASFROMSPELL: - { - Unit* target = GetTargetByType(param1, pActionInvoker); - - if (target) - target->RemoveAurasDueToSpell(param2); - } - break; - case ACTION_T_RANGED_MOVEMENT: - { - AttackDistance = param1; - AttackAngle = ((float)param2/180)*M_PI; - - if (CombatMovementEnabled) - { - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim(), AttackDistance, AttackAngle); - } - } - break; - case ACTION_T_RANDOM_PHASE: - { - uint32 temp = GetRandActionParam(rnd, param1, param2, param3); - - Phase = temp; - } - break; - case ACTION_T_RANDOM_PHASE_RANGE: - { - if (param2 > param1) - { - Phase = param1 + (rnd % (param2 - param1)); - } - else if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: ACTION_T_RANDOM_PHASE_RANGE cannot have Param2 <= Param1. Divide by Zero. Event = %d. CreatureEntry = %d", EventId, m_creature->GetEntry()); - } - break; - case ACTION_T_SUMMON_ID: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - //Duration - Creature* pCreature = NULL; - - UNORDERED_MAP::iterator i = EventAI_Summon_Map.find(param3); - - if (i == EventAI_Summon_Map.end()) - { - if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: EventAI failed to spawn creature %u. Summon map index %u does not exist. EventID %d. CreatureID %d", param1, param3, EventId, m_creature->GetEntry()); - return; - } - - if ((*i).second.SpawnTimeSecs) - pCreature = m_creature->SummonCreature(param1, (*i).second.position_x, (*i).second.position_y, (*i).second.position_z, (*i).second.orientation, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, (*i).second.SpawnTimeSecs); - else pCreature = m_creature->SummonCreature(param1, (*i).second.position_x, (*i).second.position_y, (*i).second.position_z, (*i).second.orientation, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0); - - if (!pCreature) - { - if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: EventAI failed to spawn creature %u. EventId %d.Creature %d", param1, EventId, m_creature->GetEntry()); - } - else if (param2 != TARGET_T_SELF && target) - pCreature->AI()->AttackStart(target); - } - break; - case ACTION_T_KILLED_MONSTER: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (target && target->GetTypeId() == TYPEID_PLAYER) - ((Player*)target)->KilledMonster(param1, m_creature->GetGUID()); - } - break; - case ACTION_T_SET_INST_DATA: - { - ScriptedInstance* pInst = (ScriptedInstance*)m_creature->GetInstanceData(); - if (!pInst) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d attempt to set instance data without instance script. Creature %d", EventId, m_creature->GetEntry()); - return; - } - - pInst->SetData(param1, param2); - } - break; - case ACTION_T_SET_INST_DATA64: - { - Unit* target = GetTargetByType(param2, pActionInvoker); - - if (!target) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d attempt to set instance data64 but Target == NULL. Creature %d", EventId, m_creature->GetEntry()); - return; - } - - ScriptedInstance* pInst = (ScriptedInstance*)m_creature->GetInstanceData(); - - if (!pInst) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d attempt to set instance data64 without instance script. Creature %d", EventId, m_creature->GetEntry()); - return; - } - - pInst->SetData64(param1, target->GetGUID()); - } - break; - case ACTION_T_UPDATE_TEMPLATE: - { - if (m_creature->GetEntry() == param1) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d ACTION_T_UPDATE_TEMPLATE call with param1 == current entry. Creature %d", EventId, m_creature->GetEntry()); - return; - } - - m_creature->UpdateEntry(param1, param2 ? HORDE : ALLIANCE); - } - break; - case ACTION_T_DIE: - { - if (m_creature->isDead()) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d ACTION_T_DIE on dead creature. Creature %d", EventId, m_creature->GetEntry()); - return; - } - m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - } - break; - case ACTION_T_ZONE_COMBAT_PULSE: - { - if (!m_creature->isInCombat() || !m_creature->GetMap()->IsDungeon()) - { - if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Event %d ACTION_T_ZONE_COMBAT_PULSE on creature out of combat or in non-dungeon map. Creature %d", EventId, m_creature->GetEntry()); - return; - } - - DoZoneInCombat(); - } - break; - case ACTION_T_SUMMON_GO: - { - GameObject* pObject = NULL; - - float x,y,z; - m_creature->GetPosition(x,y,z); - pObject = m_creature->SummonGameObject(param1, x, y, z, 0, 0, 0, 0, 0, param2); - if (!pObject) - { - if (EAI_ErrorLevel > 0) - error_db_log( "TSCR: EventAI failed to spawn object %u. Spawn event %d is on creature %d", param1, EventId, m_creature->GetEntry()); - } - } - break; - - // TRINITY ONLY - case ACTION_T_SET_ACTIVE: - m_creature->setActive(param1 ? true : false); - break; - case ACTION_T_SET_AGGRESSIVE: - m_creature->SetReactState(ReactStates(param1)); - break; - case ACTION_T_ATTACK_START_PULSE: - AttackStart(m_creature->SelectNearestTarget((float)param1)); - break; - } - } - - void JustRespawned() - { - IsFleeing = false; - Reset(); - - //Handle Spawned Events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - case EVENT_T_SPAWNED: - ProcessEvent(*i); - break; - } - } - } - - void Reset() - { - EventUpdateTime = EVENT_UPDATE_TIME; - EventDiff = 0; - - //Reset all events to enabled - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - //Reset all out of combat timers - case EVENT_T_TIMER_OOC: - { - if ((*i).Event.event_param2 == (*i).Event.event_param1) - { - (*i).Time = (*i).Event.event_param1; - (*i).Enabled = true; - }else if ((*i).Event.event_param2 > (*i).Event.event_param1) - { - (*i).Time = urand((*i).Event.event_param1, (*i).Event.event_param2); - (*i).Enabled = true; - }else if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has InitialMax < InitialMin. Event disabled.", m_creature->GetEntry(), (*i).Event.event_id, (*i).Event.event_type); - } - break; - //default: - //TODO: enable below code line / verify this is correct to enable events previously disabled (ex. aggro yell), instead of enable this in void Aggro() - //(*i).Enabled = true; - //(*i).Time = 0; - //break; - } - } - } - - //when creature reach home after EnterEvadeMode - void JustReachedHome() - { - m_creature->LoadCreaturesAddon(); - - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - if ((*i).Event.event_type == EVENT_T_REACHED_HOME) - ProcessEvent(*i); - } - - Reset(); - } - - void EnterEvadeMode() - { - ScriptedAI::EnterEvadeMode(); - - IsFleeing = false; - - //Handle Evade events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - if ((*i).Event.event_type == EVENT_T_EVADE) - ProcessEvent(*i); - } - } - - void JustDied(Unit* killer) - { - IsFleeing = false; - Reset(); - - //Handle Evade events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - //Evade - case EVENT_T_DEATH: - ProcessEvent(*i, killer); - break; - } - } - } - - void KilledUnit(Unit* victim) - { - if (victim->GetTypeId() != TYPEID_PLAYER) - return; - - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - //Kill - case EVENT_T_KILL: - ProcessEvent(*i, victim); - break; - } - } - - } - - void JustSummoned(Creature* pUnit) - { - if (!pUnit) - return; - - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - //Summoned - case EVENT_T_SUMMONED_UNIT: - ProcessEvent(*i, pUnit); - break; - } - } - } - - void Aggro(Unit *who) - { - //Check for on combat start events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - case EVENT_T_AGGRO: - (*i).Enabled = true; - ProcessEvent(*i, who); - break; - //Reset all in combat timers - case EVENT_T_TIMER: - if ((*i).Event.event_param2 == (*i).Event.event_param1) - { - (*i).Time = (*i).Event.event_param1; - (*i).Enabled = true; - }else if ((*i).Event.event_param2 > (*i).Event.event_param1) - { - (*i).Time = urand((*i).Event.event_param1, (*i).Event.event_param2); - (*i).Enabled = true; - }else if (EAI_ErrorLevel > 0) - error_db_log("TSCR: Creature %u using Event %u (Type = %u) has InitialMax < InitialMin. Event disabled.", m_creature->GetEntry(), (*i).Event.event_id, (*i).Event.event_type); - break; - //All normal events need to be re-enabled and their time set to 0 - default: - (*i).Enabled = true; - (*i).Time = 0; - break; - } - } - - EventUpdateTime = EVENT_UPDATE_TIME; - EventDiff = 0; - } - - void AttackStart(Unit *who) - { - if (!who) - return; - - if (m_creature->Attack(who, MeleeEnabled)) - { - //Begin melee attack if we are within range - - if (!m_creature->isInCombat()) - { - Aggro(who); - } - - if (CombatMovementEnabled) - { - m_creature->GetMotionMaster()->MoveChase(who, AttackDistance, AttackAngle); - } - else - { - m_creature->GetMotionMaster()->MoveIdle(); - } - } - } - - void MoveInLineOfSight(Unit *who) - { - if (!who || m_creature->isInCombat()) - return; - - //Check for OOC LOS Event - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - case EVENT_T_OOC_LOS: - { - if ((*i).Event.event_param1 && m_creature->IsHostileTo(who)) - break; - - if ((*i).Event.event_param2 && !m_creature->IsHostileTo(who)) - break; - - ProcessEvent(*i, who); - } - break; - } - } - - // do we need this? - //if (m_creature->isCivilian() && m_creature->IsNeutralToAll()) - // return; - - if(m_creature->canStartAttack(who)) - AttackStart(who); - } - - void SpellHit(Unit* pUnit, const SpellEntry* pSpell) - { - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - //Spell hit - case EVENT_T_SPELLHIT: - { - //If spell id matches (or no spell id) & if spell school matches (or no spell school) - if (!(*i).Event.event_param1 || pSpell->Id == (*i).Event.event_param1) - if ((*i).Event.event_param2_s == -1 || pSpell->SchoolMask == (*i).Event.event_param2) - ProcessEvent(*i, pUnit); - } - break; - } - } - } - - void UpdateAI(const uint32 diff) - { - //Check if we are in combat (also updates calls threat update code) - bool Combat = m_creature->isInCombat() ? UpdateVictim() : false; - - //Must return if creature isn't alive. Normally select hostil target and get victim prevent this - if (!m_creature->isAlive()) - return; - - if (IsFleeing) - { - if(TimetoFleeLeft < diff) - { - m_creature->SetControlled(false, UNIT_STAT_FLEEING); - m_creature->SetNoCallAssistance(false); - m_creature->CallAssistance(); - if(m_creature->getVictim()) - m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); - IsFleeing = false; - } - else - TimetoFleeLeft -= diff; - - return; - } - - //Events are only updated once every EVENT_UPDATE_TIME ms to prevent lag with large amount of events - if (EventUpdateTime < diff) - { - EventDiff += diff; - - //Check for range based events - //if (m_creature->GetDistance(m_creature->getVictim()) > - if (Combat) - { - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - switch ((*i).Event.event_type) - { - case EVENT_T_RANGE: - // in some cases this is called twice and victim may not exist in the second time - if(m_creature->getVictim()) - { - float dist = m_creature->GetDistance(m_creature->getVictim()); - if (dist > (*i).Event.event_param1 && dist < (*i).Event.event_param2) - ProcessEvent(*i); - } - break; - } - } - } - - //Check for time based events - for (std::list::iterator i = EventList.begin(); i != EventList.end(); ++i) - { - //Decrement Timers - if ((*i).Time) - { - if ((*i).Time > EventDiff) - { - //Do not decrement timers if event cannot trigger in this phase - if (!((*i).Event.event_inverse_phase_mask & (1 << Phase))) - (*i).Time -= EventDiff; - - //Skip processing of events that have time remaining - continue; - } - else (*i).Time = 0; - } - - //Events that are updated every EVENT_UPDATE_TIME - switch ((*i).Event.event_type) - { - case EVENT_T_TIMER_OOC: - ProcessEvent(*i); - break; - case EVENT_T_TIMER: - case EVENT_T_MANA: - case EVENT_T_HP: - case EVENT_T_TARGET_HP: - case EVENT_T_TARGET_CASTING: - case EVENT_T_FRIENDLY_HP: - if (Combat) - ProcessEvent(*i); - break; - case EVENT_T_RANGE: - if (Combat) - { - if (m_creature->IsWithinDistInMap(m_creature->getVictim(),(float)(*i).Event.event_param2)) - { - if (m_creature->GetDistance(m_creature->getVictim()) >= (float)(*i).Event.event_param1) - ProcessEvent(*i); - } - } - break; - } - } - - EventDiff = 0; - EventUpdateTime = EVENT_UPDATE_TIME; - } - else - { - EventDiff += diff; - EventUpdateTime -= diff; - } - - //Melee Auto-Attack - if (Combat && MeleeEnabled) - DoMeleeAttackIfReady(); - - } -}; - -CreatureAI* GetAI_Mob_EventAI(Creature *pCreature) -{ - //Select events by creature id - std::list EventList; - - //Find creature id in the Event map - UNORDERED_MAP >::iterator CreatureEvents = EventAI_Event_Map.find(pCreature->GetEntry()); - - if (CreatureEvents != EventAI_Event_Map.end()) - { - std::vector::iterator i; - - for (i = (*CreatureEvents).second.begin(); i != (*CreatureEvents).second.end(); ++i) - { - //Debug check -#ifndef _DEBUG - if ((*i).event_flags & EFLAG_DEBUG_ONLY) - continue; -#endif - if( pCreature->GetMap()->IsDungeon() ) - { - if ((pCreature->GetMap()->IsHeroic() && (*i).event_flags & EFLAG_HEROIC) || (!pCreature->GetMap()->IsHeroic() && (*i).event_flags & EFLAG_NORMAL)) - EventList.push_back(EventHolder(*i)); - continue; - } - - EventList.push_back(EventHolder(*i)); - } - - //EventMap had events but they were not added because they must be for instance - if (EventList.empty()) - { - if (EAI_ErrorLevel > 1) - error_db_log("TSCR: CreatureId has events but no events added to list because of instance flags.", pCreature->GetEntry()); - } - } - else - { - if (EAI_ErrorLevel > 1) - error_db_log("TSCR: EventMap for Creature %u is empty but creature is using Mob_EventAI.", pCreature->GetEntry()); - } - - return new Mob_EventAI (pCreature, EventList); -} - -void AddSC_mob_event() -{ - Script *newscript; - newscript = new Script; - newscript->Name = "mob_eventai"; - newscript->GetAI = &GetAI_Mob_EventAI; - newscript->RegisterSelf(); -} - diff --git a/src/bindings/scripts/scripts/creature/mob_event_ai.h b/src/bindings/scripts/scripts/creature/mob_event_ai.h deleted file mode 100644 index e1b952b4e25..00000000000 --- a/src/bindings/scripts/scripts/creature/mob_event_ai.h +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (C) 2006 - 2008 ScriptDev2 - * This program is free software licensed under GPL version 2 - * Please see the included DOCS/LICENSE.TXT for more information */ - -#ifndef SC_EVENTAI_H -#define SC_EVENTAI_H - -#define MAX_ACTIONS 3 - -enum Event_Types -{ - EVENT_T_TIMER = 0, //InitialMin, InitialMax, RepeatMin, RepeatMax - EVENT_T_TIMER_OOC = 1, //InitialMin, InitialMax, RepeatMin, RepeatMax - EVENT_T_HP = 2, //HPMax%, HPMin%, RepeatMin, RepeatMax - EVENT_T_MANA = 3, //ManaMax%,ManaMin% RepeatMin, RepeatMax - EVENT_T_AGGRO = 4, //NONE - EVENT_T_KILL = 5, //RepeatMin, RepeatMax - EVENT_T_DEATH = 6, //NONE - EVENT_T_EVADE = 7, //NONE - EVENT_T_SPELLHIT = 8, //SpellID, School, RepeatMin, RepeatMax - EVENT_T_RANGE = 9, //MinDist, MaxDist, RepeatMin, RepeatMax - EVENT_T_OOC_LOS = 10, //NoHostile, NoFriendly, RepeatMin, RepeatMax - EVENT_T_SPAWNED = 11, //NONE - EVENT_T_TARGET_HP = 12, //HPMax%, HPMin%, RepeatMin, RepeatMax - EVENT_T_TARGET_CASTING = 13, //RepeatMin, RepeatMax - EVENT_T_FRIENDLY_HP = 14, //HPDeficit, Radius, RepeatMin, RepeatMax - EVENT_T_FRIENDLY_IS_CC = 15, //DispelType, Radius, RepeatMin, RepeatMax - EVENT_T_FRIENDLY_MISSING_BUFF = 16, //SpellId, Radius, RepeatMin, RepeatMax - EVENT_T_SUMMONED_UNIT = 17, //CreatureId, RepeatMin, RepeatMax - EVENT_T_TARGET_MANA = 18, //ManaMax%, ManaMin%, RepeatMin, RepeatMax - EVENT_T_QUEST_ACCEPT = 19, //QuestID - EVENT_T_QUEST_COMPLETE = 20, // - EVENT_T_REACHED_HOME = 21, //NONE - - EVENT_T_END, -}; - -enum Action_Types -{ - ACTION_T_NONE = 0, //No action - ACTION_T_TEXT = 1, //-TextId1, optionally -TextId2, optionally -TextId3(if -TextId2 exist). If more than just -TextId1 is defined, randomize. Negative values. - ACTION_T_SET_FACTION = 2, //FactionId (or 0 for default) - ACTION_T_MORPH_TO_ENTRY_OR_MODEL = 3, //Creature_template entry(param1) OR ModelId (param2) (or 0 for both to demorph) - ACTION_T_SOUND = 4, //SoundId - ACTION_T_EMOTE = 5, //EmoteId - ACTION_T_RANDOM_SAY = 6, //UNUSED - ACTION_T_RANDOM_YELL = 7, //UNUSED - ACTION_T_RANDOM_TEXTEMOTE = 8, //UNUSED - ACTION_T_RANDOM_SOUND = 9, //SoundId1, SoundId2, SoundId3 (-1 in any field means no output if randomed that field) - ACTION_T_RANDOM_EMOTE = 10, //EmoteId1, EmoteId2, EmoteId3 (-1 in any field means no output if randomed that field) - ACTION_T_CAST = 11, //SpellId, Target, CastFlags - ACTION_T_SUMMON = 12, //CreatureID, Target, Duration in ms - ACTION_T_THREAT_SINGLE_PCT = 13, //Threat%, Target - ACTION_T_THREAT_ALL_PCT = 14, //Threat% - ACTION_T_QUEST_EVENT = 15, //QuestID, Target - ACTION_T_CASTCREATUREGO = 16, //QuestID, SpellId, Target - ACTION_T_SET_UNIT_FIELD = 17, //Field_Number, Value, Target - ACTION_T_SET_UNIT_FLAG = 18, //Flags (may be more than one field OR'd together), Target - ACTION_T_REMOVE_UNIT_FLAG = 19, //Flags (may be more than one field OR'd together), Target - ACTION_T_AUTO_ATTACK = 20, //AllowAttackState (0 = stop attack, anything else means continue attacking) - ACTION_T_COMBAT_MOVEMENT = 21, //AllowCombatMovement (0 = stop combat based movement, anything else continue attacking) - ACTION_T_SET_PHASE = 22, //Phase - ACTION_T_INC_PHASE = 23, //Value (may be negative to decrement phase, should not be 0) - ACTION_T_EVADE = 24, //No Params - ACTION_T_FLEE = 25, //No Params - ACTION_T_QUEST_EVENT_ALL = 26, //QuestID - ACTION_T_CASTCREATUREGO_ALL = 27, //QuestId, SpellId - ACTION_T_REMOVEAURASFROMSPELL = 28, //Target, Spellid - ACTION_T_RANGED_MOVEMENT = 29, //Distance, Angle - ACTION_T_RANDOM_PHASE = 30, //PhaseId1, PhaseId2, PhaseId3 - ACTION_T_RANDOM_PHASE_RANGE = 31, //PhaseMin, PhaseMax - ACTION_T_SUMMON_ID = 32, //CreatureId, Target, SpawnId - ACTION_T_KILLED_MONSTER = 33, //CreatureId, Target - ACTION_T_SET_INST_DATA = 34, //Field, Data - ACTION_T_SET_INST_DATA64 = 35, //Field, Target - ACTION_T_UPDATE_TEMPLATE = 36, //Entry, Team - ACTION_T_DIE = 37, //No Params - ACTION_T_ZONE_COMBAT_PULSE = 38, //No Params - - ACTION_T_SET_ACTIVE = 101, //Apply - ACTION_T_SET_AGGRESSIVE = 102, //Apply - ACTION_T_ATTACK_START_PULSE = 103, //Distance - ACTION_T_SUMMON_GO = 104, //GameObjectID, DespawnTime in ms - - ACTION_T_END, -}; - -enum Target -{ - //Self (m_creature) - TARGET_T_SELF = 0, //Self cast - - //Hostile targets (if pet then returns pet owner) - TARGET_T_HOSTILE, //Our current target (ie: highest aggro) - TARGET_T_HOSTILE_SECOND_AGGRO, //Second highest aggro (generaly used for cleaves and some special attacks) - TARGET_T_HOSTILE_LAST_AGGRO, //Dead last on aggro (no idea what this could be used for) - TARGET_T_HOSTILE_RANDOM, //Just any random target on our threat list - TARGET_T_HOSTILE_RANDOM_NOT_TOP, //Any random target except top threat - - //Invoker targets (if pet then returns pet owner) - TARGET_T_ACTION_INVOKER, //Unit who caused this Event to occur (only works for EVENT_T_AGGRO, EVENT_T_KILL, EVENT_T_DEATH, EVENT_T_SPELLHIT, EVENT_T_OOC_LOS, EVENT_T_FRIENDLY_HP, EVENT_T_FRIENDLY_IS_CC, EVENT_T_FRIENDLY_MISSING_BUFF) - - //Hostile targets (including pets) - TARGET_T_HOSTILE_WPET, //Current target (can be a pet) - TARGET_T_HOSTILE_WPET_SECOND_AGGRO, //Second highest aggro (generaly used for cleaves and some special attacks) - TARGET_T_HOSTILE_WPET_LAST_AGGRO, //Dead last on aggro (no idea what this could be used for) - TARGET_T_HOSTILE_WPET_RANDOM, //Just any random target on our threat list - TARGET_T_HOSTILE_WPET_RANDOM_NOT_TOP, //Any random target except top threat - - TARGET_T_ACTION_INVOKER_WPET, - - TARGET_T_END -}; - -enum CastFlags -{ - CAST_INTURRUPT_PREVIOUS = 0x01, //Interrupt any spell casting - CAST_TRIGGERED = 0x02, //Triggered (this makes spell cost zero mana and have no cast time) - CAST_FORCE_CAST = 0x04, //Forces cast even if creature is out of mana or out of range - CAST_NO_MELEE_IF_OOM = 0x08, //Prevents creature from entering melee if out of mana or out of range - CAST_FORCE_TARGET_SELF = 0x10, //Forces the target to cast this spell on itself - CAST_AURA_NOT_PRESENT = 0x20, //Only casts the spell if the target does not have an aura from the spell -}; - -enum EventFlags -{ - EFLAG_REPEATABLE = 0x01, //Event repeats - EFLAG_NORMAL = 0x02, //Event only occurs in Normal instance difficulty - EFLAG_HEROIC = 0x04, //Event only occurs in Heroic instance difficulty - EFLAG_RESERVED_3 = 0x08, - EFLAG_RESERVED_4 = 0x10, - EFLAG_RESERVED_5 = 0x20, - EFLAG_RESERVED_6 = 0x40, - EFLAG_DEBUG_ONLY = 0x80, //Event only occurs in debug build of SD2 only -}; - -struct EventAI_Event -{ - uint32 event_id; - - uint32 creature_id; - - uint16 event_type; - uint32 event_inverse_phase_mask; - uint8 event_chance; - uint8 event_flags; - union - { - uint32 event_param1; - int32 event_param1_s; - }; - union - { - uint32 event_param2; - int32 event_param2_s; - }; - union - { - uint32 event_param3; - int32 event_param3_s; - }; - union - { - uint32 event_param4; - int32 event_param4_s; - }; - - struct _action - { - uint16 type; - union - { - uint32 param1; - int32 param1_s; - }; - union - { - uint32 param2; - int32 param2_s; - }; - union - { - uint32 param3; - int32 param3_s; - }; - }action[MAX_ACTIONS]; -}; - -//Event_Map -extern UNORDERED_MAP > EventAI_Event_Map; - -struct EventAI_Summon -{ - uint32 id; - - float position_x; - float position_y; - float position_z; - float orientation; - uint32 SpawnTimeSecs; -}; - -//EventSummon_Map -extern UNORDERED_MAP EventAI_Summon_Map; - -//EventAI Error handling -extern uint32 EAI_ErrorLevel; -/* - -struct EventAI_CreatureError -{ - bool ListEmpty; - bool NoInstance; -}; - -//Error prevention list -extern UNORDERED_MAP EventAI_CreatureErrorPreventionList; - -//Defines -#define EVENTAI_EMPTY_EVENTLIST "TSCR: Eventlist for Creature %i is empty but creature is using Mob_EventAI. Preventing EventAI on this creature." -*/ -#endif - -- cgit v1.2.3 From 0085745c42eb7e4a483614e5038860c31638123f Mon Sep 17 00:00:00 2001 From: Kudlaty Date: Wed, 17 Jun 2009 09:39:50 +0200 Subject: Merge [SD2] r1026 Added save/load to blood furnace instance script. r1027 Remove manual summons and teleport for boss morogrim, replace with proper spells. Apply sd2 code style. r1028 Replace SetUInt32Value for display id with function SetDisplayId. r1029 Simplify spawn of adds for hydross and use combatStartPosition instead of hard coded values for radius check. SD2 code style applied. r1030 Remove call Aggro in AttackStart and start use EnterCombat AI function. Note Aggro will still be called like normal, but no longer required defined in scripts. --HG-- branch : trunk --- src/bindings/scripts/scripts/npc/npc_escortAI.cpp | 12 + src/bindings/scripts/scripts/npc/npc_escortAI.h | 4 + .../sethekk_halls/instance_sethekk_halls.cpp | 2 +- .../scripts/zone/black_temple/boss_illidan.cpp | 14 +- .../scripts/zone/black_temple/illidari_council.cpp | 2 +- .../scripts/zone/blackrock_spire/boss_gyth.cpp | 6 +- .../zone/caverns_of_time/hyjal/boss_archimonde.cpp | 2 +- .../zone/caverns_of_time/hyjal/hyjal_trash.cpp | 4 +- .../old_hillsbrad/old_hillsbrad.cpp | 4 +- .../serpent_shrine/boss_hydross_the_unstable.cpp | 424 +++++++++------------ .../serpent_shrine/boss_lady_vashj.cpp | 2 +- .../serpent_shrine/boss_leotheras_the_blind.cpp | 12 +- .../serpent_shrine/boss_morogrim_tidewalker.cpp | 408 +++++++++----------- .../eastern_plaguelands/the_scarlet_enclave.cpp | 4 +- .../blood_furnace/instance_blood_furnace.cpp | 40 +- .../scripts/zone/karazhan/boss_midnight.cpp | 2 +- .../zone/karazhan/boss_prince_malchezaar.cpp | 4 +- .../scripts/scripts/zone/maraudon/boss_noxxion.cpp | 4 +- .../zone/scholomance/boss_jandice_barov.cpp | 4 +- .../zone/shadowmoon_valley/shadowmoon_valley.cpp | 6 +- .../zone/stratholme/boss_dathrohan_balnazzar.cpp | 4 +- .../zone/stratholme/boss_magistrate_barthilas.cpp | 6 +- .../zone/tempest_keep/botanica/boss_laj.cpp | 12 +- .../zone/tempest_keep/the_eye/boss_astromancer.cpp | 6 +- .../utgarde_keep/boss_ingvar_the_plunderer.cpp | 4 +- .../scripts/scripts/zone/zulaman/boss_hexlord.cpp | 2 +- .../scripts/scripts/zone/zulgurub/boss_arlokk.cpp | 10 +- .../scripts/scripts/zone/zulgurub/boss_jeklik.cpp | 2 +- .../scripts/scripts/zone/zulgurub/boss_marli.cpp | 2 +- 29 files changed, 474 insertions(+), 534 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index 681cf05e272..87b49856b87 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -33,6 +33,18 @@ void npc_escortAI::AttackStart(Unit *who) } } +void npc_escortAI::EnterCombat(Unit* pEnemy) +{ + if (!pEnemy) + return; + + Aggro(pEnemy); +} + +void npc_escortAI::Aggro(Unit* pEnemy) +{ +} + void npc_escortAI::MoveInLineOfSight(Unit *who) { if (IsBeingEscorted && !Attack) diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.h b/src/bindings/scripts/scripts/npc/npc_escortAI.h index 3431e84c6f8..3f5af2e99d3 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.h +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.h @@ -34,12 +34,16 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI // Pure Virtual Functions virtual void WaypointReached(uint32) = 0; + virtual void Aggro(Unit*); + // CreatureAI functions npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), DespawnAtEnd(true), DespawnAtFar(true) {} void AttackStart(Unit* who); + void EnterCombat(Unit*); + void MoveInLineOfSight(Unit* who); void JustRespawned(); diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp index 9e0ee3ad8c7..c18a9dc52b9 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp @@ -37,7 +37,7 @@ struct TRINITY_DLL_DECL instance_sethekk_halls : public ScriptedInstance m_uiIkissDoorGUID = 0; } - void OnObjectCreate(GameObject* pGo) + void OnGameObjectCreate(GameObject *pGo, bool add) { if (pGo->GetEntry() == IKISS_DOOR) m_uiIkissDoorGUID = pGo->GetGUID(); diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index a045218f00a..897c4937230 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -565,7 +565,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI { GlaiveGUID[i] = Glaive->GetGUID(); Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + Glaive->SetDisplayId(11686); Glaive->setFaction(m_creature->getFaction()); DoCast(Glaive, SPELL_THROW_GLAIVE2); } @@ -581,7 +581,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI { GlaiveGUID[i] = Glaive->GetGUID(); Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + Glaive->SetDisplayId(11686); Glaive->setFaction(m_creature->getFaction()); DoCast(Glaive, SPELL_THROW_GLAIVE, true); } @@ -609,7 +609,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI if(Glaive) { Glaive->CastSpell(m_creature, SPELL_GLAIVE_RETURNS, false); // Make it look like the Glaive flies back up to us - Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); // disappear but not die for now + Glaive->SetDisplayId(11686); // disappear but not die for now } } } @@ -654,7 +654,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI DoCast(m_creature, DemonTransformation[TransformCount].aura, true); if(DemonTransformation[TransformCount].displayid) - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, DemonTransformation[TransformCount].displayid); // It's morphin time! + m_creature->SetDisplayId(DemonTransformation[TransformCount].displayid); // It's morphin time! if(DemonTransformation[TransformCount].equip) { @@ -1100,7 +1100,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI if(Creature* Channel = m_creature->SummonCreature(ILLIDAN_DOOR_TRIGGER, x, y, z+5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000)) { ChannelGUID = Channel->GetGUID(); - Channel->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); // Invisible but spell visuals can still be seen. + Channel->SetDisplayId(11686); // Invisible but spell visuals can still be seen. m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); DoCast(Channel, SPELL_AKAMA_DOOR_FAIL); } @@ -1793,7 +1793,7 @@ struct TRINITY_DLL_DECL blade_of_azzinothAI : public NullCreatureAI void SpellHit(Unit *caster, const SpellEntry *spell) { if(spell->Id == SPELL_THROW_GLAIVE2 || spell->Id == SPELL_THROW_GLAIVE) - me->SetUInt32Value(UNIT_FIELD_DISPLAYID, 21431);//appear when hit by Illidan's glaive + me->SetDisplayId(21431);//appear when hit by Illidan's glaive } }; @@ -1834,7 +1834,7 @@ void boss_illidan_stormrageAI::Reset() FlightCount = 0; TransformCount = 0; - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 21135); + m_creature->SetDisplayId(21135); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); diff --git a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp index ae8c6ece29f..e045c02bda8 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp @@ -240,7 +240,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + m_creature->SetDisplayId(11686); } void EnterCombat(Unit *who) {} diff --git a/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp b/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp index e48c832e3b0..196077a1292 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp @@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI Line2Count = 2; //Invisible for event start - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + m_creature->SetDisplayId(11686); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI { bAggro = true; // Visible now! - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 9723); + m_creature->SetDisplayId(9723); m_creature->setFaction(14); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } else Aggro_Timer -= diff; @@ -180,7 +180,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI //Inturrupt any spell casting m_creature->InterruptNonMeleeSpells(false); //Gyth model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 9806); + m_creature->SetDisplayId(9806); m_creature->SummonCreature(10429, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000); SummonedRend = true; } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp index 92195cc73b6..9f15b45a3ac 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp @@ -458,7 +458,7 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public hyjal_trashAI if (Unit *Nordrassil = Unit::GetUnit(*m_creature, WorldTreeGUID)) { Nordrassil->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - Nordrassil->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + Nordrassil->SetDisplayId(11686); DoCast(Nordrassil, SPELL_DRAIN_WORLD_TREE); IsChanneling = true; } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 0ece895ec8d..cb833ba77fe 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -381,7 +381,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI Delay = rand()%30000; m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS); + m_creature->SetDisplayId(MODEL_INVIS); go = false; pos = 0; Reset(); @@ -447,7 +447,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI { m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID)); + m_creature->SetDisplayId(m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID)); CanMove = true; if (pInstance) { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp index 04550ec624e..6607c7c7939 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp @@ -209,7 +209,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI //m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038); break; case 10: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_EQUIPPED); + m_creature->SetDisplayId(THRALL_MODEL_EQUIPPED); break; case 11: SetRun(); @@ -375,7 +375,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI HadMount = false; m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_UNEQUIPPED); + m_creature->SetDisplayId(THRALL_MODEL_UNEQUIPPED); } if( IsBeingEscorted ) { diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp index 2de639ad0bb..5fdb461a9b0 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp @@ -6,381 +6,321 @@ * * 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 + * 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* ScriptData SDName: Boss_Hydross_The_Unstable SD%Complete: 90 -SDComment: Some details and adjustments left to do, probably nothing major. Spawns may be spawned in different way/location. +SDComment: Some details and adjustments left to do, probably nothing major. Spawns may be spawned in different way/location. code cleanup needed SDCategory: Coilfang Resevoir, Serpent Shrine Cavern EndScriptData */ #include "precompiled.h" #include "def_serpent_shrine.h" -#define SAY_AGGRO -1548000 -#define SAY_SWITCH_TO_CLEAN -1548001 -#define SAY_CLEAN_SLAY1 -1548002 -#define SAY_CLEAN_SLAY2 -1548003 -#define SAY_CLEAN_DEATH -1548004 -#define SAY_SWITCH_TO_CORRUPT -1548005 -#define SAY_CORRUPT_SLAY1 -1548006 -#define SAY_CORRUPT_SLAY2 -1548007 -#define SAY_CORRUPT_DEATH -1548008 - -#define SWITCH_RADIUS 18 - -#define MODEL_CORRUPT 20609 -#define MODEL_CLEAN 20162 - -#define SPELL_WATER_TOMB 38235 -#define SPELL_MARK_OF_HYDROSS1 38215 -#define SPELL_MARK_OF_HYDROSS2 38216 -#define SPELL_MARK_OF_HYDROSS3 38217 -#define SPELL_MARK_OF_HYDROSS4 38218 -#define SPELL_MARK_OF_HYDROSS5 38231 -#define SPELL_MARK_OF_HYDROSS6 40584 -#define SPELL_MARK_OF_CORRUPTION1 38219 -#define SPELL_MARK_OF_CORRUPTION2 38220 -#define SPELL_MARK_OF_CORRUPTION3 38221 -#define SPELL_MARK_OF_CORRUPTION4 38222 -#define SPELL_MARK_OF_CORRUPTION5 38230 -#define SPELL_MARK_OF_CORRUPTION6 40583 -#define SPELL_VILE_SLUDGE 38246 -#define SPELL_ENRAGE 27680 //this spell need verification -#define SPELL_SUMMON_WATER_ELEMENT 36459 //not in use yet(in use ever?) -#define SPELL_ELEMENTAL_SPAWNIN 25035 -#define SPELL_BLUE_BEAM /*40227*/40227 //channeled Hydross Beam Helper (not in use yet) - -#define ENTRY_PURE_SPAWN 22035 -#define ENTRY_TAINTED_SPAWN 22036 -#define ENTRY_BEAM_DUMMY 21934 - -#define HYDROSS_X -239.439 -#define HYDROSS_Y -363.481 - -#define SPAWN_X_DIFF1 6.934003 -#define SPAWN_Y_DIFF1 -11.255012 -#define SPAWN_X_DIFF2 -6.934003 -#define SPAWN_Y_DIFF2 11.255012 -#define SPAWN_X_DIFF3 -12.577011 -#define SPAWN_Y_DIFF3 -4.72702 -#define SPAWN_X_DIFF4 12.577011 -#define SPAWN_Y_DIFF4 4.72702 +enum +{ + SAY_AGGRO = -1548000, + SAY_SWITCH_TO_CLEAN = -1548001, + SAY_CLEAN_SLAY1 = -1548002, + SAY_CLEAN_SLAY2 = -1548003, + SAY_CLEAN_DEATH = -1548004, + SAY_SWITCH_TO_CORRUPT = -1548005, + SAY_CORRUPT_SLAY1 = -1548006, + SAY_CORRUPT_SLAY2 = -1548007, + SAY_CORRUPT_DEATH = -1548008, + + SWITCH_RADIUS = 18, + + MODEL_CORRUPT = 20609, + MODEL_CLEAN = 20162, + + SPELL_WATER_TOMB = 38235, + SPELL_MARK_OF_HYDROSS1 = 38215, + SPELL_MARK_OF_HYDROSS2 = 38216, + SPELL_MARK_OF_HYDROSS3 = 38217, + SPELL_MARK_OF_HYDROSS4 = 38218, + SPELL_MARK_OF_HYDROSS5 = 38231, + SPELL_MARK_OF_HYDROSS6 = 40584, + SPELL_MARK_OF_CORRUPTION1 = 38219, + SPELL_MARK_OF_CORRUPTION2 = 38220, + SPELL_MARK_OF_CORRUPTION3 = 38221, + SPELL_MARK_OF_CORRUPTION4 = 38222, + SPELL_MARK_OF_CORRUPTION5 = 38230, + SPELL_MARK_OF_CORRUPTION6 = 40583, + SPELL_VILE_SLUDGE = 38246, + SPELL_ENRAGE = 27680, //this spell need verification + SPELL_SUMMON_WATER_ELEMENT = 36459, //not in use yet(in use ever?) + SPELL_ELEMENTAL_SPAWNIN = 25035, + SPELL_BLUE_BEAM = 38015, //channeled Hydross Beam Helper (not in use yet) + + NPC_PURE_SPAWN = 22035, + NPC_TAINTED_SPAWN = 22036 +}; + +const float afSpawnDiffs[4][2] = +{ + {6.934003f , -11.255012f}, // diff 1 + {-6.934003f , 11.255012f }, // diff 2 + {-12.577011f, -4.72702f }, // diff 3 + {12.577011f , 4.72702f } // diff 4 +}; struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI { - boss_hydross_the_unstableAI(Creature *c) : ScriptedAI(c), Summons(m_creature) + boss_hydross_the_unstableAI(Creature *c) : ScriptedAI(c) { - pInstance = c->GetInstanceData(); + m_pInstance = c->GetInstanceData(); } - ScriptedInstance* pInstance; - uint64 beams[2]; - uint32 PosCheck_Timer; - uint32 MarkOfHydross_Timer; - uint32 MarkOfCorruption_Timer; - uint32 WaterTomb_Timer; - uint32 VileSludge_Timer; - uint32 MarkOfHydross_Count; - uint32 MarkOfCorruption_Count; - uint32 EnrageTimer; - bool CorruptedForm; - bool beam; - SummonList Summons; + ScriptedInstance* m_pInstance; // the instance + + uint32 m_uiPosCheck_Timer; + uint32 m_uiMarkOfHydross_Timer; + uint32 m_uiMarkOfCorruption_Timer; + uint32 m_uiWaterTomb_Timer; + uint32 m_uiVileSludge_Timer; + uint32 m_uiMarkOfHydross_Count; + uint32 m_uiMarkOfCorruption_Count; + uint32 m_uiEnrageTimer; + bool m_bCorruptedForm; void Reset() { - DeSummonBeams(); - beams[0] = 0; - beams[1] = 0; - PosCheck_Timer = 2500; - MarkOfHydross_Timer = 15000; - MarkOfCorruption_Timer = 15000; - WaterTomb_Timer = 7000; - VileSludge_Timer = 7000; - MarkOfHydross_Count = 0; - MarkOfCorruption_Count = 0; - EnrageTimer = 600000; - - CorruptedForm = false; + m_uiPosCheck_Timer = 2500; + m_uiMarkOfHydross_Timer = 15000; + m_uiMarkOfCorruption_Timer = 15000; + m_uiWaterTomb_Timer = 7000; + m_uiVileSludge_Timer = 7000; + m_uiMarkOfHydross_Count = 0; + m_uiMarkOfCorruption_Count = 0; + m_uiEnrageTimer = 600000; + + m_bCorruptedForm = false; + m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CLEAN); + m_creature->SetDisplayId(MODEL_CLEAN); - if (pInstance) - pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); - beam = false; - Summons.DespawnAll(); + if (m_pInstance) + m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); } - void SummonBeams() - { - Creature* beamer = m_creature->SummonCreature(ENTRY_BEAM_DUMMY,-258.333,-356.34,22.0499,5.90835,TEMPSUMMON_CORPSE_DESPAWN,0); - if(beamer) - { - beamer->CastSpell(m_creature,SPELL_BLUE_BEAM,true); - beamer->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible - beamer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - beams[0]=beamer->GetGUID(); - } - beamer = beamer = m_creature->SummonCreature(ENTRY_BEAM_DUMMY,-219.918,-371.308,22.0042,2.73072,TEMPSUMMON_CORPSE_DESPAWN,0); - if(beamer) - { - beamer->CastSpell(m_creature,SPELL_BLUE_BEAM,true); - beamer->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible - beamer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - beams[1]=beamer->GetGUID(); - } - } - void DeSummonBeams() - { - for(uint8 i=0;i<2;i++) - { - Creature* mob = Unit::GetCreature(*m_creature,beams[i]); - if(mob) - { - mob->setDeathState(DEAD); - mob->RemoveCorpse(); - } - } - } - void EnterCombat(Unit *who) + void Aggro(Unit* pWho) { DoScriptText(SAY_AGGRO, m_creature); - if (pInstance) - pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS); + if (m_pInstance) + m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* pVictim) { - if (CorruptedForm) - { - switch(rand()%2) - { - case 0: DoScriptText(SAY_CORRUPT_SLAY1, m_creature); break; - case 1: DoScriptText(SAY_CORRUPT_SLAY2, m_creature); break; - } - } + if (m_bCorruptedForm) + DoScriptText(urand(0,1) ? SAY_CORRUPT_SLAY1 : SAY_CORRUPT_SLAY2, m_creature); else - { - switch(rand()%2) - { - case 0: DoScriptText(SAY_CLEAN_SLAY1, m_creature); break; - case 1: DoScriptText(SAY_CLEAN_SLAY2, m_creature); break; - } - } + DoScriptText(urand(0,1) ? SAY_CLEAN_SLAY1 : SAY_CLEAN_SLAY2, m_creature); } - void JustSummoned(Creature* summoned) + void JustSummoned(Creature* pSummoned) { - if (summoned->GetEntry() == ENTRY_PURE_SPAWN) - { - summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); - summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true); - Summons.Summon(summoned); - } - if (summoned->GetEntry() == ENTRY_TAINTED_SPAWN) - { - summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); - summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true); - Summons.Summon(summoned); - } + if (pSummoned->GetEntry() == NPC_PURE_SPAWN) + pSummoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); + else if (pSummoned->GetEntry() == NPC_TAINTED_SPAWN) + pSummoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); + + pSummoned->CastSpell(pSummoned, SPELL_ELEMENTAL_SPAWNIN, true); } - void SummonedCreatureDespawn(Creature *summon) + void JustDied(Unit* pVictim) { - Summons.Despawn(summon); + DoScriptText(m_bCorruptedForm ? SAY_CORRUPT_DEATH : SAY_CLEAN_DEATH, m_creature); + + if (m_pInstance) + m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); } - void JustDied(Unit *victim) + void SpawnAdds() { - if (CorruptedForm) - DoScriptText(SAY_CORRUPT_DEATH, m_creature); + uint32 uiAdd = 0; + + if (m_bCorruptedForm) + uiAdd = NPC_TAINTED_SPAWN; else - DoScriptText(SAY_CLEAN_DEATH, m_creature); + uiAdd = NPC_PURE_SPAWN; - if (pInstance) - pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, DONE); - Summons.DespawnAll(); + for(uint8 i = 0; i < 4; i++) + DoSpawnCreature(uiAdd, afSpawnDiffs[i][0], afSpawnDiffs[i][1], 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0); } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { - if(!beam) - { - SummonBeams(); - beam=true; - } //Return since we have no target - if (!UpdateVictim() ) + if (!UpdateVictim()) return; // corrupted form - if (CorruptedForm) + if (m_bCorruptedForm) { //MarkOfCorruption_Timer - if (MarkOfCorruption_Timer < diff) + if (m_uiMarkOfCorruption_Timer < uiDiff) { - if (MarkOfCorruption_Count <= 5) + if (m_uiMarkOfCorruption_Count <= 5) { - uint32 mark_spell; + uint32 uiMarkSpell = 0; - switch(MarkOfCorruption_Count) + switch(m_uiMarkOfCorruption_Count) { - case 0: mark_spell = SPELL_MARK_OF_CORRUPTION1; break; - case 1: mark_spell = SPELL_MARK_OF_CORRUPTION2; break; - case 2: mark_spell = SPELL_MARK_OF_CORRUPTION3; break; - case 3: mark_spell = SPELL_MARK_OF_CORRUPTION4; break; - case 4: mark_spell = SPELL_MARK_OF_CORRUPTION5; break; - case 5: mark_spell = SPELL_MARK_OF_CORRUPTION6; break; + case 0: uiMarkSpell = SPELL_MARK_OF_CORRUPTION1; break; + case 1: uiMarkSpell = SPELL_MARK_OF_CORRUPTION2; break; + case 2: uiMarkSpell = SPELL_MARK_OF_CORRUPTION3; break; + case 3: uiMarkSpell = SPELL_MARK_OF_CORRUPTION4; break; + case 4: uiMarkSpell = SPELL_MARK_OF_CORRUPTION5; break; + case 5: uiMarkSpell = SPELL_MARK_OF_CORRUPTION6; break; } - DoCast(m_creature->getVictim(), mark_spell); + DoCast(m_creature->getVictim(), uiMarkSpell); - if (MarkOfCorruption_Count < 5) - MarkOfCorruption_Count++; + if (m_uiMarkOfCorruption_Count < 5) + ++m_uiMarkOfCorruption_Count; } - MarkOfCorruption_Timer = 15000; - }else MarkOfCorruption_Timer -= diff; + m_uiMarkOfCorruption_Timer = 15000; + }else m_uiMarkOfCorruption_Timer -= uiDiff; //VileSludge_Timer - if (VileSludge_Timer < diff) + if (m_uiVileSludge_Timer < uiDiff) { - Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0); - if (target) - DoCast(target, SPELL_VILE_SLUDGE); + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, SPELL_VILE_SLUDGE); - VileSludge_Timer = 15000; - }else VileSludge_Timer -= diff; + m_uiVileSludge_Timer = 15000; + }else m_uiVileSludge_Timer -= uiDiff; //PosCheck_Timer - if (PosCheck_Timer < diff) + if (m_uiPosCheck_Timer < uiDiff) { - if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) < SWITCH_RADIUS) - { - // switch to clean form - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CLEAN); - CorruptedForm = false; - MarkOfHydross_Count = 0; + float fPosX, fPosY, fPosZ, fPosO; + m_creature->GetHomePosition(fPosX, fPosY, fPosZ, fPosO); + if (m_creature->GetDistance2d(fPosX, fPosY) < SWITCH_RADIUS) + { DoScriptText(SAY_SWITCH_TO_CLEAN, m_creature); + + // switch to clean form + m_creature->SetDisplayId(MODEL_CLEAN); + m_uiMarkOfHydross_Count = 0; DoResetThreat(); - SummonBeams(); // spawn 4 adds - DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF1, SPAWN_Y_DIFF1, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF2, SPAWN_Y_DIFF2, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF3, SPAWN_Y_DIFF3, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF4, SPAWN_Y_DIFF4, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); + SpawnAdds(); m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); + + m_bCorruptedForm = false; } - PosCheck_Timer = 2500; - }else PosCheck_Timer -=diff; + m_uiPosCheck_Timer = 2500; + }else m_uiPosCheck_Timer -=uiDiff; } // clean form else { //MarkOfHydross_Timer - if (MarkOfHydross_Timer < diff) + if (m_uiMarkOfHydross_Timer < uiDiff) { - if (MarkOfHydross_Count <= 5) + if (m_uiMarkOfHydross_Count <= 5) { - uint32 mark_spell; + uint32 uiMarkSpell; - switch(MarkOfHydross_Count) + switch(m_uiMarkOfHydross_Count) { - case 0: mark_spell = SPELL_MARK_OF_HYDROSS1; break; - case 1: mark_spell = SPELL_MARK_OF_HYDROSS2; break; - case 2: mark_spell = SPELL_MARK_OF_HYDROSS3; break; - case 3: mark_spell = SPELL_MARK_OF_HYDROSS4; break; - case 4: mark_spell = SPELL_MARK_OF_HYDROSS5; break; - case 5: mark_spell = SPELL_MARK_OF_HYDROSS6; break; + case 0: uiMarkSpell = SPELL_MARK_OF_HYDROSS1; break; + case 1: uiMarkSpell = SPELL_MARK_OF_HYDROSS2; break; + case 2: uiMarkSpell = SPELL_MARK_OF_HYDROSS3; break; + case 3: uiMarkSpell = SPELL_MARK_OF_HYDROSS4; break; + case 4: uiMarkSpell = SPELL_MARK_OF_HYDROSS5; break; + case 5: uiMarkSpell = SPELL_MARK_OF_HYDROSS6; break; } - DoCast(m_creature->getVictim(), mark_spell); + DoCast(m_creature->getVictim(), uiMarkSpell); - if (MarkOfHydross_Count < 5) - MarkOfHydross_Count++; + if (m_uiMarkOfHydross_Count < 5) + ++m_uiMarkOfHydross_Count; } - MarkOfHydross_Timer = 15000; - }else MarkOfHydross_Timer -= diff; + m_uiMarkOfHydross_Timer = 15000; + }else m_uiMarkOfHydross_Timer -= uiDiff; //WaterTomb_Timer - if (WaterTomb_Timer < diff) + if (m_uiWaterTomb_Timer < uiDiff) { - Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0); - if (target) - DoCast(target, SPELL_WATER_TOMB); + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, SPELL_WATER_TOMB); - WaterTomb_Timer = 7000; - }else WaterTomb_Timer -= diff; + m_uiWaterTomb_Timer = 7000; + }else m_uiWaterTomb_Timer -= uiDiff; //PosCheck_Timer - if (PosCheck_Timer < diff) + if (m_uiPosCheck_Timer < uiDiff) { - if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) >= SWITCH_RADIUS) - { - // switch to corrupted form - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CORRUPT); - MarkOfCorruption_Count = 0; - CorruptedForm = true; + float fPosX, fPosY, fPosZ, fPosO; + m_creature->GetHomePosition(fPosX, fPosY, fPosZ, fPosO); + if (m_creature->GetDistance2d(fPosX, fPosY) >= SWITCH_RADIUS) + { DoScriptText(SAY_SWITCH_TO_CORRUPT, m_creature); + + // switch to corrupted form + m_creature->SetDisplayId(MODEL_CORRUPT); + m_uiMarkOfCorruption_Count = 0; DoResetThreat(); - DeSummonBeams(); // spawn 4 adds - DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF1, SPAWN_Y_DIFF1, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF2, SPAWN_Y_DIFF2, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF3, SPAWN_Y_DIFF3, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF4, SPAWN_Y_DIFF4, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); + SpawnAdds(); m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, false); + + m_bCorruptedForm = true; } - PosCheck_Timer = 2500; - }else PosCheck_Timer -=diff; + m_uiPosCheck_Timer = 2500; + }else m_uiPosCheck_Timer -=uiDiff; } //EnrageTimer - if (EnrageTimer < diff) + if (m_uiEnrageTimer < uiDiff) { DoCast(m_creature, SPELL_ENRAGE); - EnrageTimer = 60000; - }else EnrageTimer -= diff; + m_uiEnrageTimer = 60000; + }else m_uiEnrageTimer -= uiDiff; DoMeleeAttackIfReady(); } }; -CreatureAI* GetAI_boss_hydross_the_unstable(Creature *_Creature) + +CreatureAI* GetAI_boss_hydross_the_unstable(Creature* pCreature) { - return new boss_hydross_the_unstableAI (_Creature); + return new boss_hydross_the_unstableAI(pCreature); } void AddSC_boss_hydross_the_unstable() { Script *newscript; newscript = new Script; - newscript->Name="boss_hydross_the_unstable"; + newscript->Name = "boss_hydross_the_unstable"; newscript->GetAI = &GetAI_boss_hydross_the_unstable; newscript->RegisterSelf(); } - diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp index 2481e6d858f..e1fdcf5ab15 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp @@ -890,7 +890,7 @@ struct TRINITY_DLL_DECL mob_shield_generator_channelAI : public ScriptedAI { Check_Timer = 0; Casted = false; - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible + m_creature->SetDisplayId(11686); //invisible m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp index 020e3d09074..70190662516 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp @@ -187,7 +187,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI EnrageUsed = false; InnderDemon_Count = 0; m_creature->SetSpeed( MOVE_RUN, 2.0f, true); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); + m_creature->SetDisplayId(MODEL_NIGHTELF); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); @@ -270,7 +270,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI m_creature->ApplySpellImmune(AURA_BANISH, IMMUNITY_MECHANIC, MECHANIC_BANISH, true); // changing model to bloodelf - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); + m_creature->SetDisplayId(MODEL_NIGHTELF); // and reseting equipment m_creature->LoadEquipment(m_creature->GetEquipmentId()); @@ -292,7 +292,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI DoCast(m_creature, AURA_BANISH); // changing model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON); + m_creature->SetDisplayId(MODEL_DEMON); // and removing weapons m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); @@ -457,7 +457,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI { //switch to demon form m_creature->RemoveAurasDueToSpell(SPELL_WHIRLWIND,0); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON); + m_creature->SetDisplayId(MODEL_DEMON); DoScriptText(SAY_SWITCH_TO_DEMON, m_creature); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); @@ -534,7 +534,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI if(SwitchToHuman_Timer < diff) { //switch to nightelf form - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); + m_creature->SetDisplayId(MODEL_NIGHTELF); m_creature->LoadEquipment(m_creature->GetEquipmentId()); CastConsumingMadness(); @@ -563,7 +563,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI DemonForm = false; DoScriptText(SAY_FINAL_FORM, m_creature); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); + m_creature->SetDisplayId(MODEL_NIGHTELF); m_creature->LoadEquipment(m_creature->GetEquipmentId()); } } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index b014b4b1e45..0225773652f 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -1,289 +1,240 @@ /* Copyright (C) 2006 - 2009 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 -*/ + * 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_Morogrim_Tidewalker SD%Complete: 90 -SDComment: Water globules don't explode properly, remove hacks +SDComment: SDCategory: Coilfang Resevoir, Serpent Shrine Cavern EndScriptData */ #include "precompiled.h" #include "def_serpent_shrine.h" -#define SAY_AGGRO -1548030 -#define SAY_SUMMON1 -1548031 -#define SAY_SUMMON2 -1548032 -#define SAY_SUMMON_BUBL1 -1548033 -#define SAY_SUMMON_BUBL2 -1548034 -#define SAY_SLAY1 -1548035 -#define SAY_SLAY2 -1548036 -#define SAY_SLAY3 -1548037 -#define SAY_DEATH -1548038 -#define EMOTE_WATERY_GRAVE -1548039 -#define EMOTE_EARTHQUAKE -1548040 -#define EMOTE_WATERY_GLOBULES -1548041 - -#define SPELL_TIDAL_WAVE 37730 -#define SPELL_WATERY_GRAVE 38049 -#define SPELL_EARTHQUAKE 37764 -#define SPELL_WATERY_GRAVE_EXPLOSION 37852 - -#define WATERY_GRAVE_X1 334.64 -#define WATERY_GRAVE_Y1 -728.89 -#define WATERY_GRAVE_Z1 -14.42 -#define WATERY_GRAVE_X2 365.51 -#define WATERY_GRAVE_Y2 -737.14 -#define WATERY_GRAVE_Z2 -14.44 -#define WATERY_GRAVE_X3 366.19 -#define WATERY_GRAVE_Y3 -709.59 -#define WATERY_GRAVE_Z3 -14.36 -#define WATERY_GRAVE_X4 372.93 -#define WATERY_GRAVE_Y4 -690.96 -#define WATERY_GRAVE_Z4 -14.44 - -#define SPELL_WATERY_GRAVE_1 38023 -#define SPELL_WATERY_GRAVE_2 38024 -#define SPELL_WATERY_GRAVE_3 38025 -#define SPELL_WATERY_GRAVE_4 37850 - -#define SPELL_SUMMON_WATER_GLOBULE_1 37854 -#define SPELL_SUMMON_WATER_GLOBULE_2 37858 -#define SPELL_SUMMON_WATER_GLOBULE_3 37860 -#define SPELL_SUMMON_WATER_GLOBULE_4 37861 - -/*#define SPELL_SUMMON_MURLOC_A6 39813 -#define SPELL_SUMMON_MURLOC_A7 39814 -#define SPELL_SUMMON_MURLOC_A8 39815 -#define SPELL_SUMMON_MURLOC_A9 39816 -#define SPELL_SUMMON_MURLOC_A10 39817 - -#define SPELL_SUMMON_MURLOC_B6 39818 -#define SPELL_SUMMON_MURLOC_B7 39819 -#define SPELL_SUMMON_MURLOC_B8 39820 -#define SPELL_SUMMON_MURLOC_B9 39821 -#define SPELL_SUMMON_MURLOC_B10 39822*/ - -float MurlocCords[10][5] = +enum { - {21920, 424.36, -715.4, -7.14, 0.124}, - {21920, 425.13, -719.3, -7.14, 0.124}, - {21920, 425.05, -724.23, -7.14, 0.124}, - {21920, 424.91, -728.68, -7.14, 0.124}, - {21920, 424.84, -732.18, -7.14, 0.124}, - {21920, 321.05, -734.2, -13.15, 0.124}, - {21920, 321.05, -729.4, -13.15, 0.124}, - {21920, 321.05, -724.03, -13.15, 0.124}, - {21920, 321.05, -718.73, -13.15, 0.124}, - {21920, 321.05, -714.24, -13.15, 0.124} + SAY_AGGRO = -1548030, + SAY_SUMMON1 = -1548031, + SAY_SUMMON2 = -1548032, + SAY_SUMMON_BUBL1 = -1548033, + SAY_SUMMON_BUBL2 = -1548034, + SAY_SLAY1 = -1548035, + SAY_SLAY2 = -1548036, + SAY_SLAY3 = -1548037, + SAY_DEATH = -1548038, + EMOTE_WATERY_GRAVE = -1548039, + EMOTE_EARTHQUAKE = -1548040, + EMOTE_WATERY_GLOBULES = -1548041, + + SPELL_TIDAL_WAVE = 37730, + SPELL_EARTHQUAKE = 37764, + + SPELL_WATERY_GRAVE_1 = 37850, + SPELL_WATERY_GRAVE_2 = 38023, + SPELL_WATERY_GRAVE_3 = 38024, + SPELL_WATERY_GRAVE_4 = 38025, + + SPELL_SUMMON_MURLOC_A6 = 39813, + SPELL_SUMMON_MURLOC_A7 = 39814, + SPELL_SUMMON_MURLOC_A8 = 39815, + SPELL_SUMMON_MURLOC_A9 = 39816, + SPELL_SUMMON_MURLOC_A10 = 39817, + + SPELL_SUMMON_MURLOC_B6 = 39818, + SPELL_SUMMON_MURLOC_B7 = 39819, + SPELL_SUMMON_MURLOC_B8 = 39820, + SPELL_SUMMON_MURLOC_B9 = 39821, + SPELL_SUMMON_MURLOC_B10 = 39822, + + SPELL_SUMMON_GLOBULE_1 = 37854, + SPELL_SUMMON_GLOBULE_2 = 37858, + SPELL_SUMMON_GLOBULE_3 = 37860, + SPELL_SUMMON_GLOBULE_4 = 37861, + + NPC_WATER_GLOBULE = 21913, + NPC_TIDEWALKER_LURKER = 21920 }; -//Creatures -#define WATER_GLOBULE 21913 -#define TIDEWALKER_LURKER 21920 - //Morogrim Tidewalker AI struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI { - boss_morogrim_tidewalkerAI(Creature *c) : ScriptedAI(c) + boss_morogrim_tidewalkerAI(Creature* pCreature) : ScriptedAI(pCreature) { - pInstance = c->GetInstanceData(); + m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); } - ScriptedInstance* pInstance; - Map::PlayerList const *PlayerList; + ScriptedInstance* m_pInstance; // the instance - uint32 TidalWave_Timer; - uint32 WateryGrave_Timer; - uint32 Earthquake_Timer; - uint32 WateryGlobules_Timer; - uint32 globulespell[4]; - int8 Playercount; - int8 counter; + // timers + uint32 m_uiTidalWave_Timer; + uint32 m_uiWateryGrave_Timer; + uint32 m_uiEarthquake_Timer; + uint32 m_uiWateryGlobules_Timer; - bool Earthquake; - bool Phase2; + bool m_bEarthquake; + bool m_bPhase2; void Reset() { - TidalWave_Timer = 10000; - WateryGrave_Timer = 30000; - Earthquake_Timer = 40000; - WateryGlobules_Timer = 0; - globulespell[0] = SPELL_SUMMON_WATER_GLOBULE_1; - globulespell[1] = SPELL_SUMMON_WATER_GLOBULE_2; - globulespell[2] = SPELL_SUMMON_WATER_GLOBULE_3; - globulespell[3] = SPELL_SUMMON_WATER_GLOBULE_4; - - Earthquake = false; - Phase2 = false; - - if (pInstance) - pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); - } + m_uiTidalWave_Timer = 10000; + m_uiWateryGrave_Timer = 30000; + m_uiEarthquake_Timer = 40000; + m_uiWateryGlobules_Timer = 0; - void StartEvent() - { - DoScriptText(SAY_AGGRO, m_creature); + m_bEarthquake = false; + m_bPhase2 = false; - if (pInstance) - pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS); + if (m_pInstance) + m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* pVictim) { switch(rand()%3) { - case 0: DoScriptText(SAY_SLAY1, m_creature); break; - case 1: DoScriptText(SAY_SLAY2, m_creature); break; - case 2: DoScriptText(SAY_SLAY3, m_creature); break; + case 0: DoScriptText(SAY_SLAY1, m_creature); break; + case 1: DoScriptText(SAY_SLAY2, m_creature); break; + case 2: DoScriptText(SAY_SLAY3, m_creature); break; } } - void JustDied(Unit *victim) + void JustDied(Unit* pVictim) { DoScriptText(SAY_DEATH, m_creature); - if (pInstance) - pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, DONE); + if (m_pInstance) + m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); } - void EnterCombat(Unit *who) + void Aggro(Unit* pWho) { - PlayerList = &m_creature->GetMap()->GetPlayers(); - Playercount = PlayerList->getSize(); - StartEvent(); + DoScriptText(SAY_AGGRO, m_creature); + + if (m_pInstance) + m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS); } - void ApplyWateryGrave(Unit *player, uint8 i) + void JustSummoned(Creature* pSummoned) { - switch(i) + if (pSummoned->GetEntry() == NPC_TIDEWALKER_LURKER) { - case 0: player->CastSpell(player, SPELL_WATERY_GRAVE_1, true); break; - case 1: player->CastSpell(player, SPELL_WATERY_GRAVE_2, true); break; - case 2: player->CastSpell(player, SPELL_WATERY_GRAVE_3, true); break; - case 3: player->CastSpell(player, SPELL_WATERY_GRAVE_4, true); break; + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + pSummoned->AI()->AttackStart(pTarget); + } + + if (pSummoned->GetEntry() == NPC_WATER_GLOBULE) + { + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + pSummoned->GetMotionMaster()->MoveFollow(pTarget, 0.0f, 0.0f); } } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { //Return since we have no target - if (!UpdateVictim() ) + if (!UpdateVictim()) return; - //Earthquake_Timer - if (Earthquake_Timer < diff) + //m_uiEarthquake_Timer + if (m_uiEarthquake_Timer < uiDiff) { - if (!Earthquake) + if (!m_bEarthquake) { DoCast(m_creature->getVictim(), SPELL_EARTHQUAKE); - Earthquake = true; - Earthquake_Timer = 10000; + m_bEarthquake = true; + m_uiEarthquake_Timer = 5000; } else { - switch(rand()%2) - { - case 0: DoScriptText(SAY_SUMMON1, m_creature); break; - case 1: DoScriptText(SAY_SUMMON2, m_creature); break; - } + DoScriptText(urand(0,1) ? SAY_SUMMON1 : SAY_SUMMON2, m_creature); + + //north + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A6,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A7,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A8,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A9,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A10,true); + + //south + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B6,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B7,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B8,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B9,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B10,true); - for(uint8 i = 0; i < 10; i++) - { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); - Creature* Murloc = m_creature->SummonCreature(MurlocCords[i][0],MurlocCords[i][1],MurlocCords[i][2],MurlocCords[i][3],MurlocCords[i][4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); - if(target && Murloc) - Murloc->AI()->AttackStart(target); - } DoScriptText(EMOTE_EARTHQUAKE, m_creature); - Earthquake = false; - Earthquake_Timer = 40000+rand()%5000; + + m_bEarthquake = false; + m_uiEarthquake_Timer = 40000+rand()%5000; } - }else Earthquake_Timer -= diff; + }else m_uiEarthquake_Timer -= uiDiff; - //TidalWave_Timer - if (TidalWave_Timer < diff) + //m_uiTidalWave_Timer + if (m_uiTidalWave_Timer < uiDiff) { DoCast(m_creature->getVictim(), SPELL_TIDAL_WAVE); - TidalWave_Timer = 20000; - }else TidalWave_Timer -= diff; + m_uiTidalWave_Timer = 20000; + }else m_uiTidalWave_Timer -= uiDiff; - if (!Phase2) + if (!m_bPhase2) { - //WateryGrave_Timer - if (WateryGrave_Timer < diff) + //m_uiWateryGrave_Timer + if (m_uiWateryGrave_Timer < uiDiff) { //Teleport 4 players under the waterfalls - Unit *target; - using std::set; - setlist; - set::iterator itr; for(uint8 i = 0; i < 4; i++) { - counter = 0; - do{target = SelectTarget(SELECT_TARGET_RANDOM, 1, 50, true); //target players only - if(counter < Playercount) - break; - if(target) itr = list.find(target->GetGUID()); - counter++; - }while(itr != list.end()); - if(target){list.insert(target->GetGUID()); - ApplyWateryGrave(target, i); + Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1); + + if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER && !pTarget->HasAuraType(SPELL_AURA_MOD_STUN) && pTarget->IsWithinDistInMap(m_creature, 45.0f)) + { + switch(i) + { + case 0: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_1,false); break; + case 1: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_2,false); break; + case 2: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_3,false); break; + case 3: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_4,false); break; + } } } - switch(rand()%2) - { - case 0: DoScriptText(SAY_SUMMON_BUBL1, m_creature); break; - case 1: DoScriptText(SAY_SUMMON_BUBL2, m_creature); break; - } - + DoScriptText(urand(0,1) ? SAY_SUMMON_BUBL1 : SAY_SUMMON_BUBL2, m_creature); DoScriptText(EMOTE_WATERY_GRAVE, m_creature); - WateryGrave_Timer = 30000; - }else WateryGrave_Timer -= diff; + + m_uiWateryGrave_Timer = 30000; + }else m_uiWateryGrave_Timer -= uiDiff; //Start Phase2 if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25) - Phase2 = true; + m_bPhase2 = true; } else { - //WateryGlobules_Timer - if (WateryGlobules_Timer < diff) + //m_uiWateryGlobules_Timer + if (m_uiWateryGlobules_Timer < uiDiff) { - Unit* globuletarget; - using std::set; - setglobulelist; - set::iterator itr; - for (int8 g = 0; g < 4; g++) //one unit cant cast more than one spell per update, so some players have to cast for us XD - { - counter = 0; - do {globuletarget = SelectTarget(SELECT_TARGET_RANDOM, 0,50,true); - if(globuletarget) itr = globulelist.find(globuletarget->GetGUID()); - if (counter > Playercount) - break; - counter++; - } while (itr != globulelist.end()); - if(globuletarget)globulelist.insert(globuletarget->GetGUID()); - globuletarget->CastSpell(globuletarget, globulespell[g], true); - } DoScriptText(EMOTE_WATERY_GLOBULES, m_creature); - WateryGlobules_Timer = 25000; - }else WateryGlobules_Timer -= diff; + + m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_1,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_2,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_3,true); + m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_4,false); + + m_uiWateryGlobules_Timer = 25000; + }else m_uiWateryGlobules_Timer -= uiDiff; } DoMeleeAttackIfReady(); @@ -291,67 +242,63 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI }; //Water Globule AI -#define SPELL_GLOBULE_EXPLOSION 37871 - struct TRINITY_DLL_DECL mob_water_globuleAI : public ScriptedAI { - mob_water_globuleAI(Creature *c) : ScriptedAI(c) {} + mob_water_globuleAI(Creature* c) : ScriptedAI(c) { } - uint32 Check_Timer; + // timers + uint32 m_uiCheck_Timer; void Reset() { - Check_Timer = 1000; - - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + m_uiCheck_Timer = 1000; m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->setFaction(14); } - void EnterCombat(Unit *who) {} + void Aggro(Unit* pWho) {} - void MoveInLineOfSight(Unit *who) + void MoveInLineOfSight(Unit* pWho) { - if (!who || m_creature->getVictim()) + if (!pWho || m_creature->getVictim()) return; - if (who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who)) + if (pWho->isTargetableForAttack() && pWho->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(pWho)) { //no attack radius check - it attacks the first target that moves in his los - //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); + //pWho->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); + AttackStart(pWho); } } - void UpdateAI(const uint32 diff) + void UpdateAI(const uint32 uiDiff) { //Return since we have no target - if (!UpdateVictim() ) + if (!UpdateVictim()) return; - if (Check_Timer < diff) + if (m_uiCheck_Timer < uiDiff) { if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 5)) { - DoCast(m_creature->getVictim(), SPELL_GLOBULE_EXPLOSION); + m_creature->DealDamage(m_creature->getVictim(), 4000+rand()%2000, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_FROST, NULL, false); //despawn m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); } - Check_Timer = 500; - }else Check_Timer -= diff; + m_uiCheck_Timer = 500; + }else m_uiCheck_Timer -= uiDiff; //do NOT deal any melee damage to the target. } }; -CreatureAI* GetAI_boss_morogrim_tidewalker(Creature *_Creature) +CreatureAI* GetAI_boss_morogrim_tidewalker(Creature* pCreature) { - return new boss_morogrim_tidewalkerAI (_Creature); + return new boss_morogrim_tidewalkerAI (pCreature); } -CreatureAI* GetAI_mob_water_globule(Creature *_Creature) +CreatureAI* GetAI_mob_water_globule(Creature* pCreature) { - return new mob_water_globuleAI (_Creature); + return new mob_water_globuleAI (pCreature); } void AddSC_boss_morogrim_tidewalker() @@ -359,13 +306,12 @@ void AddSC_boss_morogrim_tidewalker() Script *newscript; newscript = new Script; - newscript->Name="boss_morogrim_tidewalker"; + newscript->Name = "boss_morogrim_tidewalker"; newscript->GetAI = &GetAI_boss_morogrim_tidewalker; newscript->RegisterSelf(); newscript = new Script; - newscript->Name="mob_water_globule"; + newscript->Name = "mob_water_globule"; newscript->GetAI = &GetAI_mob_water_globule; newscript->RegisterSelf(); } - diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp index 3e7137094d2..2cb9954c868 100644 --- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp +++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp @@ -148,7 +148,7 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI m_creature->setFaction(7); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetNativeDisplayId()); + m_creature->SetDisplayId(m_creature->GetNativeDisplayId()); event_starter = 0; event_startet = false; @@ -183,7 +183,7 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI } } - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, modelid_dk_armor[model_counter]); + m_creature->SetDisplayId(modelid_dk_armor[model_counter]); m_creature->LoadEquipment(m_creature->GetEquipmentId()); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp index 2cefb3fee4c..b754247b4a4 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp @@ -53,6 +53,7 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance uint64 PrisonCell8GUID; uint32 Encounter[ENCOUNTERS]; + std::string str_data; void Initialize() { @@ -158,6 +159,19 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance case TYPE_BROGGOK_EVENT: Encounter[1] = data; break; case TYPE_KELIDAN_THE_BREAKER_EVENT: Encounter[2] = data; break; } + + if (data == DONE) + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << Encounter[0] << " " << Encounter[1] << " " << Encounter[2]; + + str_data = saveStream.str(); + + SaveToDB(); + OUT_SAVE_INST_DATA_COMPLETE; + } } uint32 GetData(uint32 data) @@ -171,7 +185,31 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance return 0; } - + + const char* Save() + { + return str_data.c_str(); + } + + void Load(const char* in) + { + if (!in) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(in); + + std::istringstream loadStream(in); + loadStream >> Encounter[0] >> Encounter[1] >> Encounter[2]; + + for(uint8 i = 0; i < ENCOUNTERS; ++i) + if (Encounter[i] == IN_PROGRESS || Encounter[i] == FAIL) + Encounter[i] = NOT_STARTED; + + OUT_LOAD_INST_DATA_COMPLETE; + } }; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp index 08df637eb04..bbfdcf0f862 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp @@ -111,7 +111,7 @@ struct TRINITY_DLL_DECL boss_midnightAI : public ScriptedAI m_creature->GetMotionMaster()->MoveIdle(); if (Unit *pAttumen = Unit::GetUnit(*m_creature, Attumen)) { - pAttumen->SetUInt32Value(UNIT_FIELD_DISPLAYID, MOUNTED_DISPLAYID); + pAttumen->SetDisplayId(MOUNTED_DISPLAYID); pAttumen->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); if(pAttumen->getVictim()) { diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp index 4775ed79a70..0501a6b6436 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp @@ -137,7 +137,7 @@ struct TRINITY_DLL_DECL netherspite_infernalAI : public ScriptedAI { if(spell->Id == SPELL_INFERNAL_RELAY) { - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID)); + m_creature->SetDisplayId(m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID)); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); HellfireTimer = 4000; CleanupTimer = 170000; @@ -368,7 +368,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI if (Infernal) { - Infernal->SetUInt32Value(UNIT_FIELD_DISPLAYID, INFERNAL_MODEL_INVISIBLE); + Infernal->SetDisplayId(INFERNAL_MODEL_INVISIBLE); Infernal->setFaction(m_creature->getFaction()); if(point) CAST_AI(netherspite_infernalAI, Infernal->AI())->point=point; diff --git a/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp b/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp index 00b6d28d6b0..bd2b2096432 100644 --- a/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp +++ b/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp @@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL boss_noxxionAI : public ScriptedAI m_creature->setFaction(14); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); //Noxxion model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11172); + m_creature->SetDisplayId(11172); Invisible = false; //m_creature->m_canMove = true; } else if (Invisible) @@ -119,7 +119,7 @@ struct TRINITY_DLL_DECL boss_noxxionAI : public ScriptedAI m_creature->setFaction(35); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); // Invisible Model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686); + m_creature->SetDisplayId(11686); SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); diff --git a/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp b/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp index faa7efa53a5..aee7fa3e896 100644 --- a/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp +++ b/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp @@ -83,7 +83,7 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI //Become visible again m_creature->setFaction(14); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11073); //Jandice Model + m_creature->SetDisplayId(11073); //Jandice Model Invisible = false; } else if (Invisible) { @@ -114,7 +114,7 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI m_creature->InterruptNonMeleeSpells(false); m_creature->setFaction(35); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686); // Invisible Model + m_creature->SetDisplayId(11686); // Invisible Model DoModifyThreatPercent(m_creature->getVictim(),-99); //Summon 10 Illusions attacking random gamers diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp index f7ec954f282..de8da72593d 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp @@ -1470,17 +1470,17 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI { if(rand()%3 == 1 && FelguardCount<2) { - Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,18654); + Spawn->SetDisplayId(18654); ++FelguardCount; } else if(DreadlordCount < 3) { - Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,19991); + Spawn->SetDisplayId(19991); ++DreadlordCount; } else if(FelguardCount<2) { - Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,18654); + Spawn->SetDisplayId(18654); ++FelguardCount; } } diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp index 8372393f2f7..30c8eb0ae2c 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp @@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI // MindControl_Timer = 10000; Transformed = false; - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,10545); + m_creature->SetDisplayId(10545); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.00f); } @@ -207,7 +207,7 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI { //Cast DoCast(m_creature,SPELL_BALNAZZARTRANSFORM); //restore hp, mana and stun - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,10691); //then change disaply id + m_creature->SetDisplayId(10691); //then change disaply id m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 3.00f); //then, change size Transformed = true; } diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp index d65390ab6d7..670b7bc75a2 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp @@ -56,9 +56,9 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI AngerCount = 0; if (m_creature->isAlive()) - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NORMAL); + m_creature->SetDisplayId(MODEL_NORMAL); else - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN); + m_creature->SetDisplayId(MODEL_HUMAN); } void MoveInLineOfSight(Unit *who) @@ -70,7 +70,7 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI void JustDied(Unit* Killer) { - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN); + m_creature->SetDisplayId(MODEL_HUMAN); } void EnterCombat(Unit *who) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp index 69abca68dff..f789cb8a75f 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp @@ -55,7 +55,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI void Reset() { - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_DEFAULT); + m_creature->SetDisplayId(MODEL_DEFAULT); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); @@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI switch(rand()%5) { case 0: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_DEFAULT); + m_creature->SetDisplayId(MODEL_DEFAULT); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); @@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); break; case 1: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_ARCANE); + m_creature->SetDisplayId(MODEL_ARCANE); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); @@ -90,7 +90,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); break; case 2: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_FIRE); + m_creature->SetDisplayId(MODEL_FIRE); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true); @@ -98,7 +98,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); break; case 3: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_FROST); + m_creature->SetDisplayId(MODEL_FROST); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); @@ -106,7 +106,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); break; case 4: - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_NATURE); + m_creature->SetDisplayId(MODEL_NATURE); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp index 12dbe8ad55e..533d67d70be 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp @@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetVisibility(VISIBILITY_ON); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN); + m_creature->SetDisplayId(MODEL_HUMAN); Summons.DespawnAll(); } @@ -155,7 +155,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI void JustDied(Unit *victim) { m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN); + m_creature->SetDisplayId(MODEL_HUMAN); DoScriptText(SAY_DEATH, m_creature); if(pInstance) @@ -381,7 +381,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI DoScriptText(SAY_VOIDA, m_creature); DoScriptText(SAY_VOIDB, m_creature); m_creature->SetArmor(WV_ARMOR); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_VOIDWALKER); + m_creature->SetDisplayId(MODEL_VOIDWALKER); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f); } diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp index b8a1ca21f45..06f1b9efe1a 100644 --- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp @@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI void Reset() { if(undead) // Visual Hack - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INGVAR_HUMAN); + m_creature->SetDisplayId(MODEL_INGVAR_HUMAN); undead = false; event_inProgress = false; @@ -362,7 +362,7 @@ struct TRINITY_DLL_DECL mob_annhylde_the_callerAI : public ScriptedAI { ingvar->RemoveAurasDueToSpell(SPELL_SCOURG_RESURRECTION_DUMMY); //ingvar->CastSpell(ingvar,SPELL_INGVAR_TRANSFORM,false); - ingvar->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INGVAR_UNDEAD); // Visual Hack - when he dies he becomes human model -> wrong + ingvar->SetDisplayId(MODEL_INGVAR_UNDEAD); // Visual Hack - when he dies he becomes human model -> wrong Creature* c_ingvar = ingvar; CAST_AI(boss_ingvar_the_plundererAI, (c_ingvar->AI()))->StartZombiePhase(); diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp index 2e93b685120..a87543725e2 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp @@ -392,7 +392,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI } else { - trigger->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); + trigger->SetDisplayId(11686); trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); trigger->CastSpell(target, SPELL_SIPHON_SOUL, true); trigger->GetMotionMaster()->MoveChase(m_creature); diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp index 018f33cf2bf..9789d362ab9 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp @@ -73,7 +73,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI PhaseTwo = false; VanishedOnce = false; - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15218); + m_creature->SetDisplayId(15218); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI void JustDied(Unit* Killer) { DoScriptText(SAY_DEATH, m_creature); - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15218); + m_creature->SetDisplayId(15218); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); if(pInstance) @@ -143,7 +143,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI if (Vanish_Timer < diff) { //Invisble Model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686); + m_creature->SetDisplayId(11686); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); //m_creature->CombatStop(); DoResetThreat(); @@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM,0); //The Panther Model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215); + m_creature->SetDisplayId(15215); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); @@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI if(target) AttackStart(target); //The Panther Model - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215); + m_creature->SetDisplayId(15215); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); PhaseTwo = true; }else Visible_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp index 1abac285389..d1ef25a03a8 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp @@ -196,7 +196,7 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI } else { - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15219); + m_creature->SetDisplayId(15219); DoResetThreat(); PhaseTwo = true; } diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp index ff5785418fc..b3b92cbc2c7 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp @@ -187,7 +187,7 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI if (TransformBack_Timer < diff) { - m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15220); + m_creature->SetDisplayId(15220); const CreatureInfo *cinfo = m_creature->GetCreatureInfo(); m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); -- cgit v1.2.3 From e405e6f9ede8c9ce5db647fdffb1dd6c008856eb Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 17 Jun 2009 09:57:22 -0500 Subject: *Fix a crash caused by mailed item deconstructor. --HG-- branch : trunk --- src/game/Object.cpp | 7 ++++--- src/game/Player.cpp | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 1afd3ac3ae7..3561621f0bd 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -82,19 +82,20 @@ Object::Object( ) : m_PackGUID(sizeof(uint64)+1) Object::~Object( ) { - //if(m_objectUpdated) - // ObjectAccessor::Instance().RemoveUpdateObject(this); - if(IsInWorld()) { sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d, entry=%u deleted but still in world!!", GetGUID(), GetTypeId(), GetEntry()); + if(isType(TYPEMASK_ITEM)) + sLog.outCrash("Item slot %u", ((Item*)this)->GetSlot()); assert(false); + RemoveFromWorld(); } if(m_objectUpdated) { sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d, entry=%u deleted but still in update list!!", GetGUID(), GetTypeId(), GetEntry()); assert(false); + ObjectAccessor::Instance().RemoveUpdateObject(this); } if(m_uint32Values) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 02c7fa18e9f..07b3f62c3c5 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1844,6 +1844,9 @@ void Player::RemoveFromWorld() m_items[i]->RemoveFromWorld(); } + for (ItemMap::iterator iter = mMitems.begin(); iter != mMitems.end(); ++iter) + iter->second->RemoveFromWorld(); + ///- Do not add/remove the player from the object storage ///- It will crash when updating the ObjectAccessor ///- The player should only be removed when logging out -- cgit v1.2.3