aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp2
-rw-r--r--src/bindings/scripts/include/sc_creature.h25
-rw-r--r--src/bindings/scripts/scripts/creature/mob_event_ai.cpp1445
-rw-r--r--src/bindings/scripts/scripts/creature/mob_event_ai.h223
-rw-r--r--src/bindings/scripts/scripts/custom/test.cpp2
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.cpp16
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.h4
-rw-r--r--src/bindings/scripts/scripts/npc/npcs_special.cpp45
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp18
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp37
-rw-r--r--src/bindings/scripts/scripts/zone/azjol_nerub/ahnkahet/boss_elder_nadox.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/.boss_teron_gorefiend.cpp-woains5
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp32
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp17
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp10
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp25
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/dark_portal.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp87
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp11
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp24
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp424
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp23
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp16
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp408
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp33
-rw-r--r--src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp23
-rw-r--r--src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp5
-rw-r--r--src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp10
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp23
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp72
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp30
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp40
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp40
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp7
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp10
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp44
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp14
-rw-r--r--src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp21
-rw-r--r--src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp14
-rw-r--r--src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp13
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_gothik.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_anomalus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_keristrasza.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_magus_telestra.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/nexus/nexus/boss_ormorok.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/razorfen_kraul/instance_razorfen_kraul.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp43
-rw-r--r--src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp98
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp90
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp16
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp18
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_muru.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp50
-rw-r--r--src/bindings/scripts/scripts/zone/teldrassil/teldrassil.cpp3
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp8
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp10
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp1
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp10
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/utgarde_keep.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp16
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp4
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp2
-rw-r--r--src/game/BattleGround.cpp10
-rw-r--r--src/game/Creature.cpp27
-rw-r--r--src/game/Creature.h7
-rw-r--r--src/game/InstanceData.cpp37
-rw-r--r--src/game/InstanceData.h6
-rw-r--r--src/game/Object.cpp15
-rw-r--r--src/game/Player.cpp7
-rw-r--r--src/game/SpellAuras.cpp10
-rw-r--r--src/game/SpellMgr.cpp14
-rw-r--r--src/game/StatSystem.cpp2
-rw-r--r--src/game/Unit.cpp30
-rw-r--r--src/game/Vehicle.cpp67
-rw-r--r--src/game/Vehicle.h3
-rw-r--r--src/game/Wintergrasp.cpp3
165 files changed, 1234 insertions, 3064 deletions
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<Player*>(a))
-#define CAST_CRE(a) (dynamic_cast<Creature*>(a))
-#define CAST_VEH(a) (dynamic_cast<Vehicle*>(a))
-#define CAST_AI(a,b) (dynamic_cast<a*>(b))
-#else
-#define CAST_PLR(a) (static_cast<Player*>(a))
-#define CAST_CRE(a) (static_cast<Creature*>(a))
-#define CAST_VEH(a) (static_cast<Vehicle*>(a))
-#define CAST_AI(a,b) (static_cast<a*>(b))
-#endif
+#define SCRIPT_CAST_TYPE dynamic_cast
+//#define SCRIPT_CAST_TYPE static_cast
+
+#define CAST_PLR(a) (SCRIPT_CAST_TYPE<Player*>(a))
+#define CAST_CRE(a) (SCRIPT_CAST_TYPE<Creature*>(a))
+#define CAST_VEH(a) (SCRIPT_CAST_TYPE<Vehicle*>(a))
+#define CAST_SUM(a) (SCRIPT_CAST_TYPE<TempSummon*>(a))
+#define CAST_PET(a) (SCRIPT_CAST_TYPE<Pet*>(a))
+#define CAST_AI(a,b) (SCRIPT_CAST_TYPE<a*>(b))
#define GET_SPELL(a) (const_cast<SpellEntry*>(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/creature/mob_event_ai.cpp b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp
deleted file mode 100644
index d43b863300d..00000000000
--- a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp
+++ /dev/null
@@ -1,1445 +0,0 @@
-/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- * 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<EventHolder> pEventList) : ScriptedAI(c)
- {
- EventList = pEventList;
- Phase = 0;
- CombatMovementEnabled = true;
- MeleeEnabled = true;
- AttackDistance = 0;
- AttackAngle = 0.0f;
-
- //Handle Spawned Events
- for (std::list<EventHolder>::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<EventHolder> 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 (!InCombat)
- 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 (InCombat)
- 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 (!InCombat || !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 (!InCombat || !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 (!InCombat || !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 (!InCombat || !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 (!InCombat)
- 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 (!InCombat)
- return false;
-
- std::list<Creature*> 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<Creature*> 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<HostilReference*>::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<HostilReference*>::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<uint32, EventAI_Summon>::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()
- {
- InCombat = false;
- IsFleeing = false;
- Reset();
-
- //Handle Spawned Events
- for (std::list<EventHolder>::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<EventHolder>::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<EventHolder>::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<EventHolder>::iterator i = EventList.begin(); i != EventList.end(); ++i)
- {
- if ((*i).Event.event_type == EVENT_T_EVADE)
- ProcessEvent(*i);
- }
- }
-
- void JustDied(Unit* killer)
- {
- InCombat = false;
- IsFleeing = false;
- Reset();
-
- //Handle Evade events
- for (std::list<EventHolder>::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<EventHolder>::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<EventHolder>::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<EventHolder>::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 (!InCombat)
- {
- InCombat = true;
- Aggro(who);
- }
-
- if (CombatMovementEnabled)
- {
- m_creature->GetMotionMaster()->MoveChase(who, AttackDistance, AttackAngle);
- }
- else
- {
- m_creature->GetMotionMaster()->MoveIdle();
- }
- }
- }
-
- void MoveInLineOfSight(Unit *who)
- {
- if (!who || InCombat)
- return;
-
- //Check for OOC LOS Event
- for (std::list<EventHolder>::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<EventHolder>::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 = InCombat ? 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<EventHolder>::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<EventHolder>::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<EventHolder> EventList;
-
- //Find creature id in the Event map
- UNORDERED_MAP<uint32, std::vector<EventAI_Event> >::iterator CreatureEvents = EventAI_Event_Map.find(pCreature->GetEntry());
-
- if (CreatureEvents != EventAI_Event_Map.end())
- {
- std::vector<EventAI_Event>::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 <https://scriptdev2.svn.sourceforge.net/>
- * 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<uint32, std::vector<EventAI_Event> > 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<uint32, EventAI_Summon> EventAI_Summon_Map;
-
-//EventAI Error handling
-extern uint32 EAI_ErrorLevel;
-/*
-
-struct EventAI_CreatureError
-{
- bool ListEmpty;
- bool NoInstance;
-};
-
-//Error prevention list
-extern UNORDERED_MAP<uint32, EventAI_CreatureError> 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
-
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/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp
index d464a369826..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)
@@ -115,7 +127,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 +173,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/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/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;
}
}
};
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/sethekk_halls/instance_sethekk_halls.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp
index fbe926ffba0..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
@@ -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 OnGameObjectCreate(GameObject *pGo, bool add)
{
- 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/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/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp
index cc63d253d1b..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;
}
}
@@ -92,23 +100,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)
@@ -134,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/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..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;
@@ -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
@@ -595,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;
@@ -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/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_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_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..897c4937230 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()
@@ -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);
@@ -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
}
}
@@ -566,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);
}
@@ -582,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);
}
@@ -610,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
}
}
}
@@ -655,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)
{
@@ -973,7 +972,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;
@@ -1038,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) {}
@@ -1102,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);
}
@@ -1630,7 +1628,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);
}
}
@@ -1725,7 +1723,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;
@@ -1795,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
}
};
@@ -1836,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/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..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
@@ -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);
@@ -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");
@@ -507,7 +502,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..1805019dc42 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;
@@ -105,10 +105,12 @@ 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
+ if(close)
+ Doors->SetGoState(GO_STATE_READY); // Closed
+ else
+ Doors->SetGoState(GO_STATE_ACTIVE); // Open
}
}
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 d6ce3145f09..d43311a30fd 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;
}
@@ -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) {}
@@ -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..6209da759e5 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;
@@ -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/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/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/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/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/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..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
@@ -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;
@@ -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/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..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
@@ -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++)
@@ -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())
@@ -728,8 +727,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 +738,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/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp
index 92cbfdbf3ab..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
@@ -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,13 +375,13 @@ 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;
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)
{
@@ -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..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
@@ -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);
}
@@ -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 )
{
@@ -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..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 ea7745ce6ec..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
@@ -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)
@@ -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;
@@ -583,7 +580,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;
@@ -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);
@@ -688,7 +685,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 +748,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 +880,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;
@@ -893,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 032ddb4ef70..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
@@ -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
@@ -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());
}
}
@@ -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..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 <https://scriptdev2.svn.sourceforge.net/>
-* 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;
- set<int>list;
- set<int>::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;
- set<int>globulelist;
- set<int>::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/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/coilfang_resevoir/steam_vault/instance_steam_vault.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp
index b2a58ef7ed1..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,25 +110,17 @@ 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:
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 +130,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 482a7169ad3..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());
}
@@ -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());
@@ -533,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);
}
}
}
@@ -555,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((Vehicle*)who);
-
- ScriptedAI::MoveInLineOfSight(who);
- }
-
void EnterCombat(Unit *who)
{
me->ExitVehicle();
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..9dea3d1533d 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;
@@ -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/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..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 = ((ScriptedInstance*)c->GetInstanceData());
- Reset();
+ pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
@@ -111,7 +112,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 4d28469bf04..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]=
{
@@ -66,8 +69,8 @@ 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();
+ pInstance = c->GetInstanceData();
+ HeroicMode = c->GetMap()->IsHeroic();
for(int i=0; i<5; ++i)
Channelers[i] = 0;
}
@@ -261,7 +264,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
@@ -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();
+ pInstance = c->GetInstanceData();
+ 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 fce2e175888..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 = ((ScriptedInstance*)c->GetInstanceData());
- Reset();
+ pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
@@ -139,7 +141,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/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/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp
index c106924d5b7..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 = GameObject::GetGameObject(*pPlayer,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_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<uint64>::iterator i = ColumnGUID.begin(); i != ColumnGUID.end(); ++i)
- HandleGameObject(*i, data);
+ DoUseDoorOrButton(*i);
break;
default:
break;
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..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
@@ -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();
}
@@ -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);
}
}
@@ -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/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/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_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_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..45f79215409 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;
}
@@ -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 66005746bbd..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;
@@ -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;
@@ -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);
- }
}
}
@@ -377,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/karazhan/boss_shade_of_aran.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp
index 015a19087ab..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
@@ -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;
@@ -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/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..8208f320e0f 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;
@@ -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);
}
}
@@ -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;
@@ -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);
}
}
@@ -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;
}
@@ -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);
}
}
@@ -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;
}
@@ -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);
}
}
@@ -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/karazhan/karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp
index e984bea31c2..34786712948 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;
@@ -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);
@@ -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..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
@@ -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;
@@ -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
{
@@ -450,7 +447,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..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
@@ -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();
}
@@ -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);
}
@@ -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..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
@@ -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.
@@ -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 fb31a3783da..2465ce91e72 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();
}
@@ -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/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/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/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/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/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/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/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/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/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/shadowfang_keep/instance_shadowfang_keep.cpp b/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp
index fb8b14c368e..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
@@ -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())
@@ -98,35 +82,30 @@ 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;
}
}
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);
}
}
@@ -136,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:
@@ -146,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/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..de8da72593d 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();
@@ -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/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/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/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/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp
index 71d9b66aa4c..523b117181c 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
@@ -136,12 +119,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);
@@ -185,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:
@@ -208,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;
}
@@ -218,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;
@@ -240,14 +215,14 @@ 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<uint64>::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;
}
}
@@ -256,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)
{
@@ -272,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);
}
@@ -365,13 +343,13 @@ 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);
+ 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_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..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
@@ -94,12 +94,11 @@ enum Creatures
struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
{
boss_sacrolashAI(Creature *c) : ScriptedAI(c){
- pInstance = (c->GetInstanceData());
+ pInstance = c->GetInstanceData();
}
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;
@@ -354,13 +351,12 @@ 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;
}
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/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..8033148d4cd 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;
}
@@ -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)
@@ -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()
@@ -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 caf39318dd7..360ae55bd5e 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];
@@ -337,7 +337,7 @@ struct TRINITY_DLL_DECL boss_kalecgos_kjAI : public ScriptedAI
return;
uint8 i = 0;
for(std::list<GameObject*>::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()));
}
}
@@ -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/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) )
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/tempest_keep/arcatraz/arcatraz.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp
index 0392437eeb5..2be8a7fdb39 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;
@@ -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 37e12c60b2e..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
@@ -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;
}
@@ -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;
@@ -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/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_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..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
@@ -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);
@@ -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);
}
@@ -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_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/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/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;
}
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/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..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
@@ -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();
}
@@ -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;
@@ -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;
@@ -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();
@@ -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..a87543725e2 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;
@@ -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/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..9789d362ab9 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;
@@ -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_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..d1ef25a03a8 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;
@@ -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;
}
@@ -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..b3b92cbc2c7 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;
@@ -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)));
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;
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());
}
}
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<Creature> 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/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:
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index 0e7eed9bff0..3561621f0bd 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -82,16 +82,21 @@ 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 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());
+ if(isType(TYPEMASK_ITEM))
+ sLog.outCrash("Item slot %u", ((Item*)this)->GetSlot());
assert(false);
+ RemoveFromWorld();
}
- 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);
+ ObjectAccessor::Instance().RemoveUpdateObject(this);
+ }
if(m_uint32Values)
{
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index cbcf52789bb..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
@@ -18366,8 +18369,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/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..f9d607010ca 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;i<MAX_SPELL_EFFECTS;++i)
+ {
+ if (spellproto->EffectApplyAuraName[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;
@@ -2249,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<SpellEntry*>(spellInfo)->Attributes |= SPELL_ATTR_CANT_CANCEL;
+ else
{
sLog.outErrorDb("Spell %u listed in `spell_area` does not exist", spell);
continue;
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..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:
{
@@ -13340,6 +13339,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);
@@ -13480,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);
}
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);
}
}