From 7b9f34afc5fc5be53e71c40ef85e0f55824c60f7 Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Sat, 17 Aug 2013 14:59:49 +0300 Subject: Core/Scripts: Placeholder for instance The Stockade. It is needed for Random Dungeon Finder credit. Correct entry for last encounter in the instance. --- src/server/scripts/EasternKingdoms/CMakeLists.txt | 1 + .../TheStockade/instance_the_stockade.cpp | 46 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp (limited to 'src/server/scripts') diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt index 53d37d83610..a0377cea0fd 100644 --- a/src/server/scripts/EasternKingdoms/CMakeLists.txt +++ b/src/server/scripts/EasternKingdoms/CMakeLists.txt @@ -207,6 +207,7 @@ set(scripts_STAT_SRCS EasternKingdoms/Karazhan/boss_moroes.cpp EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp EasternKingdoms/Karazhan/karazhan.h + EasternKingdoms/TheStockade/instance_the_stockade.cpp ) message(" -> Prepared: Eastern Kingdoms") diff --git a/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp new file mode 100644 index 00000000000..4bd1dc20dcd --- /dev/null +++ b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_the_stockade : public InstanceMapScript +{ +public: + instance_the_stockade() : InstanceMapScript("instance_the_stockade", 34) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_the_stockade_InstanceMapScript(map); + } + + struct instance_the_stockade_InstanceMapScript : public InstanceScript + { + instance_the_stockade_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_the_stockade() +{ + new instance_the_stockade(); +} -- cgit v1.2.3 From 0333d22fe9454cf9382bdb81bf60b64e46abc72f Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Sat, 17 Aug 2013 15:25:09 +0300 Subject: Core/Scripts: Placeholder for instance Ragefire Chasm. It is needed for Random Dungeon Finder credit. --- sql/updates/world/2013_08_17_01_world_misc.sql | 1 + src/server/game/Scripting/ScriptLoader.cpp | 2 + .../TheStockade/instance_the_stockade.cpp | 1 + src/server/scripts/Kalimdor/CMakeLists.txt | 1 + .../RagefireChasm/instance_ragefire_chasm.cpp | 47 ++++++++++++++++++++++ 5 files changed, 52 insertions(+) create mode 100644 sql/updates/world/2013_08_17_01_world_misc.sql create mode 100644 src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp (limited to 'src/server/scripts') diff --git a/sql/updates/world/2013_08_17_01_world_misc.sql b/sql/updates/world/2013_08_17_01_world_misc.sql new file mode 100644 index 00000000000..42555f591bf --- /dev/null +++ b/sql/updates/world/2013_08_17_01_world_misc.sql @@ -0,0 +1 @@ +UPDATE `instance_template` SET `script`='instance_ragefire_chasm' WHERE `map`=389; diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 2510cb92f10..d4bfabc46d5 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -172,6 +172,7 @@ void AddSC_boss_sulfuron(); void AddSC_boss_majordomo(); void AddSC_boss_ragnaros(); void AddSC_instance_molten_core(); +void AddSC_instance_ragefire_chasm(); //Ragefire Chasm void AddSC_the_scarlet_enclave(); //Scarlet Enclave void AddSC_the_scarlet_enclave_c1(); void AddSC_the_scarlet_enclave_c2(); @@ -828,6 +829,7 @@ void AddEasternKingdomsScripts() AddSC_boss_majordomo(); AddSC_boss_ragnaros(); AddSC_instance_molten_core(); + AddSC_instance_ragefire_chasm(); //Ragefire Chasm AddSC_the_scarlet_enclave(); //Scarlet Enclave AddSC_the_scarlet_enclave_c1(); AddSC_the_scarlet_enclave_c2(); diff --git a/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp index 4bd1dc20dcd..9550ac13208 100644 --- a/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp +++ b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp @@ -21,6 +21,7 @@ to give credit after the boss defined in lastEncounterDungeon is killed. Without it, the party doing random dungeon won't get satchel of spoils and gets instead the deserter debuff. */ + #include "ScriptMgr.h" #include "InstanceScript.h" diff --git a/src/server/scripts/Kalimdor/CMakeLists.txt b/src/server/scripts/Kalimdor/CMakeLists.txt index 752f8d3a2af..f5a9db94a0e 100644 --- a/src/server/scripts/Kalimdor/CMakeLists.txt +++ b/src/server/scripts/Kalimdor/CMakeLists.txt @@ -112,6 +112,7 @@ set(scripts_STAT_SRCS Kalimdor/OnyxiasLair/boss_onyxia.cpp Kalimdor/OnyxiasLair/onyxias_lair.h Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp + Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp ) message(" -> Prepared: Kalimdor") diff --git a/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp new file mode 100644 index 00000000000..6b13fecb26a --- /dev/null +++ b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ + +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_ragefire_chasm : public InstanceMapScript +{ +public: + instance_ragefire_chasm() : InstanceMapScript("instance_ragefire_chasm", 389) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_ragefire_chasm_InstanceMapScript(map); + } + + struct instance_ragefire_chasm_InstanceMapScript : public InstanceScript + { + instance_ragefire_chasm_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_ragefire_chasm() +{ + new instance_ragefire_chasm(); +} -- cgit v1.2.3 From 7c7f19228e7a562f225c717215fd34dfcaf5b35a Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Sat, 17 Aug 2013 17:50:33 +0300 Subject: Core/Scripts: Placeholders for instances The Slave Pens and The Underbog. It is needed for Random Dungeon Finder credit. --- sql/updates/world/2013_08_17_03_world_misc.sql | 2 + src/server/game/Scripting/ScriptLoader.cpp | 4 + src/server/scripts/Outland/CMakeLists.txt | 6 +- .../TheSlavePens/instance_the_slave_pens.cpp | 47 +++++ .../TheUnderbog/boss_hungarfen.cpp | 167 ++++++++++++++++++ .../TheUnderbog/boss_the_black_stalker.cpp | 195 +++++++++++++++++++++ .../TheUnderbog/instance_the_underbog.cpp | 47 +++++ .../CoilfangReservoir/underbog/boss_hungarfen.cpp | 167 ------------------ .../underbog/boss_the_black_stalker.cpp | 195 --------------------- 9 files changed, 466 insertions(+), 364 deletions(-) create mode 100644 sql/updates/world/2013_08_17_03_world_misc.sql create mode 100644 src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp create mode 100644 src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp create mode 100644 src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp create mode 100644 src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp delete mode 100644 src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp delete mode 100644 src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp (limited to 'src/server/scripts') diff --git a/sql/updates/world/2013_08_17_03_world_misc.sql b/sql/updates/world/2013_08_17_03_world_misc.sql new file mode 100644 index 00000000000..649c40efdfc --- /dev/null +++ b/sql/updates/world/2013_08_17_03_world_misc.sql @@ -0,0 +1,2 @@ +UPDATE `instance_template` SET `script`='instance_underbog' WHERE `map`=546; +UPDATE `instance_template` SET `script`='instance_the_slave_pens' WHERE `map`=547; diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index d4bfabc46d5..82537816d44 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -567,8 +567,10 @@ void AddSC_boss_hydromancer_thespia(); //CR Steam Vault void AddSC_boss_mekgineer_steamrigger(); void AddSC_boss_warlord_kalithresh(); void AddSC_instance_steam_vault(); +void AddSC_instance_the_slave_pens(); //The Slave Pens void AddSC_boss_hungarfen(); //CR Underbog void AddSC_boss_the_black_stalker(); +void AddSC_instance_the_underbog(); void AddSC_boss_gruul(); //Gruul's Lair void AddSC_boss_high_king_maulgar(); void AddSC_instance_gruuls_lair(); @@ -1071,8 +1073,10 @@ void AddOutlandScripts() AddSC_boss_mekgineer_steamrigger(); AddSC_boss_warlord_kalithresh(); AddSC_instance_steam_vault(); + AddSC_instance_the_slave_pens(); //The Slave Pens AddSC_boss_hungarfen(); //CR Underbog AddSC_boss_the_black_stalker(); + AddSC_instance_the_underbog(); AddSC_boss_gruul(); //Gruul's Lair AddSC_boss_high_king_maulgar(); AddSC_instance_gruuls_lair(); diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt index d7b863da0db..c828c6dfbcf 100644 --- a/src/server/scripts/Outland/CMakeLists.txt +++ b/src/server/scripts/Outland/CMakeLists.txt @@ -42,8 +42,10 @@ set(scripts_STAT_SRCS Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp - Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp - Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp + Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp + Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp + Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp + Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp Outland/zone_shattrath_city.cpp Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp new file mode 100644 index 00000000000..3475e83f02c --- /dev/null +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ + +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_the_slave_pens : public InstanceMapScript +{ +public: + instance_the_slave_pens() : InstanceMapScript("instance_the_slave_pens", 547) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_the_slave_pens_InstanceMapScript(map); + } + + struct instance_the_slave_pens_InstanceMapScript : public InstanceScript + { + instance_the_slave_pens_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_the_slave_pens() +{ + new instance_the_slave_pens(); +} diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp new file mode 100644 index 00000000000..0db48d83ebb --- /dev/null +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp @@ -0,0 +1,167 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * Copyright (C) 2006-2009 ScriptDev2 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/* ScriptData +SDName: Boss_Hungarfen +SD%Complete: 95 +SDComment: Need confirmation if spell data are same in both modes. Summons should have faster rate in heroic +SDCategory: Coilfang Resevoir, Underbog +EndScriptData */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" + +enum Spells +{ + SPELL_FOUL_SPORES = 31673, + SPELL_ACID_GEYSER = 38739, + + SPELL_SPORE_CLOUD = 34168, + SPELL_PUTRID_MUSHROOM = 31690, + SPELL_GROW = 31698 +}; + +class boss_hungarfen : public CreatureScript +{ +public: + boss_hungarfen() : CreatureScript("boss_hungarfen") { } + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new boss_hungarfenAI(creature); + } + + struct boss_hungarfenAI : public ScriptedAI + { + boss_hungarfenAI(Creature* creature) : ScriptedAI(creature) + { + } + + bool Root; + uint32 Mushroom_Timer; + uint32 AcidGeyser_Timer; + + void Reset() OVERRIDE + { + Root = false; + Mushroom_Timer = 5000; // 1 mushroom after 5s, then one per 10s. This should be different in heroic mode + AcidGeyser_Timer = 10000; + } + + void EnterCombat(Unit* /*who*/) OVERRIDE + { + } + + void UpdateAI(uint32 diff) OVERRIDE + { + if (!UpdateVictim()) + return; + + if (!HealthAbovePct(20)) + { + if (!Root) + { + DoCast(me, SPELL_FOUL_SPORES); + Root = true; + } + } + + if (Mushroom_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + me->SummonCreature(17990, target->GetPositionX()+(rand()%8), target->GetPositionY()+(rand()%8), target->GetPositionZ(), float(rand()%5), TEMPSUMMON_TIMED_DESPAWN, 22000); + else + me->SummonCreature(17990, me->GetPositionX()+(rand()%8), me->GetPositionY()+(rand()%8), me->GetPositionZ(), float(rand()%5), TEMPSUMMON_TIMED_DESPAWN, 22000); + + Mushroom_Timer = 10000; + } else Mushroom_Timer -= diff; + + if (AcidGeyser_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_ACID_GEYSER); + AcidGeyser_Timer = 10000+rand()%7500; + } else AcidGeyser_Timer -= diff; + + DoMeleeAttackIfReady(); + } + }; + +}; + +class npc_underbog_mushroom : public CreatureScript +{ +public: + npc_underbog_mushroom() : CreatureScript("npc_underbog_mushroom") { } + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_underbog_mushroomAI(creature); + } + + struct npc_underbog_mushroomAI : public ScriptedAI + { + npc_underbog_mushroomAI(Creature* creature) : ScriptedAI(creature) {} + + bool Stop; + uint32 Grow_Timer; + uint32 Shrink_Timer; + + void Reset() OVERRIDE + { + Stop = false; + Grow_Timer = 0; + Shrink_Timer = 20000; + + DoCast(me, SPELL_PUTRID_MUSHROOM, true); + DoCast(me, SPELL_SPORE_CLOUD, true); + } + + void MoveInLineOfSight(Unit* /*who*/) OVERRIDE {} + + + void AttackStart(Unit* /*who*/) OVERRIDE {} + + void EnterCombat(Unit* /*who*/) OVERRIDE {} + + void UpdateAI(uint32 diff) OVERRIDE + { + if (Stop) + return; + + if (Grow_Timer <= diff) + { + DoCast(me, SPELL_GROW); + Grow_Timer = 3000; + } else Grow_Timer -= diff; + + if (Shrink_Timer <= diff) + { + me->RemoveAurasDueToSpell(SPELL_GROW); + Stop = true; + } else Shrink_Timer -= diff; + } + }; + +}; + +void AddSC_boss_hungarfen() +{ + new boss_hungarfen(); + new npc_underbog_mushroom(); +} diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp new file mode 100644 index 00000000000..c22dedd269e --- /dev/null +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp @@ -0,0 +1,195 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * Copyright (C) 2006-2009 ScriptDev2 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/* ScriptData +SDName: Boss_the_black_stalker +SD%Complete: 95 +SDComment: Timers may be incorrect +SDCategory: Coilfang Resevoir, Underbog +EndScriptData */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" + +enum Spells +{ + SPELL_LEVITATE = 31704, + SPELL_SUSPENSION = 31719, + SPELL_LEVITATION_PULSE = 31701, + SPELL_MAGNETIC_PULL = 31705, + SPELL_CHAIN_LIGHTNING = 31717, + SPELL_STATIC_CHARGE = 31715, + SPELL_SUMMON_SPORE_STRIDER = 38755 +}; + +enum CreatureIdS +{ + ENTRY_SPORE_STRIDER = 22299 +}; + +class boss_the_black_stalker : public CreatureScript +{ +public: + boss_the_black_stalker() : CreatureScript("boss_the_black_stalker") { } + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new boss_the_black_stalkerAI(creature); + } + + struct boss_the_black_stalkerAI : public ScriptedAI + { + boss_the_black_stalkerAI(Creature* creature) : ScriptedAI(creature) + { + } + + uint32 SporeStriders_Timer; + uint32 Levitate_Timer; + uint32 ChainLightning_Timer; + uint32 StaticCharge_Timer; + uint64 LevitatedTarget; + uint32 LevitatedTarget_Timer; + bool InAir; + uint32 check_Timer; + std::list Striders; + + void Reset() OVERRIDE + { + Levitate_Timer = 12000; + ChainLightning_Timer = 6000; + StaticCharge_Timer = 10000; + SporeStriders_Timer = 10000+rand()%5000; + check_Timer = 5000; + LevitatedTarget = 0; + LevitatedTarget_Timer = 0; + Striders.clear(); + } + + void EnterCombat(Unit* /*who*/) OVERRIDE {} + + void JustSummoned(Creature* summon) OVERRIDE + { + if (summon && summon->GetEntry() == ENTRY_SPORE_STRIDER) + { + Striders.push_back(summon->GetGUID()); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) + summon->AI()->AttackStart(target); + else + if (me->GetVictim()) + summon->AI()->AttackStart(me->GetVictim()); + } + } + + void JustDied(Unit* /*killer*/) OVERRIDE + { + for (std::list::const_iterator i = Striders.begin(); i != Striders.end(); ++i) + if (Creature* strider = Unit::GetCreature(*me, *i)) + strider->DisappearAndDie(); + } + + void UpdateAI(uint32 diff) OVERRIDE + { + if (!UpdateVictim()) + return; + + // Evade if too far + if (check_Timer <= diff) + { + float x, y, z, o; + me->GetHomePosition(x, y, z, o); + if (!me->IsWithinDist3d(x, y, z, 60)) + { + EnterEvadeMode(); + return; + } + check_Timer = 1000; + } else check_Timer -= diff; + + // Spore Striders + if (IsHeroic() && SporeStriders_Timer <= diff) + { + DoCast(me, SPELL_SUMMON_SPORE_STRIDER); + SporeStriders_Timer = 10000+rand()%5000; + } else SporeStriders_Timer -= diff; + + // Levitate + if (LevitatedTarget) + { + if (LevitatedTarget_Timer <= diff) + { + if (Unit* target = Unit::GetUnit(*me, LevitatedTarget)) + { + if (!target->HasAura(SPELL_LEVITATE)) + { + LevitatedTarget = 0; + return; + } + if (InAir) + { + target->AddAura(SPELL_SUSPENSION, target); + LevitatedTarget = 0; + } + else + { + target->CastSpell(target, SPELL_MAGNETIC_PULL, true); + InAir = true; + LevitatedTarget_Timer = 1500; + } + } + else + LevitatedTarget = 0; + } else LevitatedTarget_Timer -= diff; + } + if (Levitate_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) + { + DoCast(target, SPELL_LEVITATE); + LevitatedTarget = target->GetGUID(); + LevitatedTarget_Timer = 2000; + InAir = false; + } + Levitate_Timer = 12000+rand()%3000; + } else Levitate_Timer -= diff; + + // Chain Lightning + if (ChainLightning_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_CHAIN_LIGHTNING); + ChainLightning_Timer = 7000; + } else ChainLightning_Timer -= diff; + + // Static Charge + if (StaticCharge_Timer <= diff) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30, true)) + DoCast(target, SPELL_STATIC_CHARGE); + StaticCharge_Timer = 10000; + } else StaticCharge_Timer -= diff; + + DoMeleeAttackIfReady(); + } + }; + +}; + +void AddSC_boss_the_black_stalker() +{ + new boss_the_black_stalker(); +} diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp new file mode 100644 index 00000000000..0a305edf23f --- /dev/null +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ + +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_the_underbog : public InstanceMapScript +{ +public: + instance_the_underbog() : InstanceMapScript("instance_the_underbog", 546) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_the_underbog_InstanceMapScript(map); + } + + struct instance_the_underbog_InstanceMapScript : public InstanceScript + { + instance_the_underbog_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_the_underbog() +{ + new instance_the_underbog(); +} diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp deleted file mode 100644 index 0db48d83ebb..00000000000 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -/* ScriptData -SDName: Boss_Hungarfen -SD%Complete: 95 -SDComment: Need confirmation if spell data are same in both modes. Summons should have faster rate in heroic -SDCategory: Coilfang Resevoir, Underbog -EndScriptData */ - -#include "ScriptMgr.h" -#include "ScriptedCreature.h" - -enum Spells -{ - SPELL_FOUL_SPORES = 31673, - SPELL_ACID_GEYSER = 38739, - - SPELL_SPORE_CLOUD = 34168, - SPELL_PUTRID_MUSHROOM = 31690, - SPELL_GROW = 31698 -}; - -class boss_hungarfen : public CreatureScript -{ -public: - boss_hungarfen() : CreatureScript("boss_hungarfen") { } - - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new boss_hungarfenAI(creature); - } - - struct boss_hungarfenAI : public ScriptedAI - { - boss_hungarfenAI(Creature* creature) : ScriptedAI(creature) - { - } - - bool Root; - uint32 Mushroom_Timer; - uint32 AcidGeyser_Timer; - - void Reset() OVERRIDE - { - Root = false; - Mushroom_Timer = 5000; // 1 mushroom after 5s, then one per 10s. This should be different in heroic mode - AcidGeyser_Timer = 10000; - } - - void EnterCombat(Unit* /*who*/) OVERRIDE - { - } - - void UpdateAI(uint32 diff) OVERRIDE - { - if (!UpdateVictim()) - return; - - if (!HealthAbovePct(20)) - { - if (!Root) - { - DoCast(me, SPELL_FOUL_SPORES); - Root = true; - } - } - - if (Mushroom_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - me->SummonCreature(17990, target->GetPositionX()+(rand()%8), target->GetPositionY()+(rand()%8), target->GetPositionZ(), float(rand()%5), TEMPSUMMON_TIMED_DESPAWN, 22000); - else - me->SummonCreature(17990, me->GetPositionX()+(rand()%8), me->GetPositionY()+(rand()%8), me->GetPositionZ(), float(rand()%5), TEMPSUMMON_TIMED_DESPAWN, 22000); - - Mushroom_Timer = 10000; - } else Mushroom_Timer -= diff; - - if (AcidGeyser_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_ACID_GEYSER); - AcidGeyser_Timer = 10000+rand()%7500; - } else AcidGeyser_Timer -= diff; - - DoMeleeAttackIfReady(); - } - }; - -}; - -class npc_underbog_mushroom : public CreatureScript -{ -public: - npc_underbog_mushroom() : CreatureScript("npc_underbog_mushroom") { } - - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_underbog_mushroomAI(creature); - } - - struct npc_underbog_mushroomAI : public ScriptedAI - { - npc_underbog_mushroomAI(Creature* creature) : ScriptedAI(creature) {} - - bool Stop; - uint32 Grow_Timer; - uint32 Shrink_Timer; - - void Reset() OVERRIDE - { - Stop = false; - Grow_Timer = 0; - Shrink_Timer = 20000; - - DoCast(me, SPELL_PUTRID_MUSHROOM, true); - DoCast(me, SPELL_SPORE_CLOUD, true); - } - - void MoveInLineOfSight(Unit* /*who*/) OVERRIDE {} - - - void AttackStart(Unit* /*who*/) OVERRIDE {} - - void EnterCombat(Unit* /*who*/) OVERRIDE {} - - void UpdateAI(uint32 diff) OVERRIDE - { - if (Stop) - return; - - if (Grow_Timer <= diff) - { - DoCast(me, SPELL_GROW); - Grow_Timer = 3000; - } else Grow_Timer -= diff; - - if (Shrink_Timer <= diff) - { - me->RemoveAurasDueToSpell(SPELL_GROW); - Stop = true; - } else Shrink_Timer -= diff; - } - }; - -}; - -void AddSC_boss_hungarfen() -{ - new boss_hungarfen(); - new npc_underbog_mushroom(); -} diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp deleted file mode 100644 index c22dedd269e..00000000000 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (C) 2008-2013 TrinityCore - * Copyright (C) 2006-2009 ScriptDev2 - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -/* ScriptData -SDName: Boss_the_black_stalker -SD%Complete: 95 -SDComment: Timers may be incorrect -SDCategory: Coilfang Resevoir, Underbog -EndScriptData */ - -#include "ScriptMgr.h" -#include "ScriptedCreature.h" - -enum Spells -{ - SPELL_LEVITATE = 31704, - SPELL_SUSPENSION = 31719, - SPELL_LEVITATION_PULSE = 31701, - SPELL_MAGNETIC_PULL = 31705, - SPELL_CHAIN_LIGHTNING = 31717, - SPELL_STATIC_CHARGE = 31715, - SPELL_SUMMON_SPORE_STRIDER = 38755 -}; - -enum CreatureIdS -{ - ENTRY_SPORE_STRIDER = 22299 -}; - -class boss_the_black_stalker : public CreatureScript -{ -public: - boss_the_black_stalker() : CreatureScript("boss_the_black_stalker") { } - - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new boss_the_black_stalkerAI(creature); - } - - struct boss_the_black_stalkerAI : public ScriptedAI - { - boss_the_black_stalkerAI(Creature* creature) : ScriptedAI(creature) - { - } - - uint32 SporeStriders_Timer; - uint32 Levitate_Timer; - uint32 ChainLightning_Timer; - uint32 StaticCharge_Timer; - uint64 LevitatedTarget; - uint32 LevitatedTarget_Timer; - bool InAir; - uint32 check_Timer; - std::list Striders; - - void Reset() OVERRIDE - { - Levitate_Timer = 12000; - ChainLightning_Timer = 6000; - StaticCharge_Timer = 10000; - SporeStriders_Timer = 10000+rand()%5000; - check_Timer = 5000; - LevitatedTarget = 0; - LevitatedTarget_Timer = 0; - Striders.clear(); - } - - void EnterCombat(Unit* /*who*/) OVERRIDE {} - - void JustSummoned(Creature* summon) OVERRIDE - { - if (summon && summon->GetEntry() == ENTRY_SPORE_STRIDER) - { - Striders.push_back(summon->GetGUID()); - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - summon->AI()->AttackStart(target); - else - if (me->GetVictim()) - summon->AI()->AttackStart(me->GetVictim()); - } - } - - void JustDied(Unit* /*killer*/) OVERRIDE - { - for (std::list::const_iterator i = Striders.begin(); i != Striders.end(); ++i) - if (Creature* strider = Unit::GetCreature(*me, *i)) - strider->DisappearAndDie(); - } - - void UpdateAI(uint32 diff) OVERRIDE - { - if (!UpdateVictim()) - return; - - // Evade if too far - if (check_Timer <= diff) - { - float x, y, z, o; - me->GetHomePosition(x, y, z, o); - if (!me->IsWithinDist3d(x, y, z, 60)) - { - EnterEvadeMode(); - return; - } - check_Timer = 1000; - } else check_Timer -= diff; - - // Spore Striders - if (IsHeroic() && SporeStriders_Timer <= diff) - { - DoCast(me, SPELL_SUMMON_SPORE_STRIDER); - SporeStriders_Timer = 10000+rand()%5000; - } else SporeStriders_Timer -= diff; - - // Levitate - if (LevitatedTarget) - { - if (LevitatedTarget_Timer <= diff) - { - if (Unit* target = Unit::GetUnit(*me, LevitatedTarget)) - { - if (!target->HasAura(SPELL_LEVITATE)) - { - LevitatedTarget = 0; - return; - } - if (InAir) - { - target->AddAura(SPELL_SUSPENSION, target); - LevitatedTarget = 0; - } - else - { - target->CastSpell(target, SPELL_MAGNETIC_PULL, true); - InAir = true; - LevitatedTarget_Timer = 1500; - } - } - else - LevitatedTarget = 0; - } else LevitatedTarget_Timer -= diff; - } - if (Levitate_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - { - DoCast(target, SPELL_LEVITATE); - LevitatedTarget = target->GetGUID(); - LevitatedTarget_Timer = 2000; - InAir = false; - } - Levitate_Timer = 12000+rand()%3000; - } else Levitate_Timer -= diff; - - // Chain Lightning - if (ChainLightning_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_CHAIN_LIGHTNING); - ChainLightning_Timer = 7000; - } else ChainLightning_Timer -= diff; - - // Static Charge - if (StaticCharge_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30, true)) - DoCast(target, SPELL_STATIC_CHARGE); - StaticCharge_Timer = 10000; - } else StaticCharge_Timer -= diff; - - DoMeleeAttackIfReady(); - } - }; - -}; - -void AddSC_boss_the_black_stalker() -{ - new boss_the_black_stalker(); -} -- cgit v1.2.3 From 1ad954e215faa04784806a01774a70900439e952 Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Sat, 17 Aug 2013 19:14:48 +0300 Subject: Core/Scripts: Placeholders for instances Maraudon and Dire Maul. It is needed for Random Dungeon Finder credit. --- sql/updates/world/2013_08_17_04_world_misc.sql | 2 + src/server/game/Scripting/ScriptLoader.cpp | 4 ++ src/server/scripts/Kalimdor/CMakeLists.txt | 2 + .../Kalimdor/DireMaul/instance_dire_maul.cpp | 47 ++++++++++++++++++++++ .../Kalimdor/Maraudon/instance_maraudon.cpp | 47 ++++++++++++++++++++++ 5 files changed, 102 insertions(+) create mode 100644 sql/updates/world/2013_08_17_04_world_misc.sql create mode 100644 src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp create mode 100644 src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp (limited to 'src/server/scripts') diff --git a/sql/updates/world/2013_08_17_04_world_misc.sql b/sql/updates/world/2013_08_17_04_world_misc.sql new file mode 100644 index 00000000000..0ecc2ada335 --- /dev/null +++ b/sql/updates/world/2013_08_17_04_world_misc.sql @@ -0,0 +1,2 @@ +UPDATE `instance_template` SET `script`='instance_maraudon' WHERE `map`=349; +UPDATE `instance_template` SET `script`='instance_dire_maul' WHERE `map`=429; diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 82537816d44..ed0972c3301 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -311,10 +311,12 @@ void AddSC_boss_mal_ganis(); void AddSC_boss_meathook(); void AddSC_culling_of_stratholme(); void AddSC_instance_culling_of_stratholme(); +void AddSC_instance_dire_maul(); //Dire Maul void AddSC_boss_celebras_the_cursed(); //Maraudon void AddSC_boss_landslide(); void AddSC_boss_noxxion(); void AddSC_boss_ptheradras(); +void AddSC_instance_maraudon(); void AddSC_boss_onyxia(); //Onyxia's Lair void AddSC_instance_onyxias_lair(); void AddSC_boss_amnennar_the_coldbringer(); //Razorfen Downs @@ -974,10 +976,12 @@ void AddKalimdorScripts() AddSC_boss_meathook(); AddSC_culling_of_stratholme(); AddSC_instance_culling_of_stratholme(); + AddSC_instance_dire_maul(); //Dire Maul AddSC_boss_celebras_the_cursed(); //Maraudon AddSC_boss_landslide(); AddSC_boss_noxxion(); AddSC_boss_ptheradras(); + AddSC_instance_maraudon(); AddSC_boss_onyxia(); //Onyxia's Lair AddSC_instance_onyxias_lair(); AddSC_boss_amnennar_the_coldbringer(); //Razorfen Downs diff --git a/src/server/scripts/Kalimdor/CMakeLists.txt b/src/server/scripts/Kalimdor/CMakeLists.txt index f5a9db94a0e..17c360a54b2 100644 --- a/src/server/scripts/Kalimdor/CMakeLists.txt +++ b/src/server/scripts/Kalimdor/CMakeLists.txt @@ -67,6 +67,7 @@ set(scripts_STAT_SRCS Kalimdor/Maraudon/boss_landslide.cpp Kalimdor/Maraudon/boss_celebras_the_cursed.cpp Kalimdor/Maraudon/boss_noxxion.cpp + Kalimdor/Maraudon/instance_maraudon.cpp Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -113,6 +114,7 @@ set(scripts_STAT_SRCS Kalimdor/OnyxiasLair/onyxias_lair.h Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp + Kalimdor/DireMaul/instance_dire_maul.cpp ) message(" -> Prepared: Kalimdor") diff --git a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp new file mode 100644 index 00000000000..a478d7aea25 --- /dev/null +++ b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ + +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_dire_maul : public InstanceMapScript +{ +public: + instance_dire_maul() : InstanceMapScript("instance_dire_maul", 429) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_dire_maul_InstanceMapScript(map); + } + + struct instance_dire_maul_InstanceMapScript : public InstanceScript + { + instance_dire_maul_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_dire_maul() +{ + new instance_dire_maul(); +} diff --git a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp new file mode 100644 index 00000000000..a44f4078a9b --- /dev/null +++ b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * 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, see . + */ + +/* +This placeholder for the instance is needed for dungeon finding to be able +to give credit after the boss defined in lastEncounterDungeon is killed. +Without it, the party doing random dungeon won't get satchel of spoils and +gets instead the deserter debuff. +*/ + +#include "ScriptMgr.h" +#include "InstanceScript.h" + +class instance_maraudon : public InstanceMapScript +{ +public: + instance_maraudon() : InstanceMapScript("instance_maraudon", 349) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE + { + return new instance_maraudon_InstanceMapScript(map); + } + + struct instance_maraudon_InstanceMapScript : public InstanceScript + { + instance_maraudon_InstanceMapScript(Map* map) : InstanceScript(map) {} + }; +}; + +void AddSC_instance_maraudon() +{ + new instance_maraudon(); +} -- cgit v1.2.3 From da1e466bd5bf2e4f0778a9bfb6b60ae66e1a6ada Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sat, 17 Aug 2013 23:46:36 +0200 Subject: Core/Misc: Implemented GetObjectScale function --- src/server/collision/Models/GameObjectModel.cpp | 2 +- src/server/game/Entities/Creature/Creature.cpp | 4 ++-- src/server/game/Entities/Object/Object.h | 1 + src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 4 ++-- .../scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp | 2 +- src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp | 4 ++-- src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp | 2 +- src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp | 2 +- src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp | 2 +- src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp | 2 +- 11 files changed, 14 insertions(+), 13 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp index 9db3d706fca..a3af175a977 100644 --- a/src/server/collision/Models/GameObjectModel.cpp +++ b/src/server/collision/Models/GameObjectModel.cpp @@ -119,7 +119,7 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn //ID = 0; iPos = Vector3(go.GetPositionX(), go.GetPositionY(), go.GetPositionZ()); phasemask = go.GetPhaseMask(); - iScale = go.GetFloatValue(OBJECT_FIELD_SCALE_X); + iScale = go.GetObjectScale(); iInvScale = 1.f / iScale; G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(go.GetOrientation(), 0, 0); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index b46ee4703db..2af7824cf98 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2631,7 +2631,7 @@ void Creature::SetDisplayId(uint32 modelId) if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId)) { - SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, minfo->bounding_radius * GetFloatValue(OBJECT_FIELD_SCALE_X)); - SetFloatValue(UNIT_FIELD_COMBATREACH, minfo->combat_reach * GetFloatValue(OBJECT_FIELD_SCALE_X)); + SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, minfo->bounding_radius * GetObjectScale()); + SetFloatValue(UNIT_FIELD_COMBATREACH, minfo->combat_reach * GetObjectScale()); } } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 2bfb9633066..4c48d80762d 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -134,6 +134,7 @@ class Object uint32 GetEntry() const { return GetUInt32Value(OBJECT_FIELD_ENTRY); } void SetEntry(uint32 entry) { SetUInt32Value(OBJECT_FIELD_ENTRY, entry); } + float GetObjectScale() const { return GetFloatValue(OBJECT_FIELD_SCALE_X); } virtual void SetObjectScale(float scale) { SetFloatValue(OBJECT_FIELD_SCALE_X, scale); } TypeID GetTypeId() const { return m_objectTypeId; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c57c5c9a076..2ff86f81880 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26302,7 +26302,7 @@ float Player::GetCollisionHeight(bool mounted) const CreatureModelDataEntry const* modelData = sCreatureModelDataStore.LookupEntry(displayInfo->ModelId); ASSERT(modelData); - float scaleMod = GetFloatValue(OBJECT_FIELD_SCALE_X); // 99% sure about this + float scaleMod = GetObjectScale(); // 99% sure about this return scaleMod * mountModelData->MountHeight + modelData->CollisionHeight * 0.5f; } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 20b6e67c5db..01de61f2b0f 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2069,7 +2069,7 @@ void AuraEffect::HandleAuraModScale(AuraApplication const* aurApp, uint8 mode, b Unit* target = aurApp->GetTarget(); - float scale = target->GetFloatValue(OBJECT_FIELD_SCALE_X); + float scale = target->GetObjectScale(); ApplyPercentModFloatVar(scale, float(GetAmount()), apply); target->SetObjectScale(scale); } @@ -2089,7 +2089,7 @@ void AuraEffect::HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode // What must be cloned? at least display and scale target->SetDisplayId(caster->GetDisplayId()); - //target->SetObjectScale(caster->GetFloatValue(OBJECT_FIELD_SCALE_X)); // we need retail info about how scaling is handled (aura maybe?) + //target->SetObjectScale(caster->GetObjectScale()); // we need retail info about how scaling is handled (aura maybe?) target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_MIRROR_IMAGE); } else diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 8e783fa9361..927b3dfe467 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -955,7 +955,7 @@ class spell_putricide_slime_puddle : public SpellScriptLoader void ScaleRange(std::list& targets) { - targets.remove_if(ExactDistanceCheck(GetCaster(), 2.5f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X))); + targets.remove_if(ExactDistanceCheck(GetCaster(), 2.5f * GetCaster()->GetObjectScale())); } void Register() OVERRIDE diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 3c28483337b..fba64a89d83 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -2445,12 +2445,12 @@ class spell_the_lich_king_defile : public SpellScriptLoader void CorrectRange(std::list& targets) { - targets.remove_if(ExactDistanceCheck(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X))); + targets.remove_if(ExactDistanceCheck(GetCaster(), 10.0f * GetCaster()->GetObjectScale())); } void ChangeDamageAndGrow() { - SetHitDamage(int32(GetHitDamage() * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X))); + SetHitDamage(int32(GetHitDamage() * GetCaster()->GetObjectScale())); // HACK: target player should cast this spell on defile // however with current aura handling auras cast by different units // cannot stack on the same aura object increasing the stack count diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 5578d199ec3..9024000f385 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -507,7 +507,7 @@ public: if (target && !target->IsCharmed() && (chained.find(target->GetGUID()) == chained.end())) { DoCast(target, SPELL_CHAINS_OF_KELTHUZAD); - float scale = target->GetFloatValue(OBJECT_FIELD_SCALE_X); + float scale = target->GetObjectScale(); chained.insert(std::make_pair(target->GetGUID(), scale)); target->SetObjectScale(scale * 2); events.ScheduleEvent(EVENT_CHAINED_SPELL, 2000); //core has 2000ms to set unit flag charm diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 4da66452d48..4a1670d1048 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -1967,7 +1967,7 @@ class spell_arcane_overload : public SpellScriptLoader { Creature* arcaneOverload = GetCaster()->ToCreature(); targets.remove_if(ExactDistanceCheck(arcaneOverload, - GetSpellInfo()->Effects[EFFECT_0].CalcRadius(arcaneOverload) * arcaneOverload->GetFloatValue(OBJECT_FIELD_SCALE_X))); + GetSpellInfo()->Effects[EFFECT_0].CalcRadius(arcaneOverload) * arcaneOverload->GetObjectScale())); } void Register() OVERRIDE diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp index 09fb235edb9..8b2cce69dc7 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp @@ -408,7 +408,7 @@ class boss_alar : public CreatureScript if (Summoned) { Summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - Summoned->SetObjectScale(Summoned->GetFloatValue(OBJECT_FIELD_SCALE_X)*2.5f); + Summoned->SetObjectScale(Summoned->GetObjectScale() * 2.5f); Summoned->SetDisplayId(11686); Summoned->setFaction(me->getFaction()); Summoned->SetLevel(me->getLevel()); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 3c8627c7058..c5c3f6deb12 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -104,7 +104,7 @@ class boss_high_astromancer_solarian : public CreatureScript instance = creature->GetInstanceScript(); defaultarmor = creature->GetArmor(); - defaultsize = creature->GetFloatValue(OBJECT_FIELD_SCALE_X); + defaultsize = creature->GetObjectScale(); } InstanceScript* instance; -- cgit v1.2.3 From c32dbd1432b28206fee430da7e9f77d6053730fc Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 18 Aug 2013 00:55:22 +0200 Subject: Core/Spells: Fix hunter T7 4P Bonus Closes #8320 --- .../2013_08_18_00_world_spell_script_names_335.sql | 3 + src/server/scripts/Spells/spell_hunter.cpp | 71 +++++++++++++++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2013_08_18_00_world_spell_script_names_335.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2013_08_18_00_world_spell_script_names_335.sql b/sql/updates/world/2013_08_18_00_world_spell_script_names_335.sql new file mode 100644 index 00000000000..cadf3fb221f --- /dev/null +++ b/sql/updates/world/2013_08_18_00_world_spell_script_names_335.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` = 60144; +INSERT INTO `spell_script_names`(`spell_id`, `ScriptName`) VALUES +(60144, 'spell_hun_viper_attack_speed'); diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index aca46c252da..8c0864e76b9 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -33,6 +33,7 @@ enum HunterSpells { SPELL_HUNTER_ASPECT_OF_THE_BEAST_PET = 61669, + SPELL_HUNTER_ASPECT_OF_THE_VIPER = 34074, SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE = 34075, SPELL_HUNTER_BESTIAL_WRATH = 19574, SPELL_HUNTER_CHIMERA_SHOT_SERPENT = 53353, @@ -51,6 +52,8 @@ enum HunterSpells SPELL_HUNTER_READINESS = 23989, SPELL_HUNTER_SNIPER_TRAINING_R1 = 53302, SPELL_HUNTER_SNIPER_TRAINING_BUFF_R1 = 64418, + SPELL_HUNTER_VICIOUS_VIPER = 61609, + SPELL_HUNTER_VIPER_ATTACK_SPEED = 60144, SPELL_DRAENEI_GIFT_OF_THE_NAARU = 59543 }; @@ -115,9 +118,10 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE { - if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER)) + if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VIPER_ATTACK_SPEED) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VICIOUS_VIPER)) return false; return true; } @@ -135,9 +139,26 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader GetTarget()->CastCustomSpell(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, NULL, aurEff); } + void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + // Hunter T7 4P Bonus + if (GetTarget()->HasAura(SPELL_HUNTER_VIPER_ATTACK_SPEED)) + GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, true, NULL, aurEff); + } + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + // Hunter T7 4P Bonus + Unit* target = GetTarget(); + if (GetTarget()->HasAura(SPELL_HUNTER_VIPER_ATTACK_SPEED)) + GetTarget()->RemoveAurasDueToSpell(SPELL_HUNTER_VICIOUS_VIPER); + } + void Register() OVERRIDE { OnEffectProc += AuraEffectProcFn(spell_hun_ascpect_of_the_viper_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_OBS_MOD_POWER); + AfterEffectApply += AuraEffectApplyFn(spell_hun_ascpect_of_the_viper_AuraScript::OnApply, EFFECT_0, SPELL_AURA_OBS_MOD_POWER, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_hun_ascpect_of_the_viper_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_OBS_MOD_POWER, AURA_EFFECT_HANDLE_REAL); } }; @@ -843,6 +864,49 @@ class spell_hun_target_only_pet_and_owner : public SpellScriptLoader } }; +// 60144 - Viper Attack Speed +class spell_hun_viper_attack_speed : public SpellScriptLoader +{ + public: + spell_hun_viper_attack_speed() : SpellScriptLoader("spell_hun_viper_attack_speed") { } + + class spell_hun_viper_attack_speed_AuraScript : public AuraScript + { + PrepareAuraScript(spell_hun_viper_attack_speed_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE + { + if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VICIOUS_VIPER)) + return false; + return true; + } + + void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + if (GetTarget()->HasAura(SPELL_HUNTER_ASPECT_OF_THE_VIPER)) + GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, true, NULL, aurEff); + } + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + // possible exploit + GetTarget()->RemoveAurasDueToSpell(SPELL_HUNTER_VICIOUS_VIPER); + } + + void Register() OVERRIDE + { + AfterEffectApply += AuraEffectApplyFn(spell_hun_viper_attack_speed_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_hun_viper_attack_speed_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const OVERRIDE + { + return new spell_hun_viper_attack_speed_AuraScript(); + } +}; + void AddSC_hunter_spell_scripts() { new spell_hun_aspect_of_the_beast(); @@ -862,4 +926,5 @@ void AddSC_hunter_spell_scripts() new spell_hun_sniper_training(); new spell_hun_tame_beast(); new spell_hun_target_only_pet_and_owner(); + new spell_hun_viper_attack_speed(); } -- cgit v1.2.3 From 2b19ba1879cbdb121abe99f8d1060628a0c7243f Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 18 Aug 2013 01:41:10 +0200 Subject: Misc: replace Unit::GetPlayer with ObjectAccessor::GetPlayer and some cosmetic changes --- .../game/AI/ScriptedAI/ScriptedFollowerAI.cpp | 2 +- src/server/game/AI/SmartScripts/SmartAI.cpp | 6 +- src/server/game/Entities/Unit/Unit.cpp | 19 +-- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Spells/Auras/SpellAuras.cpp | 3 +- src/server/game/Spells/SpellScript.h | 18 +- .../EasternKingdoms/ScarletEnclave/chapter1.cpp | 6 +- .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 4 +- .../EasternKingdoms/SunwellPlateau/boss_muru.cpp | 2 +- .../scripts/EasternKingdoms/ZulAman/zulaman.cpp | 3 +- .../EasternKingdoms/zone_eversong_woods.cpp | 8 +- .../EasternKingdoms/zone_isle_of_queldanas.cpp | 30 ++-- .../EasternKingdoms/zone_silverpine_forest.cpp | 6 +- .../EasternKingdoms/zone_tirisfal_glades.cpp | 2 +- src/server/scripts/Events/childrens_week.cpp | 28 ++-- .../scripts/Kalimdor/ZulFarrak/zulfarrak.cpp | 2 +- src/server/scripts/Kalimdor/zone_azshara.cpp | 15 +- .../scripts/Kalimdor/zone_azuremyst_isle.cpp | 2 +- src/server/scripts/Kalimdor/zone_moonglade.cpp | 11 +- src/server/scripts/Kalimdor/zone_mulgore.cpp | 4 +- src/server/scripts/Kalimdor/zone_orgrimmar.cpp | 2 +- src/server/scripts/Kalimdor/zone_silithus.cpp | 9 +- src/server/scripts/Kalimdor/zone_the_barrens.cpp | 32 ++-- .../TrialOfTheCrusader/boss_northrend_beasts.cpp | 8 +- .../scripts/Northrend/Naxxramas/boss_kelthuzad.cpp | 32 ++-- .../scripts/Northrend/zone_borean_tundra.cpp | 14 +- .../scripts/Northrend/zone_grizzly_hills.cpp | 2 +- .../scripts/Northrend/zone_howling_fjord.cpp | 2 +- .../scripts/Northrend/zone_sholazar_basin.cpp | 4 +- src/server/scripts/Northrend/zone_zuldrak.cpp | 10 +- .../scripts/Outland/BlackTemple/boss_illidan.cpp | 185 ++++++++++----------- .../HellfireRamparts/boss_omor_the_unscarred.cpp | 2 +- .../scripts/Outland/zone_blades_edge_mountains.cpp | 16 +- src/server/scripts/Outland/zone_netherstorm.cpp | 18 +- .../scripts/Outland/zone_shadowmoon_valley.cpp | 39 ++--- src/server/scripts/Spells/spell_hunter.cpp | 11 +- src/server/scripts/World/npcs_special.cpp | 4 +- 37 files changed, 263 insertions(+), 300 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index 8f46896f6e8..befd6b9d16e 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -311,7 +311,7 @@ void FollowerAI::StartFollow(Player* player, uint32 factionForFollower, const Qu Player* FollowerAI::GetLeaderForFollower() { - if (Player* player = Unit::GetPlayer(*me, m_uiLeaderGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, m_uiLeaderGUID)) { if (player->IsAlive()) return player; diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index c5b5cd5dfef..febf2e789a2 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -343,7 +343,7 @@ void SmartAI::UpdateAI(uint32 diff) { if (me->FindNearestCreature(mFollowArrivedEntry, INTERACTION_DISTANCE, true)) { - if (Player* player = me->GetPlayer(*me, mFollowGuid)) + if (Player* player = ObjectAccessor::GetPlayer(*me, mFollowGuid)) { if (!mFollowCreditType) player->RewardPlayerAndGroupAtEvent(mFollowCredit, me); @@ -365,7 +365,9 @@ void SmartAI::UpdateAI(uint32 diff) return; } mFollowArrivedTimer = 1000; - } else mFollowArrivedTimer -= diff; + } + else + mFollowArrivedTimer -= diff; } if (!UpdateVictim()) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 1db86f24e64..57a920ab56b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2526,10 +2526,7 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* victim, SpellInfo const* spellInfo // Increase hit chance from attacker SPELL_AURA_MOD_SPELL_HIT_CHANCE and attacker ratings HitChance += int32(m_modSpellHitChance * 100.0f); - if (HitChance < 100) - HitChance = 100; - else if (HitChance > 10000) - HitChance = 10000; + RoundToInterval(HitChance, 100, 10000); int32 tmp = 10000 - HitChance; @@ -5741,8 +5738,8 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere // if damage is more than need or target die from damage deal finish spell if (triggeredByAura->GetAmount() <= int32(damage) || GetHealth() <= damage) { - // remember guid before aura delete - uint64 casterGuid = triggeredByAura->GetCasterGUID(); + // remember caster before aura delete + Unit* caster = triggeredByAura->GetCaster(); // Remove aura (before cast for prevent infinite loop handlers) RemoveAurasDueToSpell(triggeredByAura->GetId()); @@ -5750,7 +5747,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere uint32 spell = sSpellMgr->GetSpellWithRank(27285, dummySpell->GetRank()); // Cast finish spell (triggeredByAura already not exist!) - if (Unit* caster = GetUnit(*this, casterGuid)) + if (caster) caster->CastSpell(this, spell, true, castItem); return true; // no hidden cooldown } @@ -5765,14 +5762,14 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere // if damage is more than need deal finish spell if (triggeredByAura->GetAmount() <= int32(damage)) { - // remember guid before aura delete - uint64 casterGuid = triggeredByAura->GetCasterGUID(); + // remember caster before aura delete + Unit* caster = triggeredByAura->GetCaster(); // Remove aura (before cast for prevent infinite loop handlers) RemoveAurasDueToSpell(triggeredByAura->GetId()); // Cast finish spell (triggeredByAura already not exist!) - if (Unit* caster = GetUnit(*this, casterGuid)) + if (caster) caster->CastSpell(this, 32865, true, castItem); return true; // no hidden cooldown } @@ -15933,7 +15930,7 @@ void Unit::RestoreFaction() Unit* Unit::GetRedirectThreatTarget() { - return _redirectThreadInfo.GetTargetGUID() ? GetUnit(*this, _redirectThreadInfo.GetTargetGUID()) : NULL; + return _redirectThreadInfo.GetTargetGUID() ? ObjectAccessor::GetUnit(*this, _redirectThreadInfo.GetTargetGUID()) : NULL; } bool Unit::CreateVehicleKit(uint32 id, uint32 creatureEntry) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 8f3fc6bd873..d34c66f7893 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2001,7 +2001,7 @@ class Unit : public WorldObject int32 CalculateSpellDamage(Unit const* target, SpellInfo const* spellProto, uint8 effect_index, int32 const* basePoints = NULL) const; int32 CalcSpellDuration(SpellInfo const* spellProto); int32 ModSpellDuration(SpellInfo const* spellProto, Unit const* target, int32 duration, bool positive, uint32 effectMask); - void ModSpellCastTime(SpellInfo const* spellProto, int32 & castTime, Spell* spell=NULL); + void ModSpellCastTime(SpellInfo const* spellProto, int32& castTime, Spell* spell = NULL); float CalculateLevelPenalty(SpellInfo const* spellProto) const; void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); } diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 51a04749c30..149f422554a 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -998,8 +998,7 @@ int32 Aura::CalcDispelChance(Unit* auraTarget, bool offensive) const if (offensive && auraTarget) resistChance += auraTarget->GetTotalAuraModifier(SPELL_AURA_MOD_DISPEL_RESIST); - resistChance = resistChance < 0 ? 0 : resistChance; - resistChance = resistChance > 100 ? 100 : resistChance; + RoundToInterval(resistChance, 0, 100); return 100 - resistChance; } diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index 6f1df2560dc..f7940b2b8da 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -74,9 +74,9 @@ class _SpellScript EffectHook(uint8 _effIndex); virtual ~EffectHook() { } - uint8 GetAffectedEffectsMask(SpellInfo const* spellEntry); - bool IsEffectAffected(SpellInfo const* spellEntry, uint8 effIndex); - virtual bool CheckEffect(SpellInfo const* spellEntry, uint8 effIndex) = 0; + uint8 GetAffectedEffectsMask(SpellInfo const* spellInfo); + bool IsEffectAffected(SpellInfo const* spellInfo, uint8 effIndex); + virtual bool CheckEffect(SpellInfo const* spellInfo, uint8 effIndex) = 0; std::string EffIndexToString(); protected: uint8 effIndex; @@ -86,7 +86,7 @@ class _SpellScript { public: EffectNameCheck(uint16 _effName) { effName = _effName; } - bool Check(SpellInfo const* spellEntry, uint8 effIndex); + bool Check(SpellInfo const* spellInfo, uint8 effIndex); std::string ToString(); private: uint16 effName; @@ -96,7 +96,7 @@ class _SpellScript { public: EffectAuraNameCheck(uint16 _effAurName) { effAurName = _effAurName; } - bool Check(SpellInfo const* spellEntry, uint8 effIndex); + bool Check(SpellInfo const* spellInfo, uint8 effIndex); std::string ToString(); private: uint16 effAurName; @@ -114,7 +114,7 @@ class _SpellScript virtual void Register() = 0; // Function called on server startup, if returns false script won't be used in core // use for: dbc/template data presence/correctness checks - virtual bool Validate(SpellInfo const* /*spellEntry*/) { return true; } + virtual bool Validate(SpellInfo const* /*spellInfo*/) { return true; } // Function called when script is created, if returns false script will be unloaded afterwards // use for: initializing local script variables (DO NOT USE CONSTRUCTOR FOR THIS PURPOSE!) virtual bool Load() { return true; } @@ -185,7 +185,7 @@ class SpellScript : public _SpellScript public: EffectHandler(SpellEffectFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName); std::string ToString(); - bool CheckEffect(SpellInfo const* spellEntry, uint8 effIndex); + bool CheckEffect(SpellInfo const* spellInfo, uint8 effIndex); void Call(SpellScript* spellScript, SpellEffIndex effIndex); private: SpellEffectFnType pEffectHandlerScript; @@ -204,7 +204,7 @@ class SpellScript : public _SpellScript { public: TargetHook(uint8 _effectIndex, uint16 _targetType, bool _area); - bool CheckEffect(SpellInfo const* spellEntry, uint8 effIndex); + bool CheckEffect(SpellInfo const* spellInfo, uint8 effIndex); std::string ToString(); protected: uint16 targetType; @@ -488,7 +488,7 @@ class AuraScript : public _SpellScript public: EffectBase(uint8 _effIndex, uint16 _effName); std::string ToString(); - bool CheckEffect(SpellInfo const* spellEntry, uint8 effIndex); + bool CheckEffect(SpellInfo const* spellInfo, uint8 effIndex); }; class EffectPeriodicHandler : public EffectBase { diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index c0db8e3eb0f..ba178a6377c 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -143,7 +143,7 @@ public: wait_timer = 5000; me->CastSpell(me, SPELL_DK_INITIATE_VISUAL, true); - if (Player* starter = Unit::GetPlayer(*me, playerGUID)) + if (Player* starter = ObjectAccessor::GetPlayer(*me, playerGUID)) sCreatureTextMgr->SendChat(me, SAY_EVENT_ATTACK, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, starter); phase = PHASE_TO_ATTACK; @@ -228,8 +228,8 @@ public: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); phase = PHASE_ATTACKING; - if (Player* target = Unit::GetPlayer(*me, playerGUID)) - me->AI()->AttackStart(target); + if (Player* target = ObjectAccessor::GetPlayer(*me, playerGUID)) + AttackStart(target); wait_timer = 0; } } diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 44eef7602c8..ba6f0f23656 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -96,7 +96,7 @@ public: { if (speechTimer <= diff) { - Player* player = Unit::GetPlayer(*me, playerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); if (!player) { EnterEvadeMode(); @@ -683,7 +683,7 @@ public: { if (ExecuteSpeech_Timer <= diff) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) { diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index aa53790ee5f..c3d00ddba53 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -410,7 +410,7 @@ public: void JustSummoned(Creature* summoned) OVERRIDE { if (instance) - if (Player* Target = Unit::GetPlayer(*me, instance->GetData64(DATA_PLAYER_GUID))) + if (Player* Target = ObjectAccessor::GetPlayer(*me, instance->GetData64(DATA_PLAYER_GUID))) summoned->AI()->AttackStart(Target); Summons.Summon(summoned); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index bbc8d523cb8..4c3b50e4c3a 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -150,8 +150,7 @@ class npc_zulaman_hostage : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - Player* player = Unit::GetPlayer(*me, PlayerGUID); - if (player) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) player->SendLoot(me->GetGUID(), LOOT_CORPSE); } diff --git a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp index d8750a82bc4..5381b19ebf3 100644 --- a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp @@ -98,14 +98,14 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { if (PlayerGUID) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) player->FailQuest(QUEST_UNEXPECTED_RESULT); } void UpdateAI(uint32 /*diff*/) OVERRIDE { if (KillCount >= 3 && PlayerGUID) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) player->CompleteQuest(QUEST_UNEXPECTED_RESULT); if (Summon) @@ -207,7 +207,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { if (PlayerGUID && !Completed) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) player->FailQuest(QUEST_POWERING_OUR_DEFENSES); } @@ -218,7 +218,7 @@ public: Talk(EMOTE); Completed = true; if (PlayerGUID) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) player->CompleteQuest(QUEST_POWERING_OUR_DEFENSES); me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index 3ebcd315eaf..32a7feffa72 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -113,32 +113,22 @@ public: { npc_greengill_slaveAI(Creature* creature) : ScriptedAI(creature) {} - uint64 PlayerGUID; + void EnterCombat(Unit* /*who*/) OVERRIDE { } - void EnterCombat(Unit* /*who*/)OVERRIDE {} - - void Reset() OVERRIDE - { - PlayerGUID = 0; - } - - void SpellHit(Unit* caster, const SpellInfo* spell) OVERRIDE + void SpellHit(Unit* caster, SpellInfo const* spellInfo) OVERRIDE { - if (!caster) + Player* player = caster->ToPlayer(); + if (!player) return; - if (caster->GetTypeId() == TYPEID_PLAYER && spell->Id == ORB && !me->HasAura(ENRAGE)) + if (spellInfo->Id == ORB && !me->HasAura(ENRAGE)) { - PlayerGUID = caster->GetGUID(); - if (PlayerGUID) - { - Player* player = Unit::GetPlayer(*me, PlayerGUID); - if (player && player->GetQuestStatus(QUESTG) == QUEST_STATUS_INCOMPLETE) - DoCast(player, 45110, true); - } + if (player->GetQuestStatus(QUESTG) == QUEST_STATUS_INCOMPLETE) + DoCast(player, 45110, true); + DoCast(me, ENRAGE); - Unit* Myrmidon = me->FindNearestCreature(DM, 70); - if (Myrmidon) + + if (Creature* Myrmidon = me->FindNearestCreature(DM, 70)) { me->AddThreat(Myrmidon, 100000.0f); AttackStart(Myrmidon); diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp index 5fb8aca22e8..8ddd609da29 100644 --- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp +++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp @@ -232,7 +232,7 @@ public: { Unit* target = NULL; if (PlayerGUID) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) if (player->IsAlive() && RAND(0, 1)) target = player; @@ -248,7 +248,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { if (PlayerGUID) - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) if (player->GetQuestStatus(QUEST_PYREWOOD_AMBUSH) == QUEST_STATUS_INCOMPLETE) player->FailQuest(QUEST_PYREWOOD_AMBUSH); } @@ -301,7 +301,7 @@ public: case 5: //end if (PlayerGUID) { - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) { me->MonsterSay(NPCSAY_END, LANG_UNIVERSAL, 0); //not blizzlike player->GroupEventHappens(QUEST_PYREWOOD_AMBUSH, me); diff --git a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp index d84b02d613e..b06786caf44 100644 --- a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp +++ b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp @@ -132,7 +132,7 @@ public: ++m_uiPhase; break; case 2: - if (Player* player = Unit::GetPlayer(*me, m_uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, m_uiPlayerGUID)) player->AreaExploredOrEventHappens(QUEST_590); DoCast(me, SPELL_DRINK, true); diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp index 5d4b0797081..ca9d4cbc49e 100644 --- a/src/server/scripts/Events/childrens_week.cpp +++ b/src/server/scripts/Events/childrens_week.cpp @@ -181,8 +181,8 @@ class npc_winterfin_playmate : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { @@ -280,8 +280,8 @@ class npc_snowfall_glade_playmate : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { @@ -381,8 +381,8 @@ class npc_the_biggest_tree : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { @@ -468,8 +468,8 @@ class npc_high_oracle_soo_roo : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { @@ -557,8 +557,8 @@ class npc_elder_kekek : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!player || !orphan) { @@ -646,8 +646,8 @@ class npc_the_etymidian : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { @@ -768,8 +768,8 @@ class npc_alexstraza_the_lifebinder : public CreatureScript if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index c8d83a54e1e..a2f98b21589 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -145,7 +145,7 @@ public: break; case 3: me->setFaction(FACTION_HOSTILE); - if (Player* target = Player::GetPlayer(*me, PlayerGUID)) + if (Player* target = ObjectAccessor::GetPlayer(*me, PlayerGUID)) AttackStart(target); if (instance) diff --git a/src/server/scripts/Kalimdor/zone_azshara.cpp b/src/server/scripts/Kalimdor/zone_azshara.cpp index 01b8b9c1bcf..f48bd1f9339 100644 --- a/src/server/scripts/Kalimdor/zone_azshara.cpp +++ b/src/server/scripts/Kalimdor/zone_azshara.cpp @@ -35,7 +35,6 @@ EndContentData */ #include "ScriptedGossip.h" #include "Player.h" #include "SpellInfo.h" -#include "WorldSession.h" /*###### ## npc_spitelashes @@ -371,7 +370,7 @@ public: DoTeleportTo(3706.39f, -3969.15f, 35.9118f); //begin swimming and summon depth charges - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) return; @@ -396,8 +395,7 @@ public: if (GrenadeTimer <= diff) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); - if (player) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) { Talk(SAY_RIZZLE_GRENADE, player->GetGUID()); DoCast(player, SPELL_RIZZLE_FROST_GRENADE, true); @@ -407,7 +405,7 @@ public: if (CheckTimer <= diff) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) { me->DespawnOrUnsummon(); @@ -429,13 +427,6 @@ public: } - void SendText(int32 iTextEntry, Player* player) - { - LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex(); - const char* text = sObjectMgr->GetTrinityString(iTextEntry, loc_idx); - sWorld->SendServerMessage(SERVER_MSG_STRING, text, player); - } - void AttackStart(Unit* who) OVERRIDE { if (!who || PlayerGUID) diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index f5c8c90d921..e0d181646e1 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -134,7 +134,7 @@ public: { me->RemoveAurasDueToSpell(SPELL_IRRIDATION); - if (Player* player = Unit::GetPlayer(*me, pCaster)) + if (Player* player = ObjectAccessor::GetPlayer(*me, pCaster)) { Talk(SAY_HEAL, player->GetGUID()); diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp index 6885e44a245..509adb566cd 100644 --- a/src/server/scripts/Kalimdor/zone_moonglade.cpp +++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp @@ -350,7 +350,7 @@ public: if (!PlayerGUID) return; - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->GetQuestStatus(10965) == QUEST_STATUS_INCOMPLETE) { player->FailQuest(10965); @@ -361,7 +361,7 @@ public: void EnterEvadeMode() OVERRIDE { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->IsInCombat() && player->getAttackerForHelper()) { AttackStart(player->getAttackerForHelper()); @@ -398,7 +398,7 @@ public: { if (checkPlayerTimer <= diff) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->IsInCombat() && player->getAttackerForHelper()) AttackStart(player->getAttackerForHelper()); checkPlayerTimer = 1000; @@ -407,9 +407,8 @@ public: if (EventOnWait && EventTimer <= diff) { - - Player* player = Unit::GetPlayer(*me, PlayerGUID); - if (!player || (player && player->GetQuestStatus(10965) == QUEST_STATUS_NONE)) + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); + if (!player || player->GetQuestStatus(10965) == QUEST_STATUS_NONE) { me->setDeathState(JUST_DIED); return; diff --git a/src/server/scripts/Kalimdor/zone_mulgore.cpp b/src/server/scripts/Kalimdor/zone_mulgore.cpp index 5cd0b9f568b..6b42b971531 100644 --- a/src/server/scripts/Kalimdor/zone_mulgore.cpp +++ b/src/server/scripts/Kalimdor/zone_mulgore.cpp @@ -162,7 +162,7 @@ public: switch (EventPhase) { case 1: - if (Unit* unit = Unit::GetUnit(*me, PlayerGUID)) + if (Unit* unit = ObjectAccessor::GetUnit(*me, PlayerGUID)) { if (GameObject* go = unit->GetGameObject(SPELL_LUNCH)) { @@ -176,7 +176,7 @@ public: me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING); break; case 3: - if (Player* unit = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* unit = ObjectAccessor::GetPlayer(*me, PlayerGUID)) unit->TalkedToCreature(me->GetEntry(), me->GetGUID()); me->UpdateEntry(NPC_KYLE_FRIENDLY); diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index afd320af3ac..7928ab10978 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -89,7 +89,7 @@ public: { if (ResetTimer <= diff) { - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) { if (player->GetTypeId() == TYPEID_PLAYER && player->GetQuestStatus(QUEST_SHATTERED_SALUTE) == QUEST_STATUS_INCOMPLETE) player->FailQuest(QUEST_SHATTERED_SALUTE); diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 154f8b0f80f..fd8a1069ff7 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -526,7 +526,7 @@ public: void HandleAnimation() { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) return; @@ -1002,14 +1002,13 @@ public: void CheckEventFail() { - Player* player = Unit::GetPlayer(*me, PlayerGUID); - + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) return; if (Group* EventGroup = player->GetGroup()) { - Player* groupMember; + Player* groupMember = NULL; uint8 GroupMemberCount = 0; uint8 DeadMemberCount = 0; @@ -1019,7 +1018,7 @@ public: for (Group::member_citerator itr = members.begin(); itr!= members.end(); ++itr) { - groupMember = (Unit::GetPlayer(*me, itr->guid)); + groupMember = ObjectAccessor::GetPlayer(*me, itr->guid); if (!groupMember) continue; if (!groupMember->IsWithinDistInMap(me, EVENT_AREA_RADIUS) && groupMember->GetQuestStatus(QUEST_A_PAWN_ON_THE_ETERNAL_BOARD) == QUEST_STATUS_INCOMPLETE) diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 62867c46f78..122ce84091b 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -366,18 +366,20 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (EventInProgress) { - Player* pWarrior = NULL; + if (EventInProgress) + { + Player* warrior = NULL; if (PlayerGUID) - pWarrior = Unit::GetPlayer(*me, PlayerGUID); + warrior = ObjectAccessor::GetPlayer(*me, PlayerGUID); - if (!pWarrior) + if (!warrior) return; - if (!pWarrior->IsAlive() && pWarrior->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE) { + if (!warrior->IsAlive() && warrior->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE) + { Talk(SAY_TWIGGY_FLATHEAD_DOWN); - pWarrior->FailQuest(1719); + warrior->FailQuest(1719); for (uint8 i = 0; i < 6; ++i) // unsummon challengers { @@ -401,11 +403,12 @@ public: if (!EventGrate && EventInProgress) { float x, y, z; - pWarrior->GetPosition(x, y, z); + warrior->GetPosition(x, y, z); - if (x >= -1684 && x <= -1674 && y >= -4334 && y <= -4324) { - pWarrior->AreaExploredOrEventHappens(1719); - Talk(SAY_TWIGGY_FLATHEAD_BEGIN, pWarrior->GetGUID()); + if (x >= -1684 && x <= -1674 && y >= -4334 && y <= -4324) + { + warrior->AreaExploredOrEventHappens(1719); + Talk(SAY_TWIGGY_FLATHEAD_BEGIN, warrior->GetGUID()); for (uint8 i = 0; i < 6; ++i) { @@ -447,19 +450,20 @@ public: if (Wave < 6 && AffrayChallenger[Wave] && !EventBigWill) { Talk(SAY_TWIGGY_FLATHEAD_FRAY); - Creature* creature = Unit::GetCreature((*me), AffrayChallenger[Wave]); + Creature* creature = ObjectAccessor::GetCreature(*me, AffrayChallenger[Wave]); if (creature && (creature->IsAlive())) { creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); creature->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); creature->setFaction(14); - creature->AI()->AttackStart(pWarrior); + creature->AI()->AttackStart(warrior); ++Wave; WaveTimer = 20000; } } - else if (Wave >= 6 && !EventBigWill) { + else if (Wave >= 6 && !EventBigWill) + { if (Creature* creature = me->SummonCreature(NPC_BIG_WILL, -1722, -4341, 6.12f, 6.26f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 480000)) { BigWill = creature->GetGUID(); @@ -473,7 +477,7 @@ public: } else if (Wave >= 6 && EventBigWill && BigWill) { - Creature* creature = Unit::GetCreature((*me), BigWill); + Creature* creature = ObjectAccessor::GetCreature(*me, BigWill); if (!creature || !creature->IsAlive()) { Talk(SAY_TWIGGY_FLATHEAD_OVER); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 50179d138ae..4301d666c76 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -352,7 +352,7 @@ class npc_snobold_vassal : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (Unit* target = Unit::GetPlayer(*me, _targetGUID)) + if (Unit* target = ObjectAccessor::GetPlayer(*me, _targetGUID)) if (target->IsAlive()) target->RemoveAurasDueToSpell(SPELL_SNOBOLLED); if (_instance) @@ -379,7 +379,7 @@ class npc_snobold_vassal : public CreatureScript if (!UpdateVictim() || _targetDied) return; - if (Unit* target = Unit::GetPlayer(*me, _targetGUID)) + if (Unit* target = ObjectAccessor::GetPlayer(*me, _targetGUID)) { if (!target->IsAlive()) { @@ -907,7 +907,7 @@ class boss_icehowl : public CreatureScript else { // Landed from Hop backwards (start trample) - if (Unit::GetPlayer(*me, _trampleTargetGUID)) + if (ObjectAccessor::GetPlayer(*me, _trampleTargetGUID)) _stage = 4; else _stage = 6; @@ -1046,7 +1046,7 @@ class boss_icehowl : public CreatureScript { case EVENT_TRAMPLE: { - if (Unit* target = Unit::GetPlayer(*me, _trampleTargetGUID)) + if (Unit* target = ObjectAccessor::GetPlayer(*me, _trampleTargetGUID)) { me->StopMoving(); me->AttackStop(); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 9024000f385..a77b21a900b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -283,6 +283,18 @@ public: SummonList spawns; // adds spawn by the trigger. kept in separated list (i.e. not in summons) + void ResetPlayerScale() + { + std::map::const_iterator itr; + for (itr = chained.begin(); itr != chained.end(); ++itr) + { + if (Player* charmed = ObjectAccessor::GetPlayer(*me, itr->first)) + charmed->SetObjectScale(itr->second); + } + + chained.clear(); + } + void Reset() OVERRIDE { _Reset(); @@ -292,14 +304,8 @@ public: me->setFaction(35); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE); - std::map::const_iterator itr; - for (itr = chained.begin(); itr != chained.end(); ++itr) - { - if (Player* charmed = Unit::GetPlayer(*me, (*itr).first)) - charmed->SetObjectScale((*itr).second); - } - chained.clear(); + ResetPlayerScale(); spawns.DespawnAll(); FindGameObjects(); @@ -340,13 +346,7 @@ public: _JustDied(); Talk(SAY_DEATH); - std::map::const_iterator itr; - for (itr = chained.begin(); itr != chained.end(); ++itr) - { - if (Player* player = Unit::GetPlayer(*me, (*itr).first)) - player->SetObjectScale((*itr).second); - } - chained.clear(); + ResetPlayerScale(); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -523,11 +523,11 @@ public: std::map::iterator itr; for (itr = chained.begin(); itr != chained.end();) { - if (Unit* player = Unit::GetPlayer(*me, (*itr).first)) + if (Unit* player = ObjectAccessor::GetPlayer(*me, itr->first)) { if (!player->IsCharmed()) { - player->SetObjectScale((*itr).second); + player->SetObjectScale(itr->second); std::map::iterator next = itr; ++next; chained.erase(itr); diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 6d2a48910fe..da8511a98d5 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -142,7 +142,7 @@ public: break; case 7: DoCast(me, SPELL_EXPLODE_CART, true); - if (Player* caster = Unit::GetPlayer(*me, casterGuid)) + if (Player* caster = ObjectAccessor::GetPlayer(*me, casterGuid)) caster->KilledMonster(me->GetCreatureTemplate(), me->GetGUID()); phaseTimer = 5000; phase = 8; @@ -857,7 +857,7 @@ public: { if (me->IsWithinDistInMap(who, INTERACTION_DISTANCE)) { - if (Player* pHarpooner = Unit::GetPlayer(*me, HarpoonerGUID)) + if (Player* pHarpooner = ObjectAccessor::GetPlayer(*me, HarpoonerGUID)) { pHarpooner->KilledMonsterCredit(26175, 0); pHarpooner->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED); @@ -873,7 +873,7 @@ public: { if (WithRedDragonBlood && HarpoonerGUID && !me->HasAura(SPELL_RED_DRAGONBLOOD)) { - if (Player* pHarpooner = Unit::GetPlayer(*me, HarpoonerGUID)) + if (Player* pHarpooner = ObjectAccessor::GetPlayer(*me, HarpoonerGUID)) { EnterEvadeMode(); StartFollow(pHarpooner, 35, NULL); @@ -1718,7 +1718,7 @@ public: void GotStinged(uint64 casterGUID) { - if (Player* caster = Player::GetPlayer(*me, casterGUID)) + if (Player* caster = ObjectAccessor::GetPlayer(*me, casterGUID)) { uint32 step = caster->GetAuraCount(SPELL_NEURAL_NEEDLE) + 1; switch (step) @@ -2378,7 +2378,7 @@ public: { me->StopMoving(); me->SetUInt32Value(UNIT_NPC_FLAGS, 0); - if (Player* player = me->GetPlayer(*me, uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, uiPlayerGUID)) me->SetFacingToObject(player); uiEventTimer = 3000; uiEventPhase = 1; @@ -2392,7 +2392,7 @@ public: void AttackPlayer() { me->setFaction(14); - if (Player* player = me->GetPlayer(*me, uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, uiPlayerGUID)) me->AI()->AttackStart(player); } @@ -2428,7 +2428,7 @@ public: { case NPC_SALTY_JOHN_THORPE: Talk(SAY_HIDDEN_CULTIST_4); - if (Player* player = me->GetPlayer(*me, uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, uiPlayerGUID)) me->SetFacingToObject(player); uiEventTimer = 3000; uiEventPhase = 3; diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 9b68b37507b..1a080824136 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -638,7 +638,7 @@ public: switch (eventId) { case EVENT_STRAGGLER_1: - if (Player* player = Unit::GetPlayer(*me, _playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) DoCast(player, SPELL_VENTURE_STRAGGLER_CREDIT); me->GetMotionMaster()->MovePoint(0, me->GetPositionX()-7, me->GetPositionY()+7, me->GetPositionZ()); _events.ScheduleEvent(EVENT_STRAGGLER_2, 2500); diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 15273088940..4626ffabd79 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -338,7 +338,7 @@ public: void JustSummoned(Creature* summon) OVERRIDE { - if (Player* player = me->GetPlayer(*me, uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, uiPlayerGUID)) { if (player->IsAlive()) { diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index c1bca1dae76..0178a9056f2 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -540,8 +540,8 @@ public: { if (timer <= diff) { - Player* player = Player::GetPlayer(*me, playerGUID); - Creature* orphan = Creature::GetCreature(*me, orphanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, playerGUID); + Creature* orphan = ObjectAccessor::GetCreature(*me, orphanGUID); if (!orphan || !player) { diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 7281c8a5b1e..c115c07c5b8 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -341,7 +341,7 @@ public: if (uiPhase) { - Player* player = me->GetPlayer(*me, _playerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID); if (uiTimer <= diff) { @@ -1502,7 +1502,7 @@ public: _events.ScheduleEvent(EVENT_TURN_TO_POT, urand(25000, 41000)); break; case EVENT_EASY_123: - if (Player* player = Unit::GetPlayer(*me, _playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { Talk(SAY_EASY_123, _playerGUID); DoCast(player, SPELL_RANDOM_INGREDIENT_EASY_AURA); @@ -1510,7 +1510,7 @@ public: } break; case EVENT_MEDIUM_4: - if (Player* player = Unit::GetPlayer(*me, _playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { Talk(SAY_MEDIUM_4, _playerGUID); DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA); @@ -1518,7 +1518,7 @@ public: } break; case EVENT_MEDIUM_5: - if (Player* player = Unit::GetPlayer(*me, _playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { Talk(SAY_MEDIUM_5, _playerGUID); DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA); @@ -1526,7 +1526,7 @@ public: } break; case EVENT_HARD_6: - if (Player* player = Unit::GetPlayer(*me, _playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { Talk(SAY_HARD_6, _playerGUID); DoCast(player, SPELL_RANDOM_INGREDIENT_HARD_AURA); diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 2fdfe72a6f9..f8f9bb790e0 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -31,10 +31,6 @@ EndScriptData */ #include "Player.h" #include "SpellInfo.h" -#define GETGO(obj, guid) GameObject* obj = instance->instance->GetGameObject(guid) -#define GETUNIT(unit, guid) Unit* unit = Unit::GetUnit(*me, guid) -#define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*me, guid) - #define EMOTE_UNABLE_TO_SUMMON "%s is unable to summon Maiev Shadowsong and enter Phase 4. Resetting Encounter." // Other defines @@ -409,11 +405,11 @@ public: void EnrageCheck() { - if (GETUNIT(Glaive, GlaiveGUID)) + if (Creature* glaive = ObjectAccessor::GetCreature(*me, GlaiveGUID)) { - if (!me->IsWithinDistInMap(Glaive, FLAME_ENRAGE_DISTANCE)) + if (!me->IsWithinDistInMap(glaive, FLAME_ENRAGE_DISTANCE)) { - Glaive->InterruptNonMeleeSpells(true); + glaive->InterruptNonMeleeSpells(true); DoCast(me, SPELL_FLAME_ENRAGE, true); DoResetThreat(); if (SelectTarget(SELECT_TARGET_RANDOM, 0)) @@ -424,7 +420,7 @@ public: } else if (!me->HasAura(SPELL_AZZINOTH_CHANNEL)) { - Glaive->CastSpell(me, SPELL_AZZINOTH_CHANNEL, false); + glaive->CastSpell(me, SPELL_AZZINOTH_CHANNEL, false); me->RemoveAurasDueToSpell(SPELL_FLAME_ENRAGE); } } @@ -694,13 +690,14 @@ public: } if (MaievGUID) { - GETCRE(Maiev, MaievGUID); - if (Maiev && Maiev->IsAlive()) - Maiev->AI()->DoAction(NextPhase); + if (Creature* maiev = ObjectAccessor::GetCreature(*me, MaievGUID)) + if (maiev->IsAlive()) + maiev->AI()->DoAction(NextPhase); } Phase = NextPhase; Event = EVENT_NULL; } + void CastEyeBlast() { me->InterruptNonMeleeSpells(false); @@ -738,26 +735,27 @@ public: me->SetTarget(Trigger->GetGUID()); DoCast(Trigger, SPELL_EYE_BLAST); } + void SummonFlamesOfAzzinoth() { Talk(SAY_ILLIDAN_SUMMONFLAMES); for (uint8 i = 0; i < 2; ++i) { - if (GETUNIT(Glaive, GlaiveGUID[i])) + if (Creature* glaive = ObjectAccessor::GetCreature(*me, GlaiveGUID[i])) { - Creature* Flame = me->SummonCreature(FLAME_OF_AZZINOTH, GlaivePosition[i+2].x, GlaivePosition[i+2].y, GlaivePosition[i+2].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000); - if (Flame) + if (Creature* flame = me->SummonCreature(FLAME_OF_AZZINOTH, GlaivePosition[i+2].x, GlaivePosition[i+2].y, GlaivePosition[i+2].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000)) { - Flame->setFaction(me->getFaction()); // Just in case the database has it as a different faction - Flame->SetMeleeDamageSchool(SPELL_SCHOOL_FIRE); - FlameGUID[i] = Flame->GetGUID(); // Record GUID in order to check if they're dead later on to move to the next phase - CAST_AI(npc_flame_of_azzinoth::flame_of_azzinothAI, Flame->AI())->SetGlaiveGUID(GlaiveGUID[i]); - Glaive->CastSpell(Flame, SPELL_AZZINOTH_CHANNEL, false); // Glaives do some random Beam type channel on it. + flame->setFaction(me->getFaction()); // Just in case the database has it as a different faction + flame->SetMeleeDamageSchool(SPELL_SCHOOL_FIRE); + FlameGUID[i] = flame->GetGUID(); // Record GUID in order to check if they're dead later on to move to the next phase + CAST_AI(npc_flame_of_azzinoth::flame_of_azzinothAI, flame->AI())->SetGlaiveGUID(GlaiveGUID[i]); + glaive->CastSpell(flame, SPELL_AZZINOTH_CHANNEL, false); // Glaives do some random Beam type channel on it. } } } } + void SummonMaiev() { DoCast(me, SPELL_SHADOW_PRISON, true); @@ -853,11 +851,9 @@ public: { if (GlaiveGUID[i]) { - if (GETUNIT(Glaive, GlaiveGUID[i])) - { - Glaive->SetVisible(false); - Glaive->setDeathState(JUST_DIED); // Despawn the Glaive - } + if (Creature* glaive = ObjectAccessor::GetCreature(*me, GlaiveGUID[i])) + glaive->DespawnOrUnsummon(); + GlaiveGUID[i] = 0; } } @@ -1173,9 +1169,10 @@ public: damage = 0; else { - GETUNIT(Illidan, IllidanGUID); - if (Illidan && Illidan->GetVictim() == me) - damage = me->CountPctFromMaxHealth(10); + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) + if (illidan->GetVictim() == me) + damage = me->CountPctFromMaxHealth(10); + if (damage >= me->GetHealth()) damage = 0; } @@ -1190,9 +1187,9 @@ public: AttackStartNoMove(who); else if (Phase == PHASE_DEMON || Phase == PHASE_TRANSFORM_SEQUENCE) { - GETUNIT(Illidan, IllidanGUID); - if (Illidan && me->IsWithinDistInMap(Illidan, 25)) - BlinkToPlayer();// Do not let dread aura hurt her. + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) + if (me->IsWithinDistInMap(illidan, 25)) + BlinkToPlayer(); // Do not let dread aura hurt her. AttackStartNoMove(who); } else @@ -1253,11 +1250,11 @@ public: void BlinkToPlayer() { - if (GETCRE(Illidan, IllidanGUID)) + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) { - Unit* target = Illidan->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0); + Unit* target = illidan->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target || !me->IsWithinDistInMap(target, 80) || Illidan->IsWithinDistInMap(target, 20)) + if (!target || !me->IsWithinDistInMap(target, 80) || illidan->IsWithinDistInMap(target, 20)) { uint8 pos = rand()%4; BlinkTo(HoverPosition[pos].x, HoverPosition[pos].y, HoverPosition[pos].z); @@ -1329,8 +1326,8 @@ public: { me->SetVisible(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - if (GETCRE(Illidan, IllidanGUID)) - CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, Illidan->AI())->DeleteFromThreatList(me->GetGUID()); + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) + CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, illidan->AI())->DeleteFromThreatList(me->GetGUID()); me->AttackStop(); Timer[EVENT_MAIEV_STEALTH] = 60000; // reappear after 1 minute MaxTimer = 1; @@ -1469,15 +1466,15 @@ public: instance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS); for (uint8 i = 0; i < 2; ++i) instance->HandleGameObject(DoorGUID[i], false); - if (GETCRE(Illidan, IllidanGUID)) + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) { - Illidan->RemoveAurasDueToSpell(SPELL_KNEEL); - me->SetInFront(Illidan); - Illidan->SetInFront(me); + illidan->RemoveAurasDueToSpell(SPELL_KNEEL); + me->SetInFront(illidan); + illidan->SetInFront(me); me->GetMotionMaster()->MoveIdle(); - Illidan->GetMotionMaster()->MoveIdle(); - CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, Illidan->AI())->AkamaGUID = me->GetGUID(); - CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, Illidan->AI())->EnterPhase(PHASE_TALK_SEQUENCE); + illidan->GetMotionMaster()->MoveIdle(); + CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, illidan->AI())->AkamaGUID = me->GetGUID(); + CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, illidan->AI())->EnterPhase(PHASE_TALK_SEQUENCE); } } @@ -1488,8 +1485,8 @@ public: if (!JustCreated) return; float x, y, z; - if (GETGO(Gate, GateGUID)) - Gate->GetPosition(x, y, z); + if (GameObject* gate = ObjectAccessor::GetGameObject(*me, GateGUID)) + gate->GetPosition(x, y, z); else return; // if door not spawned, don't crash server @@ -1531,8 +1528,8 @@ public: WalkCount = 0; else if (Phase == PHASE_TALK) { - if (GETCRE(Illidan, IllidanGUID)) - CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, Illidan->AI())->DeleteFromThreatList(me->GetGUID()); + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) + CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, illidan->AI())->DeleteFromThreatList(me->GetGUID()); EnterEvadeMode(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); ++WalkCount; @@ -1554,10 +1551,10 @@ public: } break; case PHASE_FIGHT_ILLIDAN: - if (GETUNIT(Illidan, IllidanGUID)) + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) { - me->AddThreat(Illidan, 10000000.0f); - me->GetMotionMaster()->MoveChase(Illidan); + me->AddThreat(illidan, 10000000.0f); + me->GetMotionMaster()->MoveChase(illidan); } Timer = 30000; // chain lightning break; @@ -1584,10 +1581,10 @@ public: switch (TalkCount) { case 0: - if (GETCRE(Illidan, IllidanGUID)) + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) { - CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, Illidan->AI())->Timer[EVENT_TAUNT] += 30000; - Illidan->AI()->Talk(SAY_ILLIDAN_MINION); + CAST_AI(boss_illidan_stormrage::boss_illidan_stormrageAI, illidan->AI())->Timer[EVENT_TAUNT] += 30000; + illidan->AI()->Talk(SAY_ILLIDAN_MINION); } Timer = 8000; break; @@ -1728,8 +1725,8 @@ public: break; case PHASE_FIGHT_ILLIDAN: { - GETUNIT(Illidan, IllidanGUID); - if (Illidan && Illidan->HealthBelowPct(90)) + Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID); + if (illidan && illidan->HealthBelowPct(90)) EnterPhase(PHASE_TALK); else { @@ -1752,9 +1749,9 @@ public: me->AddThreat(Elite, 1000000.0f); } Timer = urand(10000, 16000); - GETUNIT(Illidan, IllidanGUID); - if (Illidan && Illidan->HealthBelowPct(10)) - EnterPhase(PHASE_RETURN); + if (Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID)) + if (illidan->HealthBelowPct(10)) + EnterPhase(PHASE_RETURN); } break; default: @@ -1807,16 +1804,12 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() if (AkamaGUID) { - if (GETCRE(Akama, AkamaGUID)) + if (Creature* akama = ObjectAccessor::GetCreature(*me, AkamaGUID)) { - if (!Akama->IsAlive()) - Akama->Respawn(); + if (!akama->IsAlive()) + akama->Respawn(); else - { - CAST_AI(npc_akama_illidan::npc_akama_illidanAI, Akama->AI())->EnterEvadeMode(); - Akama->GetMotionMaster()->MoveTargetedHome(); - CAST_AI(npc_akama_illidan::npc_akama_illidanAI, Akama->AI())->Reset(); - } + akama->AI()->EnterEvadeMode(); } AkamaGUID = 0; } @@ -1908,11 +1901,11 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::HandleTalkSequence() me->SetWalk(false); break; case 9: - if (GETCRE(Akama, AkamaGUID)) + if (Creature* akama = ObjectAccessor::GetCreature(*me, AkamaGUID)) { me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); - me->AddThreat(Akama, 100.0f); - CAST_AI(npc_akama_illidan::npc_akama_illidanAI, Akama->AI())->EnterPhase(PHASE_FIGHT_ILLIDAN); + me->AddThreat(akama, 100.0f); + CAST_AI(npc_akama_illidan::npc_akama_illidanAI, akama->AI())->EnterPhase(PHASE_FIGHT_ILLIDAN); EnterPhase(PHASE_NORMAL); } break; @@ -1920,23 +1913,23 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::HandleTalkSequence() SummonMaiev(); break; case 11: - if (GETUNIT(Maiev, MaievGUID)) + if (Creature* maiev = ObjectAccessor::GetCreature(*me, MaievGUID)) { - Maiev->SetVisible(true); // Maiev is now visible - Maiev->CastSpell(Maiev, SPELL_TELEPORT_VISUAL, true); // onoz she looks like she teleported! - Maiev->SetInFront(me); // Have her face us - me->SetInFront(Maiev); // Face her, so it's not rude =P - Maiev->GetMotionMaster()->MoveIdle(); + maiev->SetVisible(true); // Maiev is now visible + maiev->CastSpell(maiev, SPELL_TELEPORT_VISUAL, true); // onoz she looks like she teleported! + maiev->SetInFront(me); // Have her face us + me->SetInFront(maiev); // Face her, so it's not rude =P + maiev->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle(); } break; case 14: - if (GETCRE(Maiev, MaievGUID)) + if (Creature* maiev = ObjectAccessor::GetCreature(*me, MaievGUID)) { me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); - Maiev->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); - Maiev->AddThreat(me, 10000000.0f); // Have Maiev add a lot of threat on us so that players don't pull her off if they damage her via AOE - Maiev->AI()->AttackStart(me); // Force Maiev to attack us. + maiev->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); + maiev->AddThreat(me, 10000000.0f); // Have Maiev add a lot of threat on us so that players don't pull her off if they damage her via AOE + maiev->AI()->AttackStart(me); // Force Maiev to attack us. EnterPhase(PHASE_NORMAL_MAIEV); } break; @@ -1945,26 +1938,26 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::HandleTalkSequence() Summons.DespawnAll(); break; case 17: - if (GETCRE(Akama, AkamaGUID)) + if (Creature* akama = ObjectAccessor::GetCreature(*me, AkamaGUID)) { - if (!me->IsWithinDistInMap(Akama, 15)) + if (!me->IsWithinDistInMap(akama, 15)) { float x, y, z; me->GetPosition(x, y, z); x += 10; y += 10; - Akama->GetMotionMaster()->Clear(false); + akama->GetMotionMaster()->Clear(false); // Akama->GetMotionMaster()->MoveIdle(); - Akama->SetPosition(x, y, z, 0.0f); - Akama->MonsterMoveWithSpeed(x, y, z, 0); // Illidan must not die until Akama arrives. - Akama->GetMotionMaster()->MoveChase(me); + akama->SetPosition(x, y, z, 0.0f); + akama->MonsterMoveWithSpeed(x, y, z, 0); // Illidan must not die until Akama arrives. + akama->GetMotionMaster()->MoveChase(me); } } break; case 19: // Make Maiev leave - if (GETUNIT(Maiev, MaievGUID)) + if (Creature* maiev = ObjectAccessor::GetCreature(*me, MaievGUID)) { - Maiev->CastSpell(Maiev, SPELL_TELEPORT_VISUAL, true); - Maiev->setDeathState(JUST_DIED); + maiev->CastSpell(maiev, SPELL_TELEPORT_VISUAL, true); + maiev->setDeathState(JUST_DIED); me->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_DEAD); } break; @@ -2208,22 +2201,24 @@ public: AttackStart(target); else { - me->SetVisible(false); - me->setDeathState(JUST_DIED); + me->DespawnOrUnsummon(); return; } } if (CheckTimer <= diff) { - GETUNIT(Illidan, IllidanGUID); - if (!Illidan || Illidan->ToCreature()->IsInEvadeMode()) + Creature* illidan = ObjectAccessor::GetCreature(*me, IllidanGUID); + if (!illidan || illidan->IsInEvadeMode()) { - me->SetVisible(false); - me->setDeathState(JUST_DIED); + me->DespawnOrUnsummon(); return; - } else CheckTimer = 5000; - } else CheckTimer -= diff; + } + else + CheckTimer = 5000; + } + else + CheckTimer -= diff; DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp index a87aefa72af..7e80182f1e8 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp @@ -132,7 +132,7 @@ class boss_omor_the_unscarred : public CreatureScript { if (ShadowWhip_Timer <= diff) { - if (Player* temp = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* temp = ObjectAccessor::GetPlayer(*me, PlayerGUID)) { //if unit dosen't have this flag, then no pulling back (script will attempt cast, even if orbital strike was resisted) if (temp->HasUnitMovementFlag(MOVEMENTFLAG_FALLING_FAR)) diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index 6273731f292..57eb587140f 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -500,7 +500,6 @@ public: } void MoveInLineOfSight(Unit* who) OVERRIDE - { if (!who || (!who->IsAlive())) return; @@ -516,15 +515,16 @@ public: void MovementInform(uint32 /*type*/, uint32 id) OVERRIDE { - Player* player = Unit::GetPlayer(*me, PlayerGUID); if (id == 1) { - GameObject* Keg = me->FindNearestGameObject(GO_KEG, 20); - if (Keg) + if (GameObject* Keg = me->FindNearestGameObject(GO_KEG, 20)) Keg->Delete(); + me->HandleEmoteCommand(7); me->SetReactState(REACT_AGGRESSIVE); me->GetMotionMaster()->MoveTargetedHome(); + + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); Creature* Credit = me->FindNearestCreature(NPC_QUEST_CREDIT, 50, true); if (player && Credit) player->KilledMonster(Credit->GetCreatureTemplate(), Credit->GetGUID()); @@ -1017,7 +1017,7 @@ class npc_simon_bunny : public CreatureScript } if (rewSpell) - if (Player* player = me->GetPlayer(*me, playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) DoCast(player, rewSpell, true); } @@ -1032,7 +1032,7 @@ class npc_simon_bunny : public CreatureScript { if (large) { - if (Player* player = me->GetPlayer(*me, playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) if (Creature* guardian = me->SummonCreature(NPC_APEXIS_GUARDIAN, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() - zCoordCorrection, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000)) guardian->AI()->AttackStart(player); @@ -1042,7 +1042,7 @@ class npc_simon_bunny : public CreatureScript { fails++; - if (Player* player = me->GetPlayer(*me, playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) DoCast(player, SPELL_BAD_PRESS_TRIGGER, true); if (fails >= 4) @@ -1065,7 +1065,7 @@ class npc_simon_bunny : public CreatureScript // Checks if player has already die or has get too far from the current node bool CheckPlayer() { - if (Player* player = me->GetPlayer(*me, playerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) { if (player->isDead()) return false; diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp index 7e99275adbd..74257c95cf3 100644 --- a/src/server/scripts/Outland/zone_netherstorm.cpp +++ b/src/server/scripts/Outland/zone_netherstorm.cpp @@ -436,9 +436,9 @@ public: // Emote Ardonis and Pathaleon void Turn_to_Pathaleons_Image() { - Creature* ardonis = Unit::GetCreature(*me, ardonisGUID); - Creature* pathaleon = Unit::GetCreature(*me, pathaleonGUID); - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Creature* ardonis = ObjectAccessor::GetCreature(*me, ardonisGUID); + Creature* pathaleon = ObjectAccessor::GetCreature(*me, pathaleonGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!ardonis || !pathaleon || !player) return; @@ -462,9 +462,9 @@ public: //Set them back to each other void Turn_to_eachother() { - if (Unit* ardonis = Unit::GetUnit(*me, ardonisGUID)) + if (Unit* ardonis = ObjectAccessor::GetUnit(*me, ardonisGUID)) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) return; @@ -519,9 +519,9 @@ public: return; } - Creature* ardonis = Creature::GetCreature(*me, ardonisGUID); - Creature* pathaleon = Creature::GetCreature(*me, pathaleonGUID); - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Creature* ardonis = ObjectAccessor::GetCreature(*me, ardonisGUID); + Creature* pathaleon = ObjectAccessor::GetCreature(*me, pathaleonGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!ardonis || !player) { @@ -821,7 +821,7 @@ public: ManaBurnTimer = 3500; } else ManaBurnTimer -= diff; - if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) // start: support for quest 10190 + if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID)) // start: support for quest 10190 { if (!Weak && HealthBelowPct(WeakPercent) && player->GetQuestStatus(QUEST_RECHARGING_THE_BATTERIES) == QUEST_STATUS_INCOMPLETE) diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index b7cf46ad8ae..cb88e5a5a9c 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -154,11 +154,11 @@ public: DoCast(me, SPELL_JUST_EATEN); Talk(SAY_JUST_EATEN); - if (Player* pPlr = Unit::GetPlayer(*me, uiPlayerGUID)) + if (Player* player = ObjectAccessor::GetPlayer(*me, uiPlayerGUID)) { - pPlr->KilledMonsterCredit(NPC_EVENT_PINGER, 0); + player->KilledMonsterCredit(NPC_EVENT_PINGER, 0); - if (GameObject* go = pPlr->FindNearestGameObject(GO_CARCASS, 10)) + if (GameObject* go = player->FindNearestGameObject(GO_CARCASS, 10)) go->Delete(); } @@ -298,7 +298,7 @@ public: Tapped = false; if (PlayerGUID) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->GetQuestStatus(10854) == QUEST_STATUS_INCOMPLETE) { DoCast(player, SPELL_FORCE_OF_NELTHARAKU, true); @@ -400,7 +400,7 @@ public: { if (PlayerGUID) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && player->GetQuestStatus(11020) == QUEST_STATUS_INCOMPLETE) player->KilledMonsterCredit(23209, 0); } @@ -760,7 +760,7 @@ public: } if (PlayerGUID) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player) Talk(OVERLORD_SAY_1, player->GetGUID()); } @@ -771,8 +771,8 @@ public: uint32 NextStep(uint32 Step) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); - Creature* Illi = Creature::GetCreature(*me, IllidanGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); + Creature* Illi = ObjectAccessor::GetCreature(*me, IllidanGUID); if (!player) { @@ -1311,7 +1311,7 @@ public: me->RemoveFlag(UNIT_FIELD_BYTES_1, 8); break; case 5: - if (Player* AggroTarget = (Unit::GetPlayer(*me, AggroTargetGUID))) + if (Player* AggroTarget = ObjectAccessor::GetPlayer(*me, AggroTargetGUID)) { me->SetTarget(AggroTarget->GetGUID()); me->AddThreat(AggroTarget, 1); @@ -1319,7 +1319,7 @@ public: } break; case 6: - if (Player* AggroTarget = (Unit::GetPlayer(*me, AggroTargetGUID))) + if (Player* AggroTarget = ObjectAccessor::GetPlayer(*me, AggroTargetGUID)) { me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->ClearUnitState(UNIT_STATE_ROOT); @@ -1456,15 +1456,13 @@ public: void CheckEventFail() { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (!player) return; if (Group* EventGroup = player->GetGroup()) { - Player* GroupMember; - uint8 GroupMemberCount = 0; uint8 DeadMemberCount = 0; uint8 FailedMemberCount = 0; @@ -1473,7 +1471,7 @@ public: for (Group::member_citerator itr = members.begin(); itr!= members.end(); ++itr) { - GroupMember = (Unit::GetPlayer(*me, itr->guid)); + Player* GroupMember = ObjectAccessor::GetPlayer(*me, itr->guid); if (!GroupMember) continue; if (!GroupMember->IsWithinDistInMap(me, EVENT_AREA_RADIUS) && GroupMember->GetQuestStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) == QUEST_STATUS_INCOMPLETE) @@ -1484,9 +1482,7 @@ public: ++GroupMemberCount; if (GroupMember->isDead()) - { ++DeadMemberCount; - } } if (GroupMemberCount == FailedMemberCount) @@ -1498,12 +1494,9 @@ public: { for (Group::member_citerator itr = members.begin(); itr!= members.end(); ++itr) { - GroupMember = Unit::GetPlayer(*me, itr->guid); - - if (GroupMember && GroupMember->GetQuestStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) == QUEST_STATUS_INCOMPLETE) - { - GroupMember->FailQuest(QUEST_BATTLE_OF_THE_CRIMSON_WATCH); - } + if (Player* groupMember = ObjectAccessor::GetPlayer(*me, itr->guid)) + if (groupMember->GetQuestStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) == QUEST_STATUS_INCOMPLETE) + groupMember->FailQuest(QUEST_BATTLE_OF_THE_CRIMSON_WATCH); } Failed = true; } @@ -1713,7 +1706,7 @@ void npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI::SummonNextWave() { if (PlayerGUID) { - if (Player* target = Unit::GetPlayer(*me, PlayerGUID)) + if (Player* target = ObjectAccessor::GetPlayer(*me, PlayerGUID)) { float x, y, z; target->GetPosition(x, y, z); diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 8c0864e76b9..b1152c311dc 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -743,15 +743,10 @@ class spell_hun_sniper_training : public SpellScriptLoader PreventDefaultAction(); if (aurEff->GetAmount() <= 0) { - Unit* caster = GetCaster(); + Unit* target = GetTarget(); uint32 spellId = SPELL_HUNTER_SNIPER_TRAINING_BUFF_R1 + GetId() - SPELL_HUNTER_SNIPER_TRAINING_R1; - if (Unit* target = GetTarget()) - if (!target->HasAura(spellId)) - { - SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(spellId); - Unit* triggerCaster = triggeredSpellInfo->NeedsToBeTriggeredByCaster() ? caster : target; - triggerCaster->CastSpell(target, triggeredSpellInfo, true, 0, aurEff); - } + if (!target->HasAura(spellId)) + target->CastSpell(target, spellId, true, 0, aurEff); } } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 8e103f105c1..4efdf78154d 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -634,7 +634,7 @@ public: void PatientDied(Location* point) { - Player* player = Unit::GetPlayer(*me, PlayerGUID); + Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); if (player && ((player->GetQuestStatus(6624) == QUEST_STATUS_INCOMPLETE) || (player->GetQuestStatus(6622) == QUEST_STATUS_INCOMPLETE))) { ++PatientDiedCount; @@ -1685,7 +1685,7 @@ public: me->MonsterWhisper(whisp.c_str(), player->GetGUID()); if (victimGUID) - if (Player* victim = Unit::GetPlayer(*me, victimGUID)) + if (Player* victim = ObjectAccessor::GetPlayer(*me, victimGUID)) victim->RemoveAura(43906); // remove polymorph frog thing me->AddAura(43906, player); // add polymorph frog thing victimGUID = player->GetGUID(); -- cgit v1.2.3 From 7dbf68cbfc36a819f1e259128a71cc7ce0517540 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 18 Aug 2013 02:06:49 +0200 Subject: Scripted/Misc: Remove some whitespace --- .../Outland/Auchindoun/SethekkHalls/boss_anzu.cpp | 166 ++++++++++----------- src/server/scripts/Spells/spell_hunter.cpp | 6 +- 2 files changed, 84 insertions(+), 88 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp index 707f6c34a90..ade6c13aafe 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp @@ -18,7 +18,7 @@ /* Name: Boss_Anzu %Complete: 80% -Comment: +Comment: Category: Auchindoun, Sethekk Halls */ @@ -57,113 +57,109 @@ Position const PosSummonBrood[7] = { -69.25543f, 303.0768f, 97.84479f, 5.532694f }, { -87.59662f, 263.5181f, 92.70478f, 1.658063f }, { -73.54323f, 276.6267f, 94.25807f, 2.802979f }, - { -81.70527f, 280.8776f, 44.58830f, 0.526849f }, + { -81.70527f, 280.8776f, 44.58830f, 0.526849f } }; class boss_anzu : public CreatureScript { -public: - boss_anzu() : CreatureScript("boss_anzu") { } + public: + boss_anzu() : CreatureScript("boss_anzu") { } - struct boss_anzuAI : public BossAI - { - boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU) { } - - void Reset() OVERRIDE + struct boss_anzuAI : public BossAI { - summon66 = false; - summon33 = false; - } + boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU) { } - void EnterCombat(Unit* /*who*/) OVERRIDE - { - events.ScheduleEvent(EVENT_PARALYZING_SCREECH, 14000); - events.ScheduleEvent(EVENT_CYCLONE_OF_FEATHERS, 5000); - } + void Reset() OVERRIDE + { + _under33Percent = false; + _under66Percent = false; + } - void JustDied(Unit* /*killer*/) OVERRIDE - { - if (instance) - instance->SetData(DATA_ANZU, DONE); - } + void EnterCombat(Unit* /*who*/) OVERRIDE + { + events.ScheduleEvent(EVENT_PARALYZING_SCREECH, 14000); + events.ScheduleEvent(EVENT_CYCLONE_OF_FEATHERS, 5000); + } - void KilledUnit(Unit* /*victim*/) OVERRIDE {} + void JustDied(Unit* /*killer*/) OVERRIDE + { + if (instance) + instance->SetData(DATA_ANZU, DONE); + } - void UpdateAI(uint32 diff) OVERRIDE - { - if (!UpdateVictim()) - return; + void DamageTaken(Unit* /*killer*/, uint32 &damage) OVERRIDE + { + if (me->HealthBelowPctDamaged(33, damage) && !_under33Percent) + { + _under33Percent = true; + Talk(SAY_SUMMON_BROOD); + events.ScheduleEvent(EVENT_SUMMON, 3000); + } - events.Update(diff); + if (me->HealthBelowPctDamaged(66, damage) && !_under66Percent) + { + _under66Percent = true; + Talk(SAY_SUMMON_BROOD); + events.ScheduleEvent(EVENT_SUMMON, 3000); + } + } - while (uint32 eventId = events.ExecuteEvent()) + void UpdateAI(uint32 diff) OVERRIDE { - switch (eventId) + if (!UpdateVictim()) + return; + + events.Update(diff); + + while (uint32 eventId = events.ExecuteEvent()) { - case EVENT_PARALYZING_SCREECH: + switch (eventId) + { + case EVENT_PARALYZING_SCREECH: DoCastVictim(SPELL_PARALYZING_SCREECH); - events.ScheduleEvent(EVENT_PARALYZING_SCREECH, 26000); - break; - - case EVENT_CYCLONE_OF_FEATHERS: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_CYCLONE_OF_FEATHERS); - events.ScheduleEvent(EVENT_CYCLONE_OF_FEATHERS, 21000); - break; - case EVENT_SUMMON: - // TODO: Add pathing for Brood of Anzu - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[1], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[2], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[5], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[6], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); - DoCast(me, SPELL_BANISH_SELF); - events.ScheduleEvent(EVENT_SPELL_BOMB, 12000); - break; - case EVENT_SPELL_BOMB: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - if (target->getPowerType() == POWER_MANA) + events.ScheduleEvent(EVENT_PARALYZING_SCREECH, 26000); + break; + case EVENT_CYCLONE_OF_FEATHERS: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_CYCLONE_OF_FEATHERS); + events.ScheduleEvent(EVENT_CYCLONE_OF_FEATHERS, 21000); + break; + case EVENT_SUMMON: + // TODO: Add pathing for Brood of Anzu + for (uint8 i = 0; i < 7; i++) + me->SummonCreature(NPC_BROOD_OF_ANZU, PosSummonBrood[i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 46000); + + DoCast(me, SPELL_BANISH_SELF); + events.ScheduleEvent(EVENT_SPELL_BOMB, 12000); + break; + case EVENT_SPELL_BOMB: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - DoCast(target, SPELL_SPELL_BOMB); - Talk(SAY_SPELL_BOMB, target->GetGUID()); + if (target->getPowerType() == POWER_MANA) + { + DoCast(target, SPELL_SPELL_BOMB); + Talk(SAY_SPELL_BOMB, target->GetGUID()); + } } - } - break; - default: - break; + break; + default: + break; + } } - } - if (HealthBelowPct(66) && !summon66) - { - summon66 = true; - Talk(SAY_SUMMON_BROOD); - events.ScheduleEvent(EVENT_SUMMON, 3000); + DoMeleeAttackIfReady(); } - if (HealthBelowPct(33) && !summon33) - { - summon33 = true; - Talk(SAY_SUMMON_BROOD); - events.ScheduleEvent(EVENT_SUMMON, 3000); - } - - DoMeleeAttackIfReady(); - } + private: + bool _under33Percent; + bool _under66Percent; - private: - bool summon66; - bool summon33; + }; - }; - - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new boss_anzuAI(creature); - } + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new boss_anzuAI(creature); + } }; void AddSC_boss_anzu() diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index b1152c311dc..b8f29f276ae 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -119,8 +119,8 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE { if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE) || - !sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER) || - !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VIPER_ATTACK_SPEED) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER) || + !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VIPER_ATTACK_SPEED) || !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VICIOUS_VIPER)) return false; return true; @@ -871,7 +871,7 @@ class spell_hun_viper_attack_speed : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE { - if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER) || + if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER) || !sSpellMgr->GetSpellInfo(SPELL_HUNTER_VICIOUS_VIPER)) return false; return true; -- cgit v1.2.3 From 9eb01d63bd4cd3c2c297db4bcf1899debba0ee49 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 18 Aug 2013 13:54:20 +0200 Subject: Core: Fix warnings --- src/server/game/Spells/Spell.cpp | 6 +++--- src/server/scripts/Spells/spell_hunter.cpp | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index be88179b168..539b38bdac4 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3052,12 +3052,12 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered if (Player* player = m_caster->ToPlayer()) { - if (!m_caster->ToPlayer()->GetCommandStatus(CHEAT_CASTTIME)) + if (!player->GetCommandStatus(CHEAT_CASTTIME)) { - m_caster->ToPlayer()->SetSpellModTakingSpell(this, true); + player->SetSpellModTakingSpell(this, true); // calculate cast time (calculated after first CheckCast check to prevent charge counting for first CheckCast fail) m_casttime = m_spellInfo->CalcCastTime(this); - m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); + player->SetSpellModTakingSpell(this, false); } else m_casttime = 0; // Set cast time to 0 if .cheat casttime is enabled. diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index b8f29f276ae..b93efe3b0f2 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -149,7 +149,6 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { // Hunter T7 4P Bonus - Unit* target = GetTarget(); if (GetTarget()->HasAura(SPELL_HUNTER_VIPER_ATTACK_SPEED)) GetTarget()->RemoveAurasDueToSpell(SPELL_HUNTER_VICIOUS_VIPER); } -- cgit v1.2.3