aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/MagistersTerrace
diff options
context:
space:
mode:
authorclick <none@none>2010-06-07 00:54:06 +0200
committerclick <none@none>2010-06-07 00:54:06 +0200
commitdc510c9a143de1977daedea0aefb9589c01adde2 (patch)
tree6691fda7c0985077aeb6ff3a93e829447dddd736 /src/server/scripts/EasternKingdoms/MagistersTerrace
parentded01bb23c3af75482d206f6ec52eec87009b238 (diff)
Some more consistency-renaming of script-zones
--HG-- branch : trunk rename : src/server/scripts/EasternKingdoms/alterac_valley/alterac_valley.cpp => src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp rename : src/server/scripts/EasternKingdoms/alterac_valley/boss_balinda.cpp => src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp rename : src/server/scripts/EasternKingdoms/alterac_valley/boss_drekthar.cpp => src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp rename : src/server/scripts/EasternKingdoms/alterac_valley/boss_galvangar.cpp => src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp rename : src/server/scripts/EasternKingdoms/alterac_valley/boss_vanndar.cpp => src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/blackrock_depths.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/blackrock_depths.h => src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.h rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_ambassador_flamelash.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_ambassador_flamelash.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_anubshiah.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_anubshiah.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_emperor_dagran_thaurissan.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_general_angerforge.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_general_angerforge.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_gorosh_the_dervish.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_gorosh_the_dervish.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_grizzle.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_high_interrogator_gerstahn.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_high_interrogator_gerstahn.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_magmus.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_magmus.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_moira_bronzebeard.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_moira_bronzebeard.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/boss_tomb_of_seven.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/boss_tomb_of_seven.cpp rename : src/server/scripts/EasternKingdoms/blackrock_depths/instance_blackrock_depths.cpp => src/server/scripts/EasternKingdoms/BlackrockDepths/instance_blackrock_depths.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/blackrock_spire.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/blackrock_spire.h => src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_drakkisath.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_gyth.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_halycon.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_highlord_omokk.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_mother_smolderweb.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_overlord_wyrmthalak.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_pyroguard_emberseer.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_quartermaster_zigris.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_rend_blackhand.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_shadow_hunter_voshgajin.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_the_beast.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/boss_warmaster_voone.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp rename : src/server/scripts/EasternKingdoms/blackrock_spire/instance_blackrock_spire.cpp => src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_broodlord_lashlayer.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_chromaggus.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_ebonroc.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_firemaw.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_flamegor.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_nefarian.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_razorgore.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_vaelastrasz.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/boss_victor_nefarius.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp rename : src/server/scripts/EasternKingdoms/blackwing_lair/instance_blackwing_lair.cpp => src/server/scripts/EasternKingdoms/BlackwingLair/instance_blackwing_lair.cpp rename : src/server/scripts/EasternKingdoms/deadmines/boss_mr_smite.cpp => src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp rename : src/server/scripts/EasternKingdoms/deadmines/deadmines.cpp => src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp rename : src/server/scripts/EasternKingdoms/deadmines/deadmines.h => src/server/scripts/EasternKingdoms/Deadmines/deadmines.h rename : src/server/scripts/EasternKingdoms/deadmines/instance_deadmines.cpp => src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp rename : src/server/scripts/EasternKingdoms/gnomeregan/gnomeregan.cpp => src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp rename : src/server/scripts/EasternKingdoms/gnomeregan/gnomeregan.h => src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h rename : src/server/scripts/EasternKingdoms/gnomeregan/instance_gnomeregan.cpp => src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_curator.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_maiden_of_virtue.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_midnight.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_moroes.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_netherspite.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_nightbane.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_prince_malchezaar.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_shade_of_aran.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp rename : src/server/scripts/EasternKingdoms/karazhan/boss_terestian_illhoof.cpp => src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp rename : src/server/scripts/EasternKingdoms/karazhan/bosses_opera.cpp => src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp rename : src/server/scripts/EasternKingdoms/karazhan/instance_karazhan.cpp => src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp rename : src/server/scripts/EasternKingdoms/karazhan/karazhan.cpp => src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp rename : src/server/scripts/EasternKingdoms/karazhan/karazhan.h => src/server/scripts/EasternKingdoms/Karazhan/karazhan.h rename : src/server/scripts/EasternKingdoms/magisters_terrace/boss_felblood_kaelthas.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/boss_priestess_delrissa.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/boss_selin_fireheart.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/boss_vexallus.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/instance_magisters_terrace.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/magisters_terrace.cpp => src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp rename : src/server/scripts/EasternKingdoms/magisters_terrace/magisters_terrace.h => src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h rename : src/server/scripts/EasternKingdoms/molten_core/boss_baron_geddon.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_baron_geddon.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_garr.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_garr.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_gehennas.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_gehennas.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_golemagg.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_lucifron.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_lucifron.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_magmadar.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_magmadar.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_majordomo_executus.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_ragnaros.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_shazzrah.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_shazzrah.cpp rename : src/server/scripts/EasternKingdoms/molten_core/boss_sulfuron_harbinger.cpp => src/server/scripts/EasternKingdoms/MoltenCore/boss_sulfuron_harbinger.cpp rename : src/server/scripts/EasternKingdoms/molten_core/instance_molten_core.cpp => src/server/scripts/EasternKingdoms/MoltenCore/instance_molten_core.cpp rename : src/server/scripts/EasternKingdoms/molten_core/molten_core.cpp => src/server/scripts/EasternKingdoms/MoltenCore/molten_core.cpp rename : src/server/scripts/EasternKingdoms/molten_core/molten_core.h => src/server/scripts/EasternKingdoms/MoltenCore/molten_core.h rename : src/server/scripts/EasternKingdoms/scarlet_enclave/chapter1.cpp => src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp rename : src/server/scripts/EasternKingdoms/scarlet_enclave/chapter2.cpp => src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp rename : src/server/scripts/EasternKingdoms/scarlet_enclave/chapter5.cpp => src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp rename : src/server/scripts/EasternKingdoms/scarlet_enclave/the_scarlet_enclave.cpp => src/server/scripts/EasternKingdoms/ScarletEnclave/the_scarlet_enclave.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_arcanist_doan.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_azshir_the_sleepless.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_bloodmage_thalnos.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_headless_horseman.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_herod.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_high_inquisitor_fairbanks.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_houndmaster_loksey.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_interrogator_vishas.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_mograine_and_whitemane.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/boss_scorn.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/instance_scarlet_monastery.cpp => src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp rename : src/server/scripts/EasternKingdoms/scarlet_monastery/scarlet_monastery.h => src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h rename : src/server/scripts/EasternKingdoms/scholomance/boss_darkmaster_gandling.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_death_knight_darkreaver.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_death_knight_darkreaver.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_doctor_theolen_krastinov.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_illucia_barov.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_instructor_malicia.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_jandice_barov.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_kormok.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_lord_alexei_barov.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_lorekeeper_polkelt.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_ras_frostwhisper.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_the_ravenian.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp rename : src/server/scripts/EasternKingdoms/scholomance/boss_vectus.cpp => src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp rename : src/server/scripts/EasternKingdoms/scholomance/instance_scholomance.cpp => src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp rename : src/server/scripts/EasternKingdoms/scholomance/scholomance.h => src/server/scripts/EasternKingdoms/Scholomance/scholomance.h rename : src/server/scripts/EasternKingdoms/shadowfang_keep/instance_shadowfang_keep.cpp => src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp rename : src/server/scripts/EasternKingdoms/shadowfang_keep/shadowfang_keep.cpp => src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp rename : src/server/scripts/EasternKingdoms/shadowfang_keep/shadowfang_keep.h => src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h rename : src/server/scripts/EasternKingdoms/stratholme/boss_baron_rivendare.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_baroness_anastari.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_cannon_master_willey.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_dathrohan_balnazzar.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_magistrate_barthilas.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_maleki_the_pallid.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_nerubenkan.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_order_of_silver_hand.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_postmaster_malown.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_ramstein_the_gorger.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp rename : src/server/scripts/EasternKingdoms/stratholme/boss_timmy_the_cruel.cpp => src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp rename : src/server/scripts/EasternKingdoms/stratholme/instance_stratholme.cpp => src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp rename : src/server/scripts/EasternKingdoms/stratholme/stratholme.cpp => src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp rename : src/server/scripts/EasternKingdoms/stratholme/stratholme.h => src/server/scripts/EasternKingdoms/Stratholme/stratholme.h rename : src/server/scripts/EasternKingdoms/sunken_temple/instance_sunken_temple.cpp => src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp rename : src/server/scripts/EasternKingdoms/sunken_temple/sunken_temple.cpp => src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.cpp rename : src/server/scripts/EasternKingdoms/sunken_temple/sunken_temple.h => src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_brutallus.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_eredar_twins.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_felmyst.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_kalecgos.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_kiljaeden.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/boss_muru.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/instance_sunwell_plateau.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/sunwell_plateau.cpp => src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.cpp rename : src/server/scripts/EasternKingdoms/sunwell_plateau/sunwell_plateau.h => src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h rename : src/server/scripts/EasternKingdoms/uldaman/boss_archaedas.cpp => src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp rename : src/server/scripts/EasternKingdoms/uldaman/boss_ironaya.cpp => src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp rename : src/server/scripts/EasternKingdoms/uldaman/instance_uldaman.cpp => src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp rename : src/server/scripts/EasternKingdoms/uldaman/uldaman.cpp => src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_akilzon.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_halazzi.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_hexlord.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_janalai.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_nalorakk.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp rename : src/server/scripts/EasternKingdoms/zulaman/boss_zuljin.cpp => src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp rename : src/server/scripts/EasternKingdoms/zulaman/instance_zulaman.cpp => src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp rename : src/server/scripts/EasternKingdoms/zulaman/zulaman.cpp => src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp rename : src/server/scripts/EasternKingdoms/zulaman/zulaman.h => src/server/scripts/EasternKingdoms/ZulAman/zulaman.h rename : src/server/scripts/EasternKingdoms/zulgurub/boss_arlokk.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_gahzranka.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_grilek.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_hakkar.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_hazzarah.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_jeklik.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_jindo.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_mandokir.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_marli.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_renataki.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_thekal.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_venoxis.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/boss_wushoolay.cpp => src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/instance_zulgurub.cpp => src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp rename : src/server/scripts/EasternKingdoms/zulgurub/zulgurub.h => src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h rename : src/server/scripts/Kalimdor/blackfathom_depths/blackfathom_deeps.cpp => src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp rename : src/server/scripts/Kalimdor/blackfathom_depths/blackfathom_deeps.h => src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h rename : src/server/scripts/Kalimdor/blackfathom_depths/boss_aku_mai.cpp => src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp rename : src/server/scripts/Kalimdor/blackfathom_depths/boss_gelihast.cpp => src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp rename : src/server/scripts/Kalimdor/blackfathom_depths/boss_kelris.cpp => src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp rename : src/server/scripts/Kalimdor/blackfathom_depths/instance_blackfathom_deeps.cpp => src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/boss_epoch.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/boss_epoch.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/boss_infinite.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/boss_infinite.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/boss_mal_ganis.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/boss_meathook.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/boss_meathook.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/boss_salramm.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/boss_salramm.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/culling_of_stratholme.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/culling_of_stratholme.h rename : src/server/scripts/Kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp => src/server/scripts/Kalimdor/CavernsOfTime/culling_of_stratholme/instance_culling_of_stratholme.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/boss_aeonus.cpp => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/boss_aeonus.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/boss_chrono_lord_deja.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/boss_temporus.cpp => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/boss_temporus.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/dark_portal.cpp => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/dark_portal.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/dark_portal.h => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/dark_portal.h rename : src/server/scripts/Kalimdor/caverns_of_time/dark_portal/instance_dark_portal.cpp => src/server/scripts/Kalimdor/CavernsOfTime/dark_portal/instance_dark_portal.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/boss_anetheron.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/boss_anetheron.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/boss_archimonde.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/boss_archimonde.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/boss_azgalor.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/boss_azgalor.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/boss_kazrogal.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/boss_kazrogal.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/boss_rage_winterchill.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/boss_rage_winterchill.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjal.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjal.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjal.h => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjal.h rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjalAI.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjalAI.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjalAI.h => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjalAI.h rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjal_trash.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjal_trash.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/hyjal_trash.h => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/hyjal_trash.h rename : src/server/scripts/Kalimdor/caverns_of_time/hyjal/instance_hyjal.cpp => src/server/scripts/Kalimdor/CavernsOfTime/hyjal/instance_hyjal.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/boss_captain_skarloc.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/boss_epoch_hunter.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/boss_leutenant_drake.cpp => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/boss_leutenant_drake.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/instance_old_hillsbrad.cpp => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/instance_old_hillsbrad.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/old_hillsbrad.cpp rename : src/server/scripts/Kalimdor/caverns_of_time/old_hillsbrad/old_hillsbrad.h => src/server/scripts/Kalimdor/CavernsOfTime/old_hillsbrad/old_hillsbrad.h rename : src/server/scripts/Kalimdor/maraudon/boss_celebras_the_cursed.cpp => src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp rename : src/server/scripts/Kalimdor/maraudon/boss_landslide.cpp => src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp rename : src/server/scripts/Kalimdor/maraudon/boss_noxxion.cpp => src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp rename : src/server/scripts/Kalimdor/maraudon/boss_princess_theradras.cpp => src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp rename : src/server/scripts/Kalimdor/onyxias_lair/boss_onyxia.cpp => src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp rename : src/server/scripts/Kalimdor/onyxias_lair/instance_onyxias_lair.cpp => src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp rename : src/server/scripts/Kalimdor/onyxias_lair/onyxias_lair.h => src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h rename : src/server/scripts/Kalimdor/razorfen_downs/boss_amnennar_the_coldbringer.cpp => src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp rename : src/server/scripts/Kalimdor/razorfen_downs/instance_razorfen_downs.cpp => src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp rename : src/server/scripts/Kalimdor/razorfen_downs/razorfen_downs.cpp => src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp rename : src/server/scripts/Kalimdor/razorfen_downs/razorfen_downs.h => src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h rename : src/server/scripts/Kalimdor/razorfen_kraul/instance_razorfen_kraul.cpp => src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp rename : src/server/scripts/Kalimdor/razorfen_kraul/razorfen_kraul.cpp => src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.cpp rename : src/server/scripts/Kalimdor/razorfen_kraul/razorfen_kraul.h => src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_ayamiss.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_buru.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_kurinnaxx.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_moam.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_ossirian.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/boss_rajaxx.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/instance_ruins_of_ahnqiraj.cpp => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp rename : src/server/scripts/Kalimdor/ruins_of_ahnqiraj/ruins_of_ahnqiraj.h => src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_bug_trio.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_cthun.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_fankriss.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_huhuran.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_ouro.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_sartura.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_skeram.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_twinemperors.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/boss_viscidus.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/instance_temple_of_ahnqiraj.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/mob_anubisath_sentinel.cpp => src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp rename : src/server/scripts/Kalimdor/temple_of_ahnqiraj/temple_of_ahnqiraj.h => src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h rename : src/server/scripts/Kalimdor/wailing_caverns/instance_wailing_caverns.cpp => src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp rename : src/server/scripts/Kalimdor/wailing_caverns/wailing_caverns.cpp => src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp rename : src/server/scripts/Kalimdor/wailing_caverns/wailing_caverns.h => src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h rename : src/server/scripts/Kalimdor/zulfarrak/instance_zulfarrak.cpp => src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp rename : src/server/scripts/Kalimdor/zulfarrak/zulfarrak.cpp => src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/ahnkahet.h => src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_amanitar.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/boss_elder_nadox.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/boss_herald_volazj.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/boss_prince_taldaram.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp rename : src/server/scripts/Northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp => src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp rename : src/server/scripts/Northrend/azjol_nerub/azjol_nerub/azjol_nerub.h => src/server/scripts/Northrend/AzjolNerub/azjol_nerub/azjol_nerub.h rename : src/server/scripts/Northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp => src/server/scripts/Northrend/AzjolNerub/azjol_nerub/boss_anubarak.cpp rename : src/server/scripts/Northrend/azjol_nerub/azjol_nerub/boss_hadronox.cpp => src/server/scripts/Northrend/AzjolNerub/azjol_nerub/boss_hadronox.cpp rename : src/server/scripts/Northrend/azjol_nerub/azjol_nerub/boss_krikthir_the_gatewatcher.cpp => src/server/scripts/Northrend/AzjolNerub/azjol_nerub/boss_krikthir_the_gatewatcher.cpp rename : src/server/scripts/Northrend/azjol_nerub/azjol_nerub/instance_azjol_nerub.cpp => src/server/scripts/Northrend/AzjolNerub/azjol_nerub/instance_azjol_nerub.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/boss_argent_challenge.cpp => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/boss_argent_challenge.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/boss_black_knight.cpp => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/boss_black_knight.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/boss_grand_champions.cpp => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/boss_grand_champions.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/instance_trial_of_the_champion.cpp => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/instance_trial_of_the_champion.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/trial_of_the_champion.cpp => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/trial_of_the_champion.cpp rename : src/server/scripts/Northrend/crusaders_coliseum/trial_of_the_champion/trial_of_the_champion.h => src/server/scripts/Northrend/CrusadersColiseum/trial_of_the_champion/trial_of_the_champion.h rename : src/server/scripts/Northrend/draktharon_keep/boss_dred.cpp => src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp rename : src/server/scripts/Northrend/draktharon_keep/boss_novos.cpp => src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp rename : src/server/scripts/Northrend/draktharon_keep/boss_tharon_ja.cpp => src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp rename : src/server/scripts/Northrend/draktharon_keep/boss_trollgore.cpp => src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp rename : src/server/scripts/Northrend/draktharon_keep/drak_tharon_keep.h => src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h rename : src/server/scripts/Northrend/draktharon_keep/instance_drak_tharon_keep.cpp => src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp rename : src/server/scripts/Northrend/frozen_halls/forge_of_souls/boss_bronjahm.cpp => src/server/scripts/Northrend/FrozenHalls/forge_of_souls/boss_bronjahm.cpp rename : src/server/scripts/Northrend/frozen_halls/forge_of_souls/boss_devourer_of_souls.cpp => src/server/scripts/Northrend/FrozenHalls/forge_of_souls/boss_devourer_of_souls.cpp rename : src/server/scripts/Northrend/frozen_halls/forge_of_souls/forge_of_souls.cpp => src/server/scripts/Northrend/FrozenHalls/forge_of_souls/forge_of_souls.cpp rename : src/server/scripts/Northrend/frozen_halls/forge_of_souls/forge_of_souls.h => src/server/scripts/Northrend/FrozenHalls/forge_of_souls/forge_of_souls.h rename : src/server/scripts/Northrend/frozen_halls/forge_of_souls/instance_forge_of_souls.cpp => src/server/scripts/Northrend/FrozenHalls/forge_of_souls/instance_forge_of_souls.cpp rename : src/server/scripts/Northrend/frozen_halls/halls_of_reflection/boss_falric.cpp => src/server/scripts/Northrend/FrozenHalls/halls_of_reflection/boss_falric.cpp rename : src/server/scripts/Northrend/frozen_halls/halls_of_reflection/boss_marwyn.cpp => src/server/scripts/Northrend/FrozenHalls/halls_of_reflection/boss_marwyn.cpp rename : src/server/scripts/Northrend/frozen_halls/halls_of_reflection/halls_of_reflection.cpp => src/server/scripts/Northrend/FrozenHalls/halls_of_reflection/halls_of_reflection.cpp rename : src/server/scripts/Northrend/frozen_halls/halls_of_reflection/halls_of_reflection.h => src/server/scripts/Northrend/FrozenHalls/halls_of_reflection/halls_of_reflection.h rename : src/server/scripts/Northrend/frozen_halls/halls_of_reflection/instance_halls_of_reflection.cpp => src/server/scripts/Northrend/FrozenHalls/halls_of_reflection/instance_halls_of_reflection.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/boss_forgemaster_garfrost.cpp => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/boss_forgemaster_garfrost.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/boss_krickandick.cpp => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/boss_krickandick.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/boss_scourgelord_tyrannus.cpp => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/boss_scourgelord_tyrannus.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/instance_pit_of_saron.cpp => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/instance_pit_of_saron.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/pit_of_saron.cpp => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/pit_of_saron.cpp rename : src/server/scripts/Northrend/frozen_halls/pit_of_saron/pit_of_saron.h => src/server/scripts/Northrend/FrozenHalls/pit_of_saron/pit_of_saron.h rename : src/server/scripts/Northrend/gundrak/boss_drakkari_colossus.cpp => src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp rename : src/server/scripts/Northrend/gundrak/boss_eck.cpp => src/server/scripts/Northrend/Gundrak/boss_eck.cpp rename : src/server/scripts/Northrend/gundrak/boss_gal_darah.cpp => src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp rename : src/server/scripts/Northrend/gundrak/boss_moorabi.cpp => src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp rename : src/server/scripts/Northrend/gundrak/boss_slad_ran.cpp => src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp rename : src/server/scripts/Northrend/gundrak/gundrak.h => src/server/scripts/Northrend/Gundrak/gundrak.h rename : src/server/scripts/Northrend/gundrak/instance_gundrak.cpp => src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp rename : src/server/scripts/Northrend/naxxramas/boss_anubrekhan.cpp => src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp rename : src/server/scripts/Northrend/naxxramas/boss_faerlina.cpp => src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp rename : src/server/scripts/Northrend/naxxramas/boss_four_horsemen.cpp => src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp rename : src/server/scripts/Northrend/naxxramas/boss_gluth.cpp => src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp rename : src/server/scripts/Northrend/naxxramas/boss_gothik.cpp => src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp rename : src/server/scripts/Northrend/naxxramas/boss_grobbulus.cpp => src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp rename : src/server/scripts/Northrend/naxxramas/boss_heigan.cpp => src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp rename : src/server/scripts/Northrend/naxxramas/boss_highlord_mograine.cpp => src/server/scripts/Northrend/Naxxramas/boss_highlord_mograine.cpp rename : src/server/scripts/Northrend/naxxramas/boss_kelthuzad.cpp => src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp rename : src/server/scripts/Northrend/naxxramas/boss_loatheb.cpp => src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp rename : src/server/scripts/Northrend/naxxramas/boss_maexxna.cpp => src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp rename : src/server/scripts/Northrend/naxxramas/boss_noth.cpp => src/server/scripts/Northrend/Naxxramas/boss_noth.cpp rename : src/server/scripts/Northrend/naxxramas/boss_patchwerk.cpp => src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp rename : src/server/scripts/Northrend/naxxramas/boss_razuvious.cpp => src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp rename : src/server/scripts/Northrend/naxxramas/boss_sapphiron.cpp => src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp rename : src/server/scripts/Northrend/naxxramas/boss_thaddius.cpp => src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp rename : src/server/scripts/Northrend/naxxramas/instance_naxxramas.cpp => src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp rename : src/server/scripts/Northrend/naxxramas/naxxramas.h => src/server/scripts/Northrend/Naxxramas/naxxramas.h rename : src/server/scripts/Northrend/obsidian_sanctum/boss_sartharion.cpp => src/server/scripts/Northrend/ObsidianSanctum/boss_sartharion.cpp rename : src/server/scripts/Northrend/obsidian_sanctum/instance_obsidian_sanctum.cpp => src/server/scripts/Northrend/ObsidianSanctum/instance_obsidian_sanctum.cpp rename : src/server/scripts/Northrend/obsidian_sanctum/obsidian_sanctum.h => src/server/scripts/Northrend/ObsidianSanctum/obsidian_sanctum.h rename : src/server/scripts/Northrend/nexus/eye_of_eternity/boss_malygos.cpp => src/server/scripts/Northrend/TheNexus/eye_of_eternity/boss_malygos.cpp rename : src/server/scripts/Northrend/nexus/eye_of_eternity/eye_of_eternity.h => src/server/scripts/Northrend/TheNexus/eye_of_eternity/eye_of_eternity.h rename : src/server/scripts/Northrend/nexus/eye_of_eternity/instance_eye_of_eternity.cpp => src/server/scripts/Northrend/TheNexus/eye_of_eternity/instance_eye_of_eternity.cpp rename : src/server/scripts/Northrend/nexus/nexus/boss_anomalus.cpp => src/server/scripts/Northrend/TheNexus/nexus/boss_anomalus.cpp rename : src/server/scripts/Northrend/nexus/nexus/boss_keristrasza.cpp => src/server/scripts/Northrend/TheNexus/nexus/boss_keristrasza.cpp rename : src/server/scripts/Northrend/nexus/nexus/boss_magus_telestra.cpp => src/server/scripts/Northrend/TheNexus/nexus/boss_magus_telestra.cpp rename : src/server/scripts/Northrend/nexus/nexus/boss_ormorok.cpp => src/server/scripts/Northrend/TheNexus/nexus/boss_ormorok.cpp rename : src/server/scripts/Northrend/nexus/nexus/commander_kolurg.cpp => src/server/scripts/Northrend/TheNexus/nexus/commander_kolurg.cpp rename : src/server/scripts/Northrend/nexus/nexus/commander_stoutbeard.cpp => src/server/scripts/Northrend/TheNexus/nexus/commander_stoutbeard.cpp rename : src/server/scripts/Northrend/nexus/nexus/instance_nexus.cpp => src/server/scripts/Northrend/TheNexus/nexus/instance_nexus.cpp rename : src/server/scripts/Northrend/nexus/nexus/nexus.h => src/server/scripts/Northrend/TheNexus/nexus/nexus.h rename : src/server/scripts/Northrend/nexus/oculus/boss_drakos.cpp => src/server/scripts/Northrend/TheNexus/oculus/boss_drakos.cpp rename : src/server/scripts/Northrend/nexus/oculus/boss_eregos.cpp => src/server/scripts/Northrend/TheNexus/oculus/boss_eregos.cpp rename : src/server/scripts/Northrend/nexus/oculus/boss_urom.cpp => src/server/scripts/Northrend/TheNexus/oculus/boss_urom.cpp rename : src/server/scripts/Northrend/nexus/oculus/boss_varos.cpp => src/server/scripts/Northrend/TheNexus/oculus/boss_varos.cpp rename : src/server/scripts/Northrend/nexus/oculus/instance_oculus.cpp => src/server/scripts/Northrend/TheNexus/oculus/instance_oculus.cpp rename : src/server/scripts/Northrend/nexus/oculus/oculus.cpp => src/server/scripts/Northrend/TheNexus/oculus/oculus.cpp rename : src/server/scripts/Northrend/nexus/oculus/oculus.h => src/server/scripts/Northrend/TheNexus/oculus/oculus.h rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/boss_bjarngrim.cpp => src/server/scripts/Northrend/Ulduar/halls_of_lightning/boss_bjarngrim.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/boss_ionar.cpp => src/server/scripts/Northrend/Ulduar/halls_of_lightning/boss_ionar.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/boss_loken.cpp => src/server/scripts/Northrend/Ulduar/halls_of_lightning/boss_loken.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/boss_volkhan.cpp => src/server/scripts/Northrend/Ulduar/halls_of_lightning/boss_volkhan.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/halls_of_lightning.h => src/server/scripts/Northrend/Ulduar/halls_of_lightning/halls_of_lightning.h rename : src/server/scripts/Northrend/ulduar/halls_of_lightning/instance_halls_of_lightning.cpp => src/server/scripts/Northrend/Ulduar/halls_of_lightning/instance_halls_of_lightning.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_stone/boss_krystallus.cpp => src/server/scripts/Northrend/Ulduar/halls_of_stone/boss_krystallus.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_stone/boss_maiden_of_grief.cpp => src/server/scripts/Northrend/Ulduar/halls_of_stone/boss_maiden_of_grief.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_stone/boss_sjonnir.cpp => src/server/scripts/Northrend/Ulduar/halls_of_stone/boss_sjonnir.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_stone/halls_of_stone.cpp => src/server/scripts/Northrend/Ulduar/halls_of_stone/halls_of_stone.cpp rename : src/server/scripts/Northrend/ulduar/halls_of_stone/halls_of_stone.h => src/server/scripts/Northrend/Ulduar/halls_of_stone/halls_of_stone.h rename : src/server/scripts/Northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp => src/server/scripts/Northrend/Ulduar/halls_of_stone/instance_halls_of_stone.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_algalon.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_algalon.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_assembly_of_iron.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_assembly_of_iron.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_auriaya.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_flame_leviathan.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_freya.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_general_vezax.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_hodir.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_ignis.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_kologarn.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_kologarn.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_mimiron.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_mimiron.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_razorscale.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_thorim.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_thorim.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_xt002.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_xt002.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/boss_yoggsaron.cpp => src/server/scripts/Northrend/Ulduar/ulduar/boss_yoggsaron.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/instance_ulduar.cpp => src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp rename : src/server/scripts/Northrend/ulduar/ulduar/ulduar.h => src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h rename : src/server/scripts/Northrend/ulduar/ulduar/ulduar_teleporter.cpp => src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/boss_ingvar_the_plunderer.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/boss_ingvar_the_plunderer.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/boss_keleseth.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/boss_keleseth.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/boss_skarvald_dalronn.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/boss_skarvald_dalronn.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/instance_utgarde_keep.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/utgarde_keep.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/utgarde_keep.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_keep/utgarde_keep.h => src/server/scripts/Northrend/UtgardeKeep/utgarde_keep/utgarde_keep.h rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/boss_palehoof.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/boss_skadi.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/boss_skadi.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/boss_svala.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/boss_ymiron.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/boss_ymiron.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/instance_pinnacle.cpp => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/instance_pinnacle.cpp rename : src/server/scripts/Northrend/utgarde_keep/utgarde_pinnacle/utgarde_pinnacle.h => src/server/scripts/Northrend/UtgardeKeep/utgarde_pinnacle/utgarde_pinnacle.h rename : src/server/scripts/Northrend/vault_of_archavon/boss_archavon.cpp => src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp rename : src/server/scripts/Northrend/vault_of_archavon/boss_emalon.cpp => src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp rename : src/server/scripts/Northrend/vault_of_archavon/boss_koralon.cpp => src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp rename : src/server/scripts/Northrend/vault_of_archavon/boss_toravon.cpp => src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp rename : src/server/scripts/Northrend/vault_of_archavon/instance_vault_of_archavon.cpp => src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp rename : src/server/scripts/Northrend/vault_of_archavon/vault_of_archavon.h => src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h rename : src/server/scripts/Northrend/violet_hold/boss_cyanigosa.cpp => src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp rename : src/server/scripts/Northrend/violet_hold/boss_erekem.cpp => src/server/scripts/Northrend/VioletHold/boss_erekem.cpp rename : src/server/scripts/Northrend/violet_hold/boss_ichoron.cpp => src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp rename : src/server/scripts/Northrend/violet_hold/boss_lavanthor.cpp => src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp rename : src/server/scripts/Northrend/violet_hold/boss_moragg.cpp => src/server/scripts/Northrend/VioletHold/boss_moragg.cpp rename : src/server/scripts/Northrend/violet_hold/boss_xevozz.cpp => src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp rename : src/server/scripts/Northrend/violet_hold/boss_zuramat.cpp => src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp rename : src/server/scripts/Northrend/violet_hold/instance_violet_hold.cpp => src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp rename : src/server/scripts/Northrend/violet_hold/violet_hold.cpp => src/server/scripts/Northrend/VioletHold/violet_hold.cpp rename : src/server/scripts/Northrend/violet_hold/violet_hold.h => src/server/scripts/Northrend/VioletHold/violet_hold.h rename : src/server/scripts/Outland/auchindoun/auchenai_crypts/boss_exarch_maladaar.cpp => src/server/scripts/Outland/Auchindoun/auchenai_crypts/boss_exarch_maladaar.cpp rename : src/server/scripts/Outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp => src/server/scripts/Outland/Auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp rename : src/server/scripts/Outland/auchindoun/mana_tombs/boss_nexusprince_shaffar.cpp => src/server/scripts/Outland/Auchindoun/mana_tombs/boss_nexusprince_shaffar.cpp rename : src/server/scripts/Outland/auchindoun/mana_tombs/boss_pandemonius.cpp => src/server/scripts/Outland/Auchindoun/mana_tombs/boss_pandemonius.cpp rename : src/server/scripts/Outland/auchindoun/sethekk_halls/boss_darkweaver_syth.cpp => src/server/scripts/Outland/Auchindoun/sethekk_halls/boss_darkweaver_syth.cpp rename : src/server/scripts/Outland/auchindoun/sethekk_halls/boss_tailonking_ikiss.cpp => src/server/scripts/Outland/Auchindoun/sethekk_halls/boss_tailonking_ikiss.cpp rename : src/server/scripts/Outland/auchindoun/sethekk_halls/instance_sethekk_halls.cpp => src/server/scripts/Outland/Auchindoun/sethekk_halls/instance_sethekk_halls.cpp rename : src/server/scripts/Outland/auchindoun/sethekk_halls/sethekk_halls.h => src/server/scripts/Outland/Auchindoun/sethekk_halls/sethekk_halls.h rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/boss_murmur.cpp => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/boss_murmur.cpp rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp rename : src/server/scripts/Outland/auchindoun/shadow_labyrinth/shadow_labyrinth.h => src/server/scripts/Outland/Auchindoun/shadow_labyrinth/shadow_labyrinth.h rename : src/server/scripts/Outland/black_temple/black_temple.cpp => src/server/scripts/Outland/BlackTemple/black_temple.cpp rename : src/server/scripts/Outland/black_temple/black_temple.h => src/server/scripts/Outland/BlackTemple/black_temple.h rename : src/server/scripts/Outland/black_temple/boss_bloodboil.cpp => src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp rename : src/server/scripts/Outland/black_temple/boss_illidan.cpp => src/server/scripts/Outland/BlackTemple/boss_illidan.cpp rename : src/server/scripts/Outland/black_temple/boss_mother_shahraz.cpp => src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp rename : src/server/scripts/Outland/black_temple/boss_reliquary_of_souls.cpp => src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp rename : src/server/scripts/Outland/black_temple/boss_shade_of_akama.cpp => src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp rename : src/server/scripts/Outland/black_temple/boss_supremus.cpp => src/server/scripts/Outland/BlackTemple/boss_supremus.cpp rename : src/server/scripts/Outland/black_temple/boss_teron_gorefiend.cpp => src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp rename : src/server/scripts/Outland/black_temple/boss_warlord_najentus.cpp => src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp rename : src/server/scripts/Outland/black_temple/illidari_council.cpp => src/server/scripts/Outland/BlackTemple/illidari_council.cpp rename : src/server/scripts/Outland/black_temple/instance_black_temple.cpp => src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_fathomlord_karathress.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_hydross_the_unstable.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_lady_vashj.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_leotheras_the_blind.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_lurker_below.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/boss_morogrim_tidewalker.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/instance_serpent_shrine.cpp rename : src/server/scripts/Outland/coilfang_resevoir/serpent_shrine/serpent_shrine.h => src/server/scripts/Outland/CoilfangReservoir/serpent_shrine/serpent_shrine.h rename : src/server/scripts/Outland/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp => src/server/scripts/Outland/CoilfangReservoir/steam_vault/boss_hydromancer_thespia.cpp rename : src/server/scripts/Outland/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp => src/server/scripts/Outland/CoilfangReservoir/steam_vault/boss_mekgineer_steamrigger.cpp rename : src/server/scripts/Outland/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp => src/server/scripts/Outland/CoilfangReservoir/steam_vault/boss_warlord_kalithresh.cpp rename : src/server/scripts/Outland/coilfang_resevoir/steam_vault/instance_steam_vault.cpp => src/server/scripts/Outland/CoilfangReservoir/steam_vault/instance_steam_vault.cpp rename : src/server/scripts/Outland/coilfang_resevoir/steam_vault/steam_vault.h => src/server/scripts/Outland/CoilfangReservoir/steam_vault/steam_vault.h rename : src/server/scripts/Outland/coilfang_resevoir/underbog/boss_hungarfen.cpp => src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp rename : src/server/scripts/Outland/coilfang_resevoir/underbog/boss_the_black_stalker.cpp => src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp rename : src/server/scripts/Outland/gruuls_lair/boss_gruul.cpp => src/server/scripts/Outland/GruulsLair/boss_gruul.cpp rename : src/server/scripts/Outland/gruuls_lair/boss_high_king_maulgar.cpp => src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp rename : src/server/scripts/Outland/gruuls_lair/gruuls_lair.h => src/server/scripts/Outland/GruulsLair/gruuls_lair.h rename : src/server/scripts/Outland/gruuls_lair/instance_gruuls_lair.cpp => src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp rename : src/server/scripts/Outland/hellfire_citadel/blood_furnace/blood_furnace.h => src/server/scripts/Outland/HellfireCitadel/blood_furnace/blood_furnace.h rename : src/server/scripts/Outland/hellfire_citadel/blood_furnace/boss_broggok.cpp => src/server/scripts/Outland/HellfireCitadel/blood_furnace/boss_broggok.cpp rename : src/server/scripts/Outland/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp => src/server/scripts/Outland/HellfireCitadel/blood_furnace/boss_kelidan_the_breaker.cpp rename : src/server/scripts/Outland/hellfire_citadel/blood_furnace/boss_the_maker.cpp => src/server/scripts/Outland/HellfireCitadel/blood_furnace/boss_the_maker.cpp rename : src/server/scripts/Outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp => src/server/scripts/Outland/HellfireCitadel/blood_furnace/instance_blood_furnace.cpp rename : src/server/scripts/Outland/hellfire_citadel/hellfire_ramparts/boss_omor_the_unscarred.cpp => src/server/scripts/Outland/HellfireCitadel/hellfire_ramparts/boss_omor_the_unscarred.cpp rename : src/server/scripts/Outland/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp => src/server/scripts/Outland/HellfireCitadel/hellfire_ramparts/boss_vazruden_the_herald.cpp rename : src/server/scripts/Outland/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp => src/server/scripts/Outland/HellfireCitadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp rename : src/server/scripts/Outland/hellfire_citadel/hellfire_ramparts/hellfire_ramparts.h => src/server/scripts/Outland/HellfireCitadel/hellfire_ramparts/hellfire_ramparts.h rename : src/server/scripts/Outland/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp => src/server/scripts/Outland/HellfireCitadel/hellfire_ramparts/instance_hellfire_ramparts.cpp rename : src/server/scripts/Outland/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp => src/server/scripts/Outland/HellfireCitadel/magtheridons_lair/boss_magtheridon.cpp rename : src/server/scripts/Outland/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp => src/server/scripts/Outland/HellfireCitadel/magtheridons_lair/instance_magtheridons_lair.cpp rename : src/server/scripts/Outland/hellfire_citadel/magtheridons_lair/magtheridons_lair.h => src/server/scripts/Outland/HellfireCitadel/magtheridons_lair/magtheridons_lair.h rename : src/server/scripts/Outland/hellfire_citadel/shattered_halls/boss_nethekurse.cpp => src/server/scripts/Outland/HellfireCitadel/shattered_halls/boss_nethekurse.cpp rename : src/server/scripts/Outland/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp => src/server/scripts/Outland/HellfireCitadel/shattered_halls/boss_warbringer_omrogg.cpp rename : src/server/scripts/Outland/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp => src/server/scripts/Outland/HellfireCitadel/shattered_halls/boss_warchief_kargath_bladefist.cpp rename : src/server/scripts/Outland/hellfire_citadel/shattered_halls/instance_shattered_halls.cpp => src/server/scripts/Outland/HellfireCitadel/shattered_halls/instance_shattered_halls.cpp rename : src/server/scripts/Outland/hellfire_citadel/shattered_halls/shattered_halls.h => src/server/scripts/Outland/HellfireCitadel/shattered_halls/shattered_halls.h rename : src/server/scripts/Outland/tempest_keep/arcatraz/arcatraz.cpp => src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp rename : src/server/scripts/Outland/tempest_keep/arcatraz/arcatraz.h => src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h rename : src/server/scripts/Outland/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp => src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp rename : src/server/scripts/Outland/tempest_keep/arcatraz/instance_arcatraz.cpp => src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp rename : src/server/scripts/Outland/tempest_keep/botanica/boss_high_botanist_freywinn.cpp => src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp rename : src/server/scripts/Outland/tempest_keep/botanica/boss_laj.cpp => src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp rename : src/server/scripts/Outland/tempest_keep/botanica/boss_warp_splinter.cpp => src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/boss_alar.cpp => src/server/scripts/Outland/TempestKeep/the_eye/boss_alar.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/boss_astromancer.cpp => src/server/scripts/Outland/TempestKeep/the_eye/boss_astromancer.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/boss_kaelthas.cpp => src/server/scripts/Outland/TempestKeep/the_eye/boss_kaelthas.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/boss_void_reaver.cpp => src/server/scripts/Outland/TempestKeep/the_eye/boss_void_reaver.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/instance_the_eye.cpp => src/server/scripts/Outland/TempestKeep/the_eye/instance_the_eye.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/the_eye.cpp => src/server/scripts/Outland/TempestKeep/the_eye/the_eye.cpp rename : src/server/scripts/Outland/tempest_keep/the_eye/the_eye.h => src/server/scripts/Outland/TempestKeep/the_eye/the_eye.h rename : src/server/scripts/Outland/tempest_keep/the_mechanar/boss_gatewatcher_gyrokill.cpp => src/server/scripts/Outland/TempestKeep/the_mechanar/boss_gatewatcher_gyrokill.cpp rename : src/server/scripts/Outland/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp => src/server/scripts/Outland/TempestKeep/the_mechanar/boss_gatewatcher_ironhand.cpp rename : src/server/scripts/Outland/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp => src/server/scripts/Outland/TempestKeep/the_mechanar/boss_nethermancer_sepethrea.cpp rename : src/server/scripts/Outland/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp => src/server/scripts/Outland/TempestKeep/the_mechanar/boss_pathaleon_the_calculator.cpp rename : src/server/scripts/Outland/tempest_keep/the_mechanar/instance_mechanar.cpp => src/server/scripts/Outland/TempestKeep/the_mechanar/instance_mechanar.cpp rename : src/server/scripts/Outland/tempest_keep/the_mechanar/mechanar.h => src/server/scripts/Outland/TempestKeep/the_mechanar/mechanar.h
Diffstat (limited to 'src/server/scripts/EasternKingdoms/MagistersTerrace')
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp680
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp1321
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp366
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp226
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp205
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp174
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h31
7 files changed, 3003 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
new file mode 100644
index 00000000000..b5835dfe0a1
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -0,0 +1,680 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Boss_Felblood_Kaelthas
+SD%Complete: 80
+SDComment: Normal and Heroic Support. Issues: Arcane Spheres do not initially follow targets.
+SDCategory: Magisters' Terrace
+EndScriptData */
+
+#include "ScriptedPch.h"
+#include "magisters_terrace.h"
+#include "WorldPacket.h"
+
+#define SAY_AGGRO -1585023 //This yell should be done when the room is cleared. For now, set it as a movelineofsight yell.
+#define SAY_PHOENIX -1585024
+#define SAY_FLAMESTRIKE -1585025
+#define SAY_GRAVITY_LAPSE -1585026
+#define SAY_TIRED -1585027
+#define SAY_RECAST_GRAVITY -1585028
+#define SAY_DEATH -1585029
+
+/*** Spells ***/
+
+// Phase 1 spells
+#define SPELL_FIREBALL_NORMAL 44189 // Deals 2700-3300 damage at current target
+#define SPELL_FIREBALL_HEROIC 46164 // 4950-6050
+
+#define SPELL_PHOENIX 44194 // Summons a phoenix (Doesn't work?)
+#define SPELL_PHOENIX_BURN 44197 // A spell Phoenix uses to damage everything around
+#define SPELL_REBIRTH_DMG 44196 // DMG if a Phoenix rebirth happen
+
+#define SPELL_FLAMESTRIKE1_NORMAL 44190 // Damage part
+#define SPELL_FLAMESTRIKE1_HEROIC 46163 // Heroic damage part
+#define SPELL_FLAMESTRIKE2 44191 // Flamestrike indicator before the damage
+#define SPELL_FLAMESTRIKE3 44192 // Summons the trigger + animation (projectile)
+
+#define SPELL_SHOCK_BARRIER 46165 // Heroic only; 10k damage shield, followed by Pyroblast
+#define SPELL_PYROBLAST 36819 // Heroic only; 45-55k fire damage
+
+// Phase 2 spells
+#define SPELL_GRAVITY_LAPSE_INITIAL 44224 // Cast at the beginning of every Gravity Lapse
+#define SPELL_GRAVITY_LAPSE_CHANNEL 44251 // Channeled; blue beam animation to every enemy in range
+#define SPELL_TELEPORT_CENTER 44218 // Should teleport people to the center. Requires DB entry in spell_target_position.
+#define SPELL_GRAVITY_LAPSE_FLY 44227 // Hastens flyspeed and allows flying for 1 minute. For some reason removes 44226.
+#define SPELL_GRAVITY_LAPSE_DOT 44226 // Knocks up in the air and applies a 300 DPS DoT.
+#define SPELL_ARCANE_SPHERE_PASSIVE 44263 // Passive auras on Arcane Spheres
+#define SPELL_POWER_FEEDBACK 44233 // Stuns him, making him take 50% more damage for 10 seconds. Cast after Gravity Lapse
+
+/*** Creatures ***/
+#define CREATURE_PHOENIX 24674
+#define CREATURE_PHOENIX_EGG 24675
+#define CREATURE_ARCANE_SPHERE 24708
+
+/** Locations **/
+float KaelLocations[3][2]=
+{
+ {148.744659, 181.377426},
+ {140.823883, 195.403046},
+ {156.574188, 195.650482},
+};
+
+#define LOCATION_Z -16.727455
+
+struct boss_felblood_kaelthasAI : public ScriptedAI
+{
+ boss_felblood_kaelthasAI(Creature* c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ }
+
+ ScriptedInstance* pInstance;
+
+ uint32 FireballTimer;
+ uint32 PhoenixTimer;
+ uint32 FlameStrikeTimer;
+ uint32 CombatPulseTimer;
+
+ //Heroic only
+ uint32 PyroblastTimer;
+
+ uint32 GravityLapseTimer;
+ uint32 GravityLapsePhase;
+ // 0 = No Gravity Lapse
+ // 1 = Casting Gravity Lapse visual
+ // 2 = Teleported people to self
+ // 3 = Knocked people up in the air
+ // 4 = Applied an aura that allows them to fly, channeling visual, relased Arcane Orbs.
+
+ bool FirstGravityLapse;
+ bool HasTaunted;
+
+ uint8 Phase;
+ // 0 = Not started
+ // 1 = Fireball; Summon Phoenix; Flamestrike
+ // 2 = Gravity Lapses
+
+ void Reset()
+ {
+ // TODO: Timers
+ FireballTimer = 0;
+ PhoenixTimer = 10000;
+ FlameStrikeTimer = 25000;
+ CombatPulseTimer = 0;
+
+ PyroblastTimer = 60000;
+
+ GravityLapseTimer = 0;
+ GravityLapsePhase = 0;
+
+ FirstGravityLapse = true;
+ HasTaunted = false;
+
+ Phase = 0;
+
+ if (pInstance)
+ {
+ pInstance->SetData(DATA_KAELTHAS_EVENT, NOT_STARTED);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), true);
+ // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
+ // Small door opened after event are expected to be closed by default
+ }
+ }
+
+ void JustDied(Unit * /*killer*/)
+ {
+ DoScriptText(SAY_DEATH, me);
+
+ if (!pInstance)
+ return;
+
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), true);
+ // Open the encounter door
+ }
+
+ void DamageTaken(Unit* /*done_by*/, uint32 &damage)
+ {
+ if (damage > me->GetHealth())
+ RemoveGravityLapse(); // Remove Gravity Lapse so that players fall to ground if they kill him when in air.
+ }
+
+ void EnterCombat(Unit * /*who*/)
+ {
+ if (!pInstance)
+ return;
+
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), false);
+ //Close the encounter door, open it in JustDied/Reset
+ }
+
+ void MoveInLineOfSight(Unit *who)
+ {
+ if (!HasTaunted && me->IsWithinDistInMap(who, 40.0))
+ {
+ DoScriptText(SAY_AGGRO, me);
+ HasTaunted = true;
+ }
+
+ ScriptedAI::MoveInLineOfSight(who);
+ }
+
+ void SetThreatList(Creature* SummonedUnit)
+ {
+ if (!SummonedUnit)
+ return;
+
+ std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList();
+ std::list<HostileReference*>::const_iterator i = m_threatlist.begin();
+ for (i = m_threatlist.begin(); i != m_threatlist.end(); ++i)
+ {
+ Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());
+ if (pUnit && pUnit->isAlive())
+ {
+ float threat = me->getThreatManager().getThreat(pUnit);
+ SummonedUnit->AddThreat(pUnit, threat);
+ }
+ }
+ }
+
+ void TeleportPlayersToSelf()
+ {
+ float x = KaelLocations[0][0];
+ float y = KaelLocations[0][1];
+ me->GetMap()->CreatureRelocation(me, x, y, LOCATION_Z, 0.0f);
+ //me->SendMonsterMove(x, y, LOCATION_Z, 0, 0, 0); // causes some issues...
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i)
+ {
+ Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());
+ if (pUnit && (pUnit->GetTypeId() == TYPEID_PLAYER))
+ pUnit->CastSpell(pUnit, SPELL_TELEPORT_CENTER, true);
+ }
+ DoCast(me, SPELL_TELEPORT_CENTER, true);
+ }
+
+ void CastGravityLapseKnockUp()
+ {
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i)
+ {
+ Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());
+ if (pUnit && (pUnit->GetTypeId() == TYPEID_PLAYER))
+ // Knockback into the air
+ pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, me->GetGUID());
+ }
+ }
+
+ void CastGravityLapseFly() // Use Fly Packet hack for now as players can't cast "fly" spells unless in map 530. Has to be done a while after they get knocked into the air...
+ {
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i)
+ {
+ Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());
+ if (pUnit && (pUnit->GetTypeId() == TYPEID_PLAYER))
+ {
+ // Also needs an exception in spell system.
+ pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, me->GetGUID());
+ // Use packet hack
+ WorldPacket data(12);
+ data.SetOpcode(SMSG_MOVE_SET_CAN_FLY);
+ data.append(pUnit->GetPackGUID());
+ data << uint32(0);
+ pUnit->SendMessageToSet(&data, true);
+ }
+ }
+ }
+
+ void RemoveGravityLapse()
+ {
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i)
+ {
+ Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());
+ if (pUnit && (pUnit->GetTypeId() == TYPEID_PLAYER))
+ {
+ pUnit->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
+ pUnit->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DOT);
+
+ WorldPacket data(12);
+ data.SetOpcode(SMSG_MOVE_UNSET_CAN_FLY);
+ data.append(pUnit->GetPackGUID());
+ data << uint32(0);
+ pUnit->SendMessageToSet(&data, true);
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
+
+ switch(Phase)
+ {
+ case 0:
+ {
+ // *Heroic mode only:
+ if (IsHeroic())
+ {
+ if (PyroblastTimer <= diff)
+ {
+ me->InterruptSpell(CURRENT_CHANNELED_SPELL);
+ me->InterruptSpell(CURRENT_GENERIC_SPELL);
+ DoCast(me, SPELL_SHOCK_BARRIER, true);
+ DoCast(me->getVictim(), SPELL_PYROBLAST);
+ PyroblastTimer = 60000;
+ } else PyroblastTimer -= diff;
+ }
+
+ if (FireballTimer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FIREBALL_NORMAL);
+ FireballTimer = urand(2000,6000);
+ } else FireballTimer -= diff;
+
+ if (PhoenixTimer <= diff)
+ {
+
+ Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1);
+
+ uint8 random = urand(1,2);
+ float x = KaelLocations[random][0];
+ float y = KaelLocations[random][1];
+
+ Creature* Phoenix = me->SummonCreature(CREATURE_PHOENIX, x, y, LOCATION_Z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
+ if (Phoenix)
+ {
+ Phoenix->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
+ SetThreatList(Phoenix);
+ Phoenix->AI()->AttackStart(pTarget);
+ }
+
+ DoScriptText(SAY_PHOENIX, me);
+
+ PhoenixTimer = 60000;
+ } else PhoenixTimer -= diff;
+
+ if (FlameStrikeTimer <= diff)
+ {
+ if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ {
+ me->InterruptSpell(CURRENT_CHANNELED_SPELL);
+ me->InterruptSpell(CURRENT_GENERIC_SPELL);
+ DoCast(pTarget, SPELL_FLAMESTRIKE3, true);
+ DoScriptText(SAY_FLAMESTRIKE, me);
+ }
+ FlameStrikeTimer = urand(15000,25000);
+ } else FlameStrikeTimer -= diff;
+
+ // Below 50%
+ if (me->GetMaxHealth() * 0.5 > me->GetHealth())
+ {
+ me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, true);
+ me->StopMoving();
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MoveIdle();
+ GravityLapseTimer = 0;
+ GravityLapsePhase = 0;
+ Phase = 1;
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ break;
+
+ case 1:
+ {
+ if (GravityLapseTimer <= diff)
+ {
+ switch(GravityLapsePhase)
+ {
+ case 0:
+ if (FirstGravityLapse) // Different yells at 50%, and at every following Gravity Lapse
+ {
+ DoScriptText(SAY_GRAVITY_LAPSE, me);
+ FirstGravityLapse = false;
+
+ if (pInstance)
+ {
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_STATUE_LEFT), true);
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_STATUE_RIGHT), true);
+ }
+ }else
+ {
+ DoScriptText(SAY_RECAST_GRAVITY, me);
+ }
+
+ DoCast(me, SPELL_GRAVITY_LAPSE_INITIAL);
+ GravityLapseTimer = 2000 + diff;// Don't interrupt the visual spell
+ GravityLapsePhase = 1;
+ break;
+
+ case 1:
+ TeleportPlayersToSelf();
+ GravityLapseTimer = 1000;
+ GravityLapsePhase = 2;
+ break;
+
+ case 2:
+ CastGravityLapseKnockUp();
+ GravityLapseTimer = 1000;
+ GravityLapsePhase = 3;
+ break;
+
+ case 3:
+ CastGravityLapseFly();
+ GravityLapseTimer = 30000;
+ GravityLapsePhase = 4;
+
+ for (uint8 i = 0; i < 3; ++i)
+ {
+ Unit *pTarget = NULL;
+ pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
+
+ Creature* Orb = DoSpawnCreature(CREATURE_ARCANE_SPHERE, 5, 5, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
+ if (Orb && pTarget)
+ {
+ Orb->SetSpeed(MOVE_RUN, 0.5f);
+ Orb->AddThreat(pTarget, 1000000.0f);
+ Orb->AI()->AttackStart(pTarget);
+ }
+
+ }
+
+ DoCast(me, SPELL_GRAVITY_LAPSE_CHANNEL);
+ break;
+
+ case 4:
+ me->InterruptNonMeleeSpells(false);
+ DoScriptText(SAY_TIRED, me);
+ DoCast(me, SPELL_POWER_FEEDBACK);
+ RemoveGravityLapse();
+ GravityLapseTimer = 10000;
+ GravityLapsePhase = 0;
+ break;
+ }
+ } else GravityLapseTimer -= diff;
+ }
+ break;
+ }
+ }
+};
+
+struct mob_felkael_flamestrikeAI : public ScriptedAI
+{
+ mob_felkael_flamestrikeAI(Creature *c) : ScriptedAI(c)
+ {
+ }
+
+ uint32 FlameStrikeTimer;
+
+ void Reset()
+ {
+ FlameStrikeTimer = 5000;
+
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->setFaction(14);
+
+ DoCast(me, SPELL_FLAMESTRIKE2, true);
+ }
+
+ void EnterCombat(Unit * /*who*/) {}
+ void MoveInLineOfSight(Unit * /*who*/) {}
+ void UpdateAI(const uint32 diff)
+ {
+ if (FlameStrikeTimer <= diff)
+ {
+ DoCast(me, SPELL_FLAMESTRIKE1_NORMAL, true);
+ me->Kill(me);
+ } else FlameStrikeTimer -= diff;
+ }
+};
+
+struct mob_felkael_phoenixAI : public ScriptedAI
+{
+ mob_felkael_phoenixAI(Creature* c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ }
+
+ ScriptedInstance* pInstance;
+ uint32 BurnTimer;
+ uint32 Death_Timer;
+ bool Rebirth;
+ bool FakeDeath;
+
+ void Reset()
+ {
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
+ me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ DoCast(me, SPELL_PHOENIX_BURN, true);
+ BurnTimer = 2000;
+ Death_Timer = 3000;
+ Rebirth = false;
+ FakeDeath = false;
+ }
+
+ void EnterCombat(Unit* /*who*/) {}
+
+ void DamageTaken(Unit* /*pKiller*/, uint32 &damage)
+ {
+ if (damage < me->GetHealth())
+ return;
+
+ //Prevent glitch if in fake death
+ if (FakeDeath)
+ {
+ damage = 0;
+ return;
+
+ }
+ //Don't really die in all phases of Kael'Thas
+ if (pInstance && pInstance->GetData(DATA_KAELTHAS_EVENT) == 0)
+ {
+ //prevent death
+ damage = 0;
+ FakeDeath = true;
+
+ me->InterruptNonMeleeSpells(false);
+ me->SetHealth(0);
+ me->StopMoving();
+ me->ClearComboPointHolders();
+ me->RemoveAllAurasOnDeath();
+ me->ModifyAuraState(AURA_STATE_HEALTHLESS_20_PERCENT, false);
+ me->ModifyAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, false);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->ClearAllReactives();
+ me->SetUInt64Value(UNIT_FIELD_TARGET,0);
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MoveIdle();
+ me->SetStandState(UNIT_STAND_STATE_DEAD);
+
+ }
+
+ }
+
+ void JustDied(Unit* /*slayer*/)
+ {
+ me->SummonCreature(CREATURE_PHOENIX_EGG, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+
+ //If we are fake death, we cast revbirth and after that we kill the phoenix to spawn the egg.
+ if (FakeDeath)
+ {
+ if (!Rebirth)
+ {
+ DoCast(me, SPELL_REBIRTH_DMG);
+ Rebirth = true;
+ }
+
+ if (Rebirth)
+ {
+
+ if (Death_Timer <= diff)
+ {
+ me->SummonCreature(CREATURE_PHOENIX_EGG, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000);
+ me->DisappearAndDie();
+ Rebirth = false;
+ } else Death_Timer -= diff;
+ }
+
+ }
+
+ if (!UpdateVictim())
+ return;
+
+ if (BurnTimer <= diff)
+ {
+ //spell Burn should possible do this, but it doesn't, so do this for now.
+ uint16 dmg = urand(1650,2050);
+ me->DealDamage(me, dmg, 0, DOT, SPELL_SCHOOL_MASK_FIRE, NULL, false);
+ BurnTimer += 2000;
+ } BurnTimer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+struct mob_felkael_phoenix_eggAI : public ScriptedAI
+{
+ mob_felkael_phoenix_eggAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 HatchTimer;
+
+ void Reset()
+ {
+ HatchTimer = 10000;
+ }
+
+ void EnterCombat(Unit* /*who*/) {}
+ void MoveInLineOfSight(Unit* /*who*/) {}
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (HatchTimer <= diff)
+ {
+ me->SummonCreature(CREATURE_PHOENIX, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
+ me->Kill(me);
+ } else HatchTimer -= diff;
+
+ }
+};
+
+struct mob_arcane_sphereAI : public ScriptedAI
+{
+ mob_arcane_sphereAI(Creature *c) : ScriptedAI(c) { Reset(); }
+
+ uint32 DespawnTimer;
+ uint32 ChangeTargetTimer;
+
+ void Reset()
+ {
+ DespawnTimer = 30000;
+ ChangeTargetTimer = urand(6000,12000);
+
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ me->setFaction(14);
+ DoCast(me, SPELL_ARCANE_SPHERE_PASSIVE, true);
+ }
+
+ void EnterCombat(Unit* /*who*/) {}
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (DespawnTimer <= diff)
+ me->Kill(me);
+ else
+ DespawnTimer -= diff;
+
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
+
+ if (ChangeTargetTimer <= diff)
+ {
+ if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ {
+ me->AddThreat(pTarget, 1.0f);
+ me->TauntApply(pTarget);
+ AttackStart(pTarget);
+ }
+
+ ChangeTargetTimer = urand(5000,15000);
+ } else ChangeTargetTimer -= diff;
+ }
+};
+
+CreatureAI* GetAI_boss_felblood_kaelthas(Creature* c)
+{
+ return new boss_felblood_kaelthasAI(c);
+}
+
+CreatureAI* GetAI_mob_arcane_sphere(Creature* c)
+{
+ return new mob_arcane_sphereAI(c);
+}
+
+CreatureAI* GetAI_mob_felkael_phoenix(Creature* c)
+{
+ return new mob_felkael_phoenixAI(c);
+}
+
+CreatureAI* GetAI_mob_felkael_phoenix_egg(Creature* c)
+{
+ return new mob_felkael_phoenix_eggAI(c);
+}
+
+CreatureAI* GetAI_mob_felkael_flamestrike(Creature* c)
+{
+ return new mob_felkael_flamestrikeAI(c);
+}
+
+void AddSC_boss_felblood_kaelthas()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "boss_felblood_kaelthas";
+ newscript->GetAI = &GetAI_boss_felblood_kaelthas;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_arcane_sphere";
+ newscript->GetAI = &GetAI_mob_arcane_sphere;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_felkael_phoenix";
+ newscript->GetAI = &GetAI_mob_felkael_phoenix;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_felkael_phoenix_egg";
+ newscript->GetAI = &GetAI_mob_felkael_phoenix_egg;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_felkael_flamestrike";
+ newscript->GetAI = &GetAI_mob_felkael_flamestrike;
+ newscript->RegisterSelf();
+}
+
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
new file mode 100644
index 00000000000..2112eaabc87
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
@@ -0,0 +1,1321 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Boss_Priestess_Delrissa
+SD%Complete: 65
+SDComment: No Heroic support yet. Needs further testing. Several scripts for pets disabled, not seem to require any special script.
+SDCategory: Magister's Terrace
+EndScriptData */
+
+#include "ScriptedPch.h"
+#include "magisters_terrace.h"
+
+struct Speech
+{
+ int32 id;
+};
+
+static Speech LackeyDeath[]=
+{
+ {-1585013},
+ {-1585014},
+ {-1585015},
+ {-1585016},
+};
+
+static Speech PlayerDeath[]=
+{
+ {-1585017},
+ {-1585018},
+ {-1585019},
+ {-1585020},
+ {-1585021},
+};
+
+enum eEnums
+{
+ SAY_AGGRO = -1585012,
+ SAY_DEATH = -1585022,
+
+ SPELL_DISPEL_MAGIC = 27609,
+ SPELL_FLASH_HEAL = 17843,
+ SPELL_SW_PAIN_NORMAL = 14032,
+ SPELL_SW_PAIN_HEROIC = 15654,
+ SPELL_SHIELD = 44291,
+ SPELL_RENEW_NORMAL = 44174,
+ SPELL_RENEW_HEROIC = 46192,
+
+ MAX_ACTIVE_LACKEY = 4
+};
+
+const float fOrientation = 4.98;
+const float fZLocation = -19.921;
+
+float LackeyLocations[4][2]=
+{
+ {123.77, 17.6007},
+ {131.731, 15.0827},
+ {121.563, 15.6213},
+ {129.988, 17.2355},
+};
+
+const uint32 m_auiAddEntries[] =
+{
+ 24557, //Kagani Nightstrike
+ 24558, //Elris Duskhallow
+ 24554, //Eramas Brightblaze
+ 24561, //Yazzaj
+ 24559, //Warlord Salaris
+ 24555, //Garaxxas
+ 24553, //Apoko
+ 24556, //Zelfan
+};
+
+struct boss_priestess_delrissaAI : public ScriptedAI
+{
+ boss_priestess_delrissaAI(Creature* c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ memset(&m_auiLackeyGUID, 0, sizeof(m_auiLackeyGUID));
+ LackeyEntryList.clear();
+ }
+
+ ScriptedInstance* pInstance;
+
+ std::vector<uint32> LackeyEntryList;
+ uint64 m_auiLackeyGUID[MAX_ACTIVE_LACKEY];
+
+ uint8 PlayersKilled;
+
+ uint32 HealTimer;
+ uint32 RenewTimer;
+ uint32 ShieldTimer;
+ uint32 SWPainTimer;
+ uint32 DispelTimer;
+ uint32 ResetTimer;
+
+ void Reset()
+ {
+ PlayersKilled = 0;
+
+ HealTimer = 15000;
+ RenewTimer = 10000;
+ ShieldTimer = 2000;
+ SWPainTimer = 5000;
+ DispelTimer = 7500;
+ ResetTimer = 5000;
+
+ InitializeLackeys();
+ }
+
+ //this mean she at some point evaded
+ void JustReachedHome()
+ {
+ if (pInstance)
+ pInstance->SetData(DATA_DELRISSA_EVENT, FAIL);
+ }
+
+ void EnterCombat(Unit* who)
+ {
+ DoScriptText(SAY_AGGRO, me);
+
+ for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
+ {
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[i]))
+ {
+ if (!pAdd->getVictim())
+ {
+ who->SetInCombatWith(pAdd);
+ pAdd->AddThreat(who, 0.0f);
+ }
+ }
+ }
+
+ if (pInstance)
+ pInstance->SetData(DATA_DELRISSA_EVENT, IN_PROGRESS);
+ }
+
+ void InitializeLackeys()
+ {
+ //can be called if Creature are dead, so avoid
+ if (!me->isAlive())
+ return;
+
+ uint8 j = 0;
+
+ //it's empty, so first time
+ if (LackeyEntryList.empty())
+ {
+ //pre-allocate size for speed
+ LackeyEntryList.resize((sizeof(m_auiAddEntries) / sizeof(uint32)));
+
+ //fill vector array with entries from Creature array
+ for (uint8 i = 0; i < LackeyEntryList.size(); ++i)
+ LackeyEntryList[i] = m_auiAddEntries[i];
+
+ //remove random entries
+ while (LackeyEntryList.size() > MAX_ACTIVE_LACKEY)
+ LackeyEntryList.erase(LackeyEntryList.begin() + rand()%LackeyEntryList.size());
+
+ //summon all the remaining in vector
+ for (std::vector<uint32>::const_iterator itr = LackeyEntryList.begin(); itr != LackeyEntryList.end(); ++itr)
+ {
+ if (Creature* pAdd = me->SummonCreature((*itr), LackeyLocations[j][0], LackeyLocations[j][1], fZLocation, fOrientation, TEMPSUMMON_CORPSE_DESPAWN, 0))
+ m_auiLackeyGUID[j] = pAdd->GetGUID();
+
+ ++j;
+ }
+ }
+ else
+ {
+ for (std::vector<uint32>::const_iterator itr = LackeyEntryList.begin(); itr != LackeyEntryList.end(); ++itr)
+ {
+ Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[j]);
+
+ //object already removed, not exist
+ if (!pAdd)
+ {
+ if (Creature* pAdd = me->SummonCreature((*itr), LackeyLocations[j][0], LackeyLocations[j][1], fZLocation, fOrientation, TEMPSUMMON_CORPSE_DESPAWN, 0))
+ m_auiLackeyGUID[j] = pAdd->GetGUID();
+ }
+ ++j;
+ }
+ }
+ }
+
+ void KilledUnit(Unit* victim)
+ {
+ if (victim->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ DoScriptText(PlayerDeath[PlayersKilled].id, me);
+
+ if (PlayersKilled < 4)
+ ++PlayersKilled;
+ }
+
+ void JustDied(Unit* /*killer*/)
+ {
+ DoScriptText(SAY_DEATH, me);
+
+ if (!pInstance)
+ return;
+
+ if (pInstance->GetData(DATA_DELRISSA_DEATH_COUNT) == MAX_ACTIVE_LACKEY)
+ pInstance->SetData(DATA_DELRISSA_EVENT, DONE);
+ else
+ {
+ if (me->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE))
+ me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (ResetTimer <= diff)
+ {
+ float x, y, z, o;
+ me->GetHomePosition(x, y, z, o);
+ if (me->GetPositionZ() >= z+10)
+ {
+ EnterEvadeMode();
+ return;
+ }
+ ResetTimer = 5000;
+ } else ResetTimer -= diff;
+
+ if (HealTimer <= diff)
+ {
+ uint32 health = me->GetHealth();
+ Unit *pTarget = me;
+ for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
+ {
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[i]))
+ {
+ if (pAdd->isAlive() && pAdd->GetHealth() < health)
+ pTarget = pAdd;
+ }
+ }
+
+ DoCast(pTarget, SPELL_FLASH_HEAL);
+ HealTimer = 15000;
+ } else HealTimer -= diff;
+
+ if (RenewTimer <= diff)
+ {
+ Unit *pTarget = me;
+
+ if (urand(0,1))
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
+ if (pAdd->isAlive())
+ pTarget = pAdd;
+
+ DoCast(pTarget, SPELL_RENEW_NORMAL);
+ RenewTimer = 5000;
+ } else RenewTimer -= diff;
+
+ if (ShieldTimer <= diff)
+ {
+ Unit *pTarget = me;
+
+ if (urand(0,1))
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
+ if (pAdd->isAlive() && !pAdd->HasAura(SPELL_SHIELD))
+ pTarget = pAdd;
+
+ DoCast(pTarget, SPELL_SHIELD);
+ ShieldTimer = 7500;
+ } else ShieldTimer -= diff;
+
+ if (DispelTimer <= diff)
+ {
+ Unit *pTarget = NULL;
+ bool friendly = false;
+
+ if (urand(0,1))
+ pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
+ else
+ {
+ friendly = true;
+
+ if (urand(0,1))
+ pTarget = me;
+ else
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
+ if (pAdd->isAlive())
+ pTarget = pAdd;
+ }
+
+ if (pTarget)
+ DoCast(pTarget, SPELL_DISPEL_MAGIC);
+
+ DispelTimer = 12000;
+ } else DispelTimer -= diff;
+
+ if (SWPainTimer <= diff)
+ {
+ if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ DoCast(pTarget, SPELL_SW_PAIN_NORMAL);
+
+ SWPainTimer = 10000;
+ } else SWPainTimer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_boss_priestess_delrissa(Creature* pCreature)
+{
+ return new boss_priestess_delrissaAI(pCreature);
+}
+
+enum eHealingPotion
+{
+ SPELL_HEALING_POTION = 15503
+};
+
+//all 8 possible lackey use this common
+struct boss_priestess_lackey_commonAI : public ScriptedAI
+{
+ boss_priestess_lackey_commonAI(Creature* c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ memset(&m_auiLackeyGUIDs, 0, sizeof(m_auiLackeyGUIDs));
+ AcquireGUIDs();
+ }
+
+ ScriptedInstance* pInstance;
+
+ uint64 m_auiLackeyGUIDs[MAX_ACTIVE_LACKEY];
+ uint32 ResetThreatTimer;
+
+ bool UsedPotion;
+
+ void Reset()
+ {
+ UsedPotion = false;
+
+ // These guys does not follow normal threat system rules
+ // For later development, some alternative threat system should be made
+ // We do not know what this system is based upon, but one theory is class (healers=high threat, dps=medium, etc)
+ // We reset their threat frequently as an alternative until such a system exist
+ ResetThreatTimer = urand(5000,20000);
+
+ // in case she is not alive and Reset was for some reason called, respawn her (most likely party wipe after killing her)
+ if (Creature* pDelrissa = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DELRISSA) : 0))
+ {
+ if (!pDelrissa->isAlive())
+ pDelrissa->Respawn();
+ }
+ }
+
+ void EnterCombat(Unit* pWho)
+ {
+ if (!pWho)
+ return;
+
+ if (pInstance)
+ {
+ for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
+ {
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUIDs[i]))
+ {
+ if (!pAdd->getVictim() && pAdd != me)
+ {
+ pWho->SetInCombatWith(pAdd);
+ pAdd->AddThreat(pWho, 0.0f);
+ }
+ }
+ }
+
+ if (Creature* pDelrissa = Unit::GetCreature(*me, pInstance->GetData64(DATA_DELRISSA)))
+ {
+ if (pDelrissa->isAlive() && !pDelrissa->getVictim())
+ {
+ pWho->SetInCombatWith(pDelrissa);
+ pDelrissa->AddThreat(pWho, 0.0f);
+ }
+ }
+ }
+ }
+
+ void JustDied(Unit* /*killer*/)
+ {
+ if (!pInstance)
+ return;
+
+ Creature* pDelrissa = Unit::GetCreature(*me, pInstance->GetData64(DATA_DELRISSA));
+ uint32 uiLackeyDeathCount = pInstance->GetData(DATA_DELRISSA_DEATH_COUNT);
+
+ if (!pDelrissa)
+ return;
+
+ //should delrissa really yell if dead?
+ DoScriptText(LackeyDeath[uiLackeyDeathCount].id, pDelrissa);
+
+ pInstance->SetData(DATA_DELRISSA_DEATH_COUNT, SPECIAL);
+
+ //increase local var, since we now may have four dead
+ ++uiLackeyDeathCount;
+
+ if (uiLackeyDeathCount == MAX_ACTIVE_LACKEY)
+ {
+ //time to make her lootable and complete event if she died before lackeys
+ if (!pDelrissa->isAlive())
+ {
+ if (!pDelrissa->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE))
+ pDelrissa->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
+
+ pInstance->SetData(DATA_DELRISSA_EVENT, DONE);
+ }
+ }
+ }
+
+ void KilledUnit(Unit* victim)
+ {
+ if (!pInstance)
+ return;
+
+ if (Creature* Delrissa = Unit::GetCreature(*me, pInstance->GetData64(DATA_DELRISSA)))
+ Delrissa->AI()->KilledUnit(victim);
+ }
+
+ void AcquireGUIDs()
+ {
+ if (!pInstance)
+ return;
+
+ if (Creature* Delrissa = (Unit::GetCreature(*me, pInstance->GetData64(DATA_DELRISSA))))
+ {
+ for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
+ m_auiLackeyGUIDs[i] = CAST_AI(boss_priestess_delrissaAI, Delrissa->AI())->m_auiLackeyGUID[i];
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UsedPotion && (me->GetHealth()*100 / me->GetMaxHealth()) < 25)
+ {
+ DoCast(me, SPELL_HEALING_POTION);
+ UsedPotion = true;
+ }
+
+ if (ResetThreatTimer <= diff)
+ {
+ DoResetThreat();
+ ResetThreatTimer = 5000 + rand()%15000;
+ } else ResetThreatTimer -= diff;
+ }
+};
+
+enum eRogueSpells
+{
+ SPELL_KIDNEY_SHOT = 27615,
+ SPELL_GOUGE = 12540,
+ SPELL_KICK = 27613,
+ SPELL_VANISH = 44290,
+ SPELL_BACKSTAB = 15657,
+ SPELL_EVISCERATE = 27611
+};
+
+struct boss_kagani_nightstrikeAI : public boss_priestess_lackey_commonAI
+{
+ //Rogue
+ boss_kagani_nightstrikeAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Gouge_Timer;
+ uint32 Kick_Timer;
+ uint32 Vanish_Timer;
+ uint32 Eviscerate_Timer;
+ uint32 Wait_Timer;
+ bool InVanish;
+
+ void Reset()
+ {
+ Gouge_Timer = 5500;
+ Kick_Timer = 7000;
+ Vanish_Timer = 2000;
+ Eviscerate_Timer = 6000;
+ Wait_Timer = 5000;
+ InVanish = false;
+ me->SetVisibility(VISIBILITY_ON);
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Vanish_Timer <= diff)
+ {
+ DoCast(me, SPELL_VANISH);
+
+ Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0);
+
+ DoResetThreat();
+
+ if (pUnit)
+ me->AddThreat(pUnit, 1000.0f);
+
+ InVanish = true;
+ Vanish_Timer = 30000;
+ Wait_Timer = 10000;
+ } else Vanish_Timer -= diff;
+
+ if (InVanish)
+ {
+ if (Wait_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_BACKSTAB, true);
+ DoCast(me->getVictim(), SPELL_KIDNEY_SHOT, true);
+ me->SetVisibility(VISIBILITY_ON); // ...? Hacklike
+ InVanish = false;
+ } else Wait_Timer -= diff;
+ }
+
+ if (Gouge_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_GOUGE);
+ Gouge_Timer = 5500;
+ } else Gouge_Timer -= diff;
+
+ if (Kick_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_KICK);
+ Kick_Timer = 7000;
+ } else Kick_Timer -= diff;
+
+ if (Eviscerate_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_EVISCERATE);
+ Eviscerate_Timer = 4000;
+ } else Eviscerate_Timer -= diff;
+
+ if (!InVanish)
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_boss_kagani_nightstrike(Creature* pCreature)
+{
+ return new boss_kagani_nightstrikeAI(pCreature);
+}
+
+enum eWarlockSpells
+{
+ SPELL_IMMOLATE = 44267,
+ SPELL_SHADOW_BOLT = 12471,
+ SPELL_SEED_OF_CORRUPTION = 44141,
+ SPELL_CURSE_OF_AGONY = 14875,
+ SPELL_FEAR = 38595,
+ SPELL_IMP_FIREBALL = 44164,
+ SPELL_SUMMON_IMP = 44163
+};
+
+struct boss_ellris_duskhallowAI : public boss_priestess_lackey_commonAI
+{
+ //Warlock
+ boss_ellris_duskhallowAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Immolate_Timer;
+ uint32 Shadow_Bolt_Timer;
+ uint32 Seed_of_Corruption_Timer;
+ uint32 Curse_of_Agony_Timer;
+ uint32 Fear_Timer;
+
+ void Reset()
+ {
+ Immolate_Timer = 6000;
+ Shadow_Bolt_Timer = 3000;
+ Seed_of_Corruption_Timer = 2000;
+ Curse_of_Agony_Timer = 1000;
+ Fear_Timer = 10000;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void Aggro(Unit* /*pWho*/)
+ {
+ DoCast(me, SPELL_SUMMON_IMP);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Immolate_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_IMMOLATE);
+ Immolate_Timer = 6000;
+ } else Immolate_Timer -= diff;
+
+ if (Shadow_Bolt_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
+ Shadow_Bolt_Timer = 5000;
+ } else Shadow_Bolt_Timer -= diff;
+
+ if (Seed_of_Corruption_Timer <= diff)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_SEED_OF_CORRUPTION);
+
+ Seed_of_Corruption_Timer = 10000;
+ } else Seed_of_Corruption_Timer -= diff;
+
+ if (Curse_of_Agony_Timer <= diff)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_CURSE_OF_AGONY);
+
+ Curse_of_Agony_Timer = 13000;
+ } else Curse_of_Agony_Timer -= diff;
+
+ if (Fear_Timer <= diff)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_FEAR);
+
+ Fear_Timer = 10000;
+ } else Fear_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_ellris_duskhallow(Creature* pCreature)
+{
+ return new boss_ellris_duskhallowAI(pCreature);
+}
+
+enum eKickDown
+{
+ SPELL_KNOCKDOWN = 11428,
+ SPELL_SNAP_KICK = 46182
+};
+
+struct boss_eramas_brightblazeAI : public boss_priestess_lackey_commonAI
+{
+ //Monk
+ boss_eramas_brightblazeAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Knockdown_Timer;
+ uint32 Snap_Kick_Timer;
+
+ void Reset()
+ {
+ Knockdown_Timer = 6000;
+ Snap_Kick_Timer = 4500;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Knockdown_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_KNOCKDOWN);
+ Knockdown_Timer = 6000;
+ } else Knockdown_Timer -= diff;
+
+ if (Snap_Kick_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_SNAP_KICK);
+ Snap_Kick_Timer = 4500;
+ } else Snap_Kick_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_eramas_brightblaze(Creature* pCreature)
+{
+ return new boss_eramas_brightblazeAI(pCreature);
+}
+
+enum eMageSpells
+{
+ SPELL_POLYMORPH = 13323,
+ SPELL_ICE_BLOCK = 27619,
+ SPELL_BLIZZARD = 44178,
+ SPELL_ICE_LANCE = 46194,
+ SPELL_CONE_OF_COLD = 38384,
+ SPELL_FROSTBOLT = 15043,
+ SPELL_BLINK = 14514
+};
+
+struct boss_yazzaiAI : public boss_priestess_lackey_commonAI
+{
+ //Mage
+ boss_yazzaiAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ bool HasIceBlocked;
+
+ uint32 Polymorph_Timer;
+ uint32 Ice_Block_Timer;
+ uint32 Wait_Timer;
+ uint32 Blizzard_Timer;
+ uint32 Ice_Lance_Timer;
+ uint32 Cone_of_Cold_Timer;
+ uint32 Frostbolt_Timer;
+ uint32 Blink_Timer;
+
+ void Reset()
+ {
+ HasIceBlocked = false;
+
+ Polymorph_Timer = 1000;
+ Ice_Block_Timer = 20000;
+ Wait_Timer = 10000;
+ Blizzard_Timer = 8000;
+ Ice_Lance_Timer = 12000;
+ Cone_of_Cold_Timer = 10000;
+ Frostbolt_Timer = 3000;
+ Blink_Timer = 8000;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Polymorph_Timer <= diff)
+ {
+ if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ {
+ DoCast(pTarget, SPELL_POLYMORPH);
+ Polymorph_Timer = 20000;
+ }
+ } else Polymorph_Timer -= diff;
+
+ if (((me->GetHealth()*100 / me->GetMaxHealth()) < 35) && !HasIceBlocked)
+ {
+ DoCast(me, SPELL_ICE_BLOCK);
+ HasIceBlocked = true;
+ }
+
+ if (Blizzard_Timer <= diff)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_BLIZZARD);
+
+ Blizzard_Timer = 8000;
+ } else Blizzard_Timer -= diff;
+
+ if (Ice_Lance_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_ICE_LANCE);
+ Ice_Lance_Timer = 12000;
+ } else Ice_Lance_Timer -= diff;
+
+ if (Cone_of_Cold_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_CONE_OF_COLD);
+ Cone_of_Cold_Timer = 10000;
+ } else Cone_of_Cold_Timer -= diff;
+
+ if (Frostbolt_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FROSTBOLT);
+ Frostbolt_Timer = 8000;
+ } else Frostbolt_Timer -= diff;
+
+ if (Blink_Timer <= diff)
+ {
+ bool InMeleeRange = false;
+ std::list<HostileReference*>& t_list = me->getThreatManager().getThreatList();
+ for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
+ {
+ if (Unit *pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid()))
+ {
+ //if in melee range
+ if (pTarget->IsWithinDistInMap(me, 5))
+ {
+ InMeleeRange = true;
+ break;
+ }
+ }
+ }
+
+ //if anybody is in melee range than escape by blink
+ if (InMeleeRange)
+ DoCast(me, SPELL_BLINK);
+
+ Blink_Timer = 8000;
+ } else Blink_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_yazzai(Creature* pCreature)
+{
+ return new boss_yazzaiAI(pCreature);
+}
+
+enum eWarriorSpells
+{
+ SPELL_INTERCEPT_STUN = 27577,
+ SPELL_DISARM = 27581,
+ SPELL_PIERCING_HOWL = 23600,
+ SPELL_FRIGHTENING_SHOUT = 19134,
+ SPELL_HAMSTRING = 27584,
+ SPELL_BATTLE_SHOUT = 27578,
+ SPELL_MORTAL_STRIKE = 44268
+};
+
+struct boss_warlord_salarisAI : public boss_priestess_lackey_commonAI
+{
+ //Warrior
+ boss_warlord_salarisAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Intercept_Stun_Timer;
+ uint32 Disarm_Timer;
+ uint32 Piercing_Howl_Timer;
+ uint32 Frightening_Shout_Timer;
+ uint32 Hamstring_Timer;
+ uint32 Mortal_Strike_Timer;
+
+ void Reset()
+ {
+ Intercept_Stun_Timer = 500;
+ Disarm_Timer = 6000;
+ Piercing_Howl_Timer = 10000;
+ Frightening_Shout_Timer = 18000;
+ Hamstring_Timer = 4500;
+ Mortal_Strike_Timer = 8000;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void EnterCombat(Unit* /*who*/)
+ {
+ DoCast(me, SPELL_BATTLE_SHOUT);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Intercept_Stun_Timer <= diff)
+ {
+ bool InMeleeRange = false;
+ std::list<HostileReference*>& t_list = me->getThreatManager().getThreatList();
+ for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
+ {
+ if (Unit *pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid()))
+ {
+ //if in melee range
+ if (pTarget->IsWithinDistInMap(me, ATTACK_DISTANCE))
+ {
+ InMeleeRange = true;
+ break;
+ }
+ }
+ }
+
+ //if nobody is in melee range than try to use Intercept
+ if (!InMeleeRange)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_INTERCEPT_STUN);
+ }
+
+ Intercept_Stun_Timer = 10000;
+ } else Intercept_Stun_Timer -= diff;
+
+ if (Disarm_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_DISARM);
+ Disarm_Timer = 6000;
+ } else Disarm_Timer -= diff;
+
+ if (Hamstring_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_HAMSTRING);
+ Hamstring_Timer = 4500;
+ } else Hamstring_Timer -= diff;
+
+ if (Mortal_Strike_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_MORTAL_STRIKE);
+ Mortal_Strike_Timer = 4500;
+ } else Mortal_Strike_Timer -= diff;
+
+ if (Piercing_Howl_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_PIERCING_HOWL);
+ Piercing_Howl_Timer = 10000;
+ } else Piercing_Howl_Timer -= diff;
+
+ if (Frightening_Shout_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FRIGHTENING_SHOUT);
+ Frightening_Shout_Timer = 18000;
+ } else Frightening_Shout_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_warlord_salaris(Creature* pCreature)
+{
+ return new boss_warlord_salarisAI(pCreature);
+}
+
+enum eHunterSpells
+{
+ SPELL_AIMED_SHOT = 44271,
+ SPELL_SHOOT = 15620,
+ SPELL_CONCUSSIVE_SHOT = 27634,
+ SPELL_MULTI_SHOT = 31942,
+ SPELL_WING_CLIP = 44286,
+ SPELL_FREEZING_TRAP = 44136,
+
+ NPC_SLIVER = 24552
+};
+
+struct boss_garaxxasAI : public boss_priestess_lackey_commonAI
+{
+ //Hunter
+ boss_garaxxasAI(Creature *c) : boss_priestess_lackey_commonAI(c) { m_uiPetGUID = 0; }
+
+ uint64 m_uiPetGUID;
+
+ uint32 Aimed_Shot_Timer;
+ uint32 Shoot_Timer;
+ uint32 Concussive_Shot_Timer;
+ uint32 Multi_Shot_Timer;
+ uint32 Wing_Clip_Timer;
+ uint32 Freezing_Trap_Timer;
+
+ void Reset()
+ {
+ Aimed_Shot_Timer = 6000;
+ Shoot_Timer = 2500;
+ Concussive_Shot_Timer = 8000;
+ Multi_Shot_Timer = 10000;
+ Wing_Clip_Timer = 4000;
+ Freezing_Trap_Timer = 15000;
+
+ Unit* pPet = Unit::GetUnit(*me,m_uiPetGUID);
+ if (!pPet)
+ me->SummonCreature(NPC_SLIVER, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void JustSummoned(Creature* pSummoned)
+ {
+ m_uiPetGUID = pSummoned->GetGUID();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (me->IsWithinDistInMap(me->getVictim(), ATTACK_DISTANCE))
+ {
+ if (Wing_Clip_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_WING_CLIP);
+ Wing_Clip_Timer = 4000;
+ } else Wing_Clip_Timer -= diff;
+
+ if (Freezing_Trap_Timer <= diff)
+ {
+ //attempt find go summoned from spell (casted by me)
+ GameObject* pGo = me->GetGameObject(SPELL_FREEZING_TRAP);
+
+ //if we have a pGo, we need to wait (only one trap at a time)
+ if (pGo)
+ Freezing_Trap_Timer = 2500;
+ else
+ {
+ //if pGo does not exist, then we can cast
+ DoCast(me->getVictim(), SPELL_FREEZING_TRAP);
+ Freezing_Trap_Timer = 15000;
+ }
+ } else Freezing_Trap_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ else
+ {
+ if (Concussive_Shot_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_CONCUSSIVE_SHOT);
+ Concussive_Shot_Timer = 8000;
+ } else Concussive_Shot_Timer -= diff;
+
+ if (Multi_Shot_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_MULTI_SHOT);
+ Multi_Shot_Timer = 10000;
+ } else Multi_Shot_Timer -= diff;
+
+ if (Aimed_Shot_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_AIMED_SHOT);
+ Aimed_Shot_Timer = 6000;
+ } else Aimed_Shot_Timer -= diff;
+
+ if (Shoot_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_SHOOT);
+ Shoot_Timer = 2500;
+ } else Shoot_Timer -= diff;
+ }
+ }
+};
+
+CreatureAI* GetAI_garaxxas(Creature* pCreature)
+{
+ return new boss_garaxxasAI(pCreature);
+}
+
+enum Spells
+{
+ SPELL_WINDFURY_TOTEM = 27621,
+ SPELL_WAR_STOMP = 46026,
+ SPELL_PURGE = 27626,
+ SPELL_LESSER_HEALING_WAVE = 44256,
+ SPELL_FROST_SHOCK = 21401,
+ SPELL_FIRE_NOVA_TOTEM = 44257,
+ SPELL_EARTHBIND_TOTEM = 15786
+};
+
+struct boss_apokoAI : public boss_priestess_lackey_commonAI
+{
+ //Shaman
+ boss_apokoAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Totem_Timer;
+ uint8 Totem_Amount;
+ uint32 War_Stomp_Timer;
+ uint32 Purge_Timer;
+ uint32 Healing_Wave_Timer;
+ uint32 Frost_Shock_Timer;
+
+ void Reset()
+ {
+ Totem_Timer = 2000;
+ Totem_Amount = 1;
+ War_Stomp_Timer = 10000;
+ Purge_Timer = 8000;
+ Healing_Wave_Timer = 5000;
+ Frost_Shock_Timer = 7000;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Totem_Timer <= diff)
+ {
+ DoCast(me, RAND(SPELL_WINDFURY_TOTEM,SPELL_FIRE_NOVA_TOTEM,SPELL_EARTHBIND_TOTEM));
+ ++Totem_Amount;
+ Totem_Timer = Totem_Amount*2000;
+ } else Totem_Timer -= diff;
+
+ if (War_Stomp_Timer <= diff)
+ {
+ DoCast(me, SPELL_WAR_STOMP);
+ War_Stomp_Timer = 10000;
+ } else War_Stomp_Timer -= diff;
+
+ if (Purge_Timer <= diff)
+ {
+ if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pUnit, SPELL_PURGE);
+
+ Purge_Timer = 15000;
+ } else Purge_Timer -= diff;
+
+ if (Frost_Shock_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FROST_SHOCK);
+ Frost_Shock_Timer = 7000;
+ } else Frost_Shock_Timer -= diff;
+
+ if (Healing_Wave_Timer <= diff)
+ {
+ // std::vector<Add*>::const_iterator itr = Group.begin() + rand()%Group.size();
+ // uint64 guid = (*itr)->guid;
+ // if (guid)
+ // {
+ // Unit* pAdd = Unit::GetUnit(*me, (*itr)->guid);
+ // if (pAdd && pAdd->isAlive())
+ // {
+ DoCast(me, SPELL_LESSER_HEALING_WAVE);
+ Healing_Wave_Timer = 5000;
+ // }
+ // }
+ } else Healing_Wave_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_apoko(Creature* pCreature)
+{
+ return new boss_apokoAI(pCreature);
+}
+
+enum eEngineerSpells
+{
+ SPELL_GOBLIN_DRAGON_GUN = 44272,
+ SPELL_ROCKET_LAUNCH = 44137,
+ SPELL_RECOMBOBULATE = 44274,
+ SPELL_HIGH_EXPLOSIVE_SHEEP = 44276,
+ SPELL_FEL_IRON_BOMB = 46024,
+ SPELL_SHEEP_EXPLOSION = 44279
+};
+
+struct boss_zelfanAI : public boss_priestess_lackey_commonAI
+{
+ //Engineer
+ boss_zelfanAI(Creature *c) : boss_priestess_lackey_commonAI(c) {}
+
+ uint32 Goblin_Dragon_Gun_Timer;
+ uint32 Rocket_Launch_Timer;
+ uint32 Recombobulate_Timer;
+ uint32 High_Explosive_Sheep_Timer;
+ uint32 Fel_Iron_Bomb_Timer;
+
+ void Reset()
+ {
+ Goblin_Dragon_Gun_Timer = 20000;
+ Rocket_Launch_Timer = 7000;
+ Recombobulate_Timer = 4000;
+ High_Explosive_Sheep_Timer = 10000;
+ Fel_Iron_Bomb_Timer = 15000;
+
+ boss_priestess_lackey_commonAI::Reset();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ boss_priestess_lackey_commonAI::UpdateAI(diff);
+
+ if (Goblin_Dragon_Gun_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_GOBLIN_DRAGON_GUN);
+ Goblin_Dragon_Gun_Timer = 10000;
+ } else Goblin_Dragon_Gun_Timer -= diff;
+
+ if (Rocket_Launch_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_ROCKET_LAUNCH);
+ Rocket_Launch_Timer = 9000;
+ } else Rocket_Launch_Timer -= diff;
+
+ if (Fel_Iron_Bomb_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FEL_IRON_BOMB);
+ Fel_Iron_Bomb_Timer = 15000;
+ } else Fel_Iron_Bomb_Timer -= diff;
+
+ if (Recombobulate_Timer <= diff)
+ {
+ for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
+ {
+ if (Unit* pAdd = Unit::GetUnit(*me, m_auiLackeyGUIDs[i]))
+ {
+ if (pAdd->IsPolymorphed())
+ {
+ DoCast(pAdd, SPELL_RECOMBOBULATE);
+ break;
+ }
+ }
+ }
+ Recombobulate_Timer = 2000;
+ } else Recombobulate_Timer -= diff;
+
+ if (High_Explosive_Sheep_Timer <= diff)
+ {
+ DoCast(me, SPELL_HIGH_EXPLOSIVE_SHEEP);
+ High_Explosive_Sheep_Timer = 65000;
+ } else High_Explosive_Sheep_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_zelfan(Creature* pCreature)
+{
+ return new boss_zelfanAI(pCreature);
+}
+
+//struct mob_high_explosive_sheepAI : public ScriptedAI
+//{
+// mob_high_explosive_sheepAI(Creature *c) : ScriptedAI(c) {}
+//
+// uint32 Explosion_Timer;
+//
+// void Reset()
+// {
+// Explosion_Timer = 60000;
+// }
+//
+// void JustDied(Unit *Killer){}
+//
+// void EnterCombat(Unit * /*who*/){}
+//
+// void UpdateAI(const uint32 diff)
+// {
+// if (Explosion_Timer <= diff)
+// {
+// DoCast(me->getVictim(), SPELL_SHEEP_EXPLOSION);
+// }else
+// Explosion_Timer -= diff;
+// }
+//};
+
+//CreatureAI* GetAI_mob_high_explosive_sheep(Creature* pCreature)
+//{
+// return new mob_high_explosive_sheepAI (pCreature);
+//};
+
+void AddSC_boss_priestess_delrissa()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "boss_priestess_delrissa";
+ newscript->GetAI = &GetAI_boss_priestess_delrissa;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_kagani_nightstrike";
+ newscript->GetAI = &GetAI_boss_kagani_nightstrike;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_ellris_duskhallow";
+ newscript->GetAI = &GetAI_ellris_duskhallow;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_eramas_brightblaze";
+ newscript->GetAI = &GetAI_eramas_brightblaze;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_yazzai";
+ newscript->GetAI = &GetAI_yazzai;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_warlord_salaris";
+ newscript->GetAI = &GetAI_warlord_salaris;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_garaxxas";
+ newscript->GetAI = &GetAI_garaxxas;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_apoko";
+ newscript->GetAI = &GetAI_apoko;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "boss_zelfan";
+ newscript->GetAI = &GetAI_zelfan;
+ newscript->RegisterSelf();
+
+ /*newscript = new Script;
+ newscript->Name = "mob_high_explosive_sheep";
+ newscript->GetAI = &GetAI_mob_high_explosive_sheep;
+ newscript->RegisterSelf();*/
+}
+
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
new file mode 100644
index 00000000000..adb0700eabf
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
@@ -0,0 +1,366 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Boss_Selin_Fireheart
+SD%Complete: 90
+SDComment: Heroic and Normal Support. Needs further testing.
+SDCategory: Magister's Terrace
+EndScriptData */
+
+#include "ScriptedPch.h"
+#include "magisters_terrace.h"
+
+#define SAY_AGGRO -1585000
+#define SAY_ENERGY -1585001
+#define SAY_EMPOWERED -1585002
+#define SAY_KILL_1 -1585003
+#define SAY_KILL_2 -1585004
+#define SAY_DEATH -1585005
+#define EMOTE_CRYSTAL -1585006
+
+//Crystal effect spells
+#define SPELL_FEL_CRYSTAL_COSMETIC 44374
+#define SPELL_FEL_CRYSTAL_DUMMY 44329
+#define SPELL_FEL_CRYSTAL_VISUAL 44355
+#define SPELL_MANA_RAGE 44320 // This spell triggers 44321, which changes scale and regens mana Requires an entry in spell_script_target
+
+//Selin's spells
+#define SPELL_DRAIN_LIFE 44294
+#define SPELL_FEL_EXPLOSION 44314
+
+#define SPELL_DRAIN_MANA 46153 // Heroic only
+
+#define CRYSTALS_NUMBER 5
+#define DATA_CRYSTALS 6
+
+#define CREATURE_FEL_CRYSTAL 24722
+
+struct boss_selin_fireheartAI : public ScriptedAI
+{
+ boss_selin_fireheartAI(Creature* c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+
+ Crystals.clear();
+ //GUIDs per instance is static, so we only need to load them once.
+ if (pInstance)
+ {
+ uint32 size = pInstance->GetData(DATA_FEL_CRYSTAL_SIZE);
+ for (uint8 i = 0; i < size; ++i)
+ {
+ uint64 guid = pInstance->GetData64(DATA_FEL_CRYSTAL);
+ debug_log("TSCR: Selin: Adding Fel Crystal %u to list", guid);
+ Crystals.push_back(guid);
+ }
+ }
+ }
+
+ ScriptedInstance* pInstance;
+
+ std::list<uint64> Crystals;
+
+ uint32 DrainLifeTimer;
+ uint32 DrainManaTimer;
+ uint32 FelExplosionTimer;
+ uint32 DrainCrystalTimer;
+ uint32 EmpowerTimer;
+
+ bool IsDraining;
+ bool DrainingCrystal;
+
+ uint64 CrystalGUID; // This will help us create a pointer to the crystal we are draining. We store GUIDs, never units in case unit is deleted/offline (offline if player of course).
+
+ void Reset()
+ {
+ if (pInstance)
+ {
+ //for (uint8 i = 0; i < CRYSTALS_NUMBER; ++i)
+ for (std::list<uint64>::const_iterator itr = Crystals.begin(); itr != Crystals.end(); ++itr)
+ {
+ //Unit* pUnit = Unit::GetUnit(*me, FelCrystals[i]);
+ Unit* pUnit = Unit::GetUnit(*me, *itr);
+ if (pUnit)
+ {
+ if (!pUnit->isAlive())
+ CAST_CRE(pUnit)->Respawn(); // Let the core handle setting death state, etc.
+
+ // Only need to set unselectable flag. You can't attack unselectable units so non_attackable flag is not necessary here.
+ pUnit->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ }
+ }
+
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), true);
+ // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
+ // Small door opened after event are expected to be closed by default
+ // Set Inst data for encounter
+ pInstance->SetData(DATA_SELIN_EVENT, NOT_STARTED);
+ } else error_log(ERROR_INST_DATA);
+
+ DrainLifeTimer = 3000 + rand()%4000;
+ DrainManaTimer = DrainLifeTimer + 5000;
+ FelExplosionTimer = 2100;
+ DrainCrystalTimer = 10000 + rand()%5000;
+ DrainCrystalTimer = 20000 + rand()%5000;
+ EmpowerTimer = 10000;
+
+ IsDraining = false;
+ DrainingCrystal = false;
+ CrystalGUID = 0;
+ }
+
+ void SelectNearestCrystal()
+ {
+ if (Crystals.empty())
+ return;
+
+ //float ShortestDistance = 0;
+ CrystalGUID = 0;
+ Unit* pCrystal = NULL;
+ Unit* CrystalChosen = NULL;
+ //for (uint8 i = 0; i < CRYSTALS_NUMBER; ++i)
+ for (std::list<uint64>::const_iterator itr = Crystals.begin(); itr != Crystals.end(); ++itr)
+ {
+ pCrystal = NULL;
+ //pCrystal = Unit::GetUnit(*me, FelCrystals[i]);
+ pCrystal = Unit::GetUnit(*me, *itr);
+ if (pCrystal && pCrystal->isAlive())
+ {
+ // select nearest
+ if (!CrystalChosen || me->GetDistanceOrder(pCrystal, CrystalChosen, false))
+ {
+ CrystalGUID = pCrystal->GetGUID();
+ CrystalChosen = pCrystal; // Store a copy of pCrystal so we don't need to recreate a pointer to closest crystal for the movement and yell.
+ }
+ }
+ }
+ if (CrystalChosen)
+ {
+ DoScriptText(SAY_ENERGY, me);
+ DoScriptText(EMOTE_CRYSTAL, me);
+
+ CrystalChosen->CastSpell(CrystalChosen, SPELL_FEL_CRYSTAL_COSMETIC, true);
+
+ float x, y, z; // coords that we move to, close to the crystal.
+ CrystalChosen->GetClosePoint(x, y, z, me->GetObjectSize(), CONTACT_DISTANCE);
+
+ me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
+ me->GetMotionMaster()->MovePoint(1, x, y, z);
+ DrainingCrystal = true;
+ }
+ }
+
+ void ShatterRemainingCrystals()
+ {
+ if (Crystals.empty())
+ return;
+
+ //for (uint8 i = 0; i < CRYSTALS_NUMBER; ++i)
+ for (std::list<uint64>::const_iterator itr = Crystals.begin(); itr != Crystals.end(); ++itr)
+ {
+ //Creature* pCrystal = (Unit::GetCreature(*me, FelCrystals[i]));
+ Creature* pCrystal = Unit::GetCreature(*me, *itr);
+ if (pCrystal && pCrystal->isAlive())
+ pCrystal->Kill(pCrystal);
+ }
+ }
+
+ void EnterCombat(Unit* /*who*/)
+ {
+ DoScriptText(SAY_AGGRO, me);
+
+ if (pInstance)
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), false);
+ //Close the encounter door, open it in JustDied/Reset
+ }
+
+ void KilledUnit(Unit* /*victim*/)
+ {
+ DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), me);
+ }
+
+ void MovementInform(uint32 type, uint32 id)
+ {
+ if (type == POINT_MOTION_TYPE && id == 1)
+ {
+ Unit* CrystalChosen = Unit::GetUnit(*me, CrystalGUID);
+ if (CrystalChosen && CrystalChosen->isAlive())
+ {
+ // Make the crystal attackable
+ // We also remove NON_ATTACKABLE in case the database has it set.
+ CrystalChosen->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
+ CrystalChosen->CastSpell(me, SPELL_MANA_RAGE, true);
+ IsDraining = true;
+ }
+ else
+ {
+ // Make an error message in case something weird happened here
+ error_log("TSCR: Selin Fireheart unable to drain crystal as the crystal is either dead or despawned");
+ DrainingCrystal = false;
+ }
+ }
+ }
+
+ void JustDied(Unit* /*killer*/)
+ {
+ DoScriptText(SAY_DEATH, me);
+
+ if (!pInstance)
+ return;
+
+ pInstance->SetData(DATA_SELIN_EVENT, DONE); // Encounter complete!
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), true); // Open the encounter door
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_DOOR), true); // Open the door leading further in
+ ShatterRemainingCrystals();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (!DrainingCrystal)
+ {
+ uint32 maxPowerMana = me->GetMaxPower(POWER_MANA);
+ if (maxPowerMana && ((me->GetPower(POWER_MANA)*100 / maxPowerMana) < 10))
+ {
+ if (DrainLifeTimer <= diff)
+ {
+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DRAIN_LIFE);
+ DrainLifeTimer = 10000;
+ } else DrainLifeTimer -= diff;
+
+ // Heroic only
+ if (IsHeroic())
+ {
+ if (DrainManaTimer <= diff)
+ {
+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 1), SPELL_DRAIN_MANA);
+ DrainManaTimer = 10000;
+ } else DrainManaTimer -= diff;
+ }
+ }
+
+ if (FelExplosionTimer <= diff)
+ {
+ if (!me->IsNonMeleeSpellCasted(false))
+ {
+ DoCast(me, SPELL_FEL_EXPLOSION);
+ FelExplosionTimer = 2000;
+ }
+ } else FelExplosionTimer -= diff;
+
+ // If below 10% mana, start recharging
+ maxPowerMana = me->GetMaxPower(POWER_MANA);
+ if (maxPowerMana && ((me->GetPower(POWER_MANA)*100 / maxPowerMana) < 10))
+ {
+ if (DrainCrystalTimer <= diff)
+ {
+ SelectNearestCrystal();
+ if (IsHeroic())
+ DrainCrystalTimer = 10000 + rand()%5000;
+ else
+ DrainCrystalTimer = 20000 + rand()%5000;
+ } else DrainCrystalTimer -= diff;
+ }
+
+ }else
+ {
+ if (IsDraining)
+ {
+ if (EmpowerTimer <= diff)
+ {
+ IsDraining = false;
+ DrainingCrystal = false;
+
+ DoScriptText(SAY_EMPOWERED, me);
+
+ Unit* CrystalChosen = Unit::GetUnit(*me, CrystalGUID);
+ if (CrystalChosen && CrystalChosen->isAlive())
+ // Use Deal Damage to kill it, not setDeathState.
+ CrystalChosen->Kill(CrystalChosen);
+
+ CrystalGUID = 0;
+
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MoveChase(me->getVictim());
+ } else EmpowerTimer -= diff;
+ }
+ }
+
+ DoMeleeAttackIfReady(); // No need to check if we are draining crystal here, as the spell has a stun.
+ }
+};
+
+CreatureAI* GetAI_boss_selin_fireheart(Creature* pCreature)
+{
+ return new boss_selin_fireheartAI (pCreature);
+};
+
+struct mob_fel_crystalAI : public ScriptedAI
+{
+ mob_fel_crystalAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+ void EnterCombat(Unit* /*who*/) {}
+ void AttackStart(Unit* /*who*/) {}
+ void MoveInLineOfSight(Unit* /*who*/) {}
+ void UpdateAI(const uint32 /*diff*/) {}
+
+ void JustDied(Unit* /*killer*/)
+ {
+ if (ScriptedInstance* pInstance = me->GetInstanceData())
+ {
+ Creature* Selin = (Unit::GetCreature(*me, pInstance->GetData64(DATA_SELIN)));
+ if (Selin && Selin->isAlive())
+ {
+ if (CAST_AI(boss_selin_fireheartAI, Selin->AI())->CrystalGUID == me->GetGUID())
+ {
+ // Set this to false if we are the Creature that Selin is draining so his AI flows properly
+ CAST_AI(boss_selin_fireheartAI, Selin->AI())->DrainingCrystal = false;
+ CAST_AI(boss_selin_fireheartAI, Selin->AI())->IsDraining = false;
+ CAST_AI(boss_selin_fireheartAI, Selin->AI())->EmpowerTimer = 10000;
+ if (Selin->getVictim())
+ {
+ Selin->AI()->AttackStart(Selin->getVictim());
+ Selin->GetMotionMaster()->MoveChase(Selin->getVictim());
+ }
+ }
+ }
+ } else error_log(ERROR_INST_DATA);
+ }
+};
+
+CreatureAI* GetAI_mob_fel_crystal(Creature* pCreature)
+{
+ return new mob_fel_crystalAI (pCreature);
+};
+
+void AddSC_boss_selin_fireheart()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "boss_selin_fireheart";
+ newscript->GetAI = &GetAI_boss_selin_fireheart;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_fel_crystal";
+ newscript->GetAI = &GetAI_mob_fel_crystal;
+ newscript->RegisterSelf();
+}
+
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
new file mode 100644
index 00000000000..bc8bd5cec30
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
@@ -0,0 +1,226 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Boss_Vexallus
+SD%Complete: 90
+SDComment: Heroic and Normal support. Needs further testing.
+SDCategory: Magister's Terrace
+EndScriptData */
+
+#include "ScriptedPch.h"
+#include "magisters_terrace.h"
+
+enum eEnums
+{
+ SAY_AGGRO = -1585007,
+ SAY_ENERGY = -1585008,
+ SAY_OVERLOAD = -1585009,
+ SAY_KILL = -1585010,
+ EMOTE_DISCHARGE_ENERGY = -1585011,
+
+ //is this text for real?
+ //#define SAY_DEATH "What...happen...ed."
+
+ //Pure energy spell info
+ SPELL_ENERGY_BOLT = 46156,
+ SPELL_ENERGY_FEEDBACK = 44335,
+
+ //Vexallus spell info
+ SPELL_CHAIN_LIGHTNING = 44318,
+ SPELL_H_CHAIN_LIGHTNING = 46380, //heroic spell
+ SPELL_OVERLOAD = 44353,
+ SPELL_ARCANE_SHOCK = 44319,
+ SPELL_H_ARCANE_SHOCK = 46381, //heroic spell
+
+ SPELL_SUMMON_PURE_ENERGY = 44322, //mod scale -10
+ H_SPELL_SUMMON_PURE_ENERGY1 = 46154, //mod scale -5
+ H_SPELL_SUMMON_PURE_ENERGY2 = 46159, //mod scale -5
+
+ //Creatures
+ NPC_PURE_ENERGY = 24745,
+
+ INTERVAL_MODIFIER = 15,
+ INTERVAL_SWITCH = 6
+};
+
+struct boss_vexallusAI : public ScriptedAI
+{
+ boss_vexallusAI(Creature *c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ }
+
+ ScriptedInstance* pInstance;
+
+ uint32 ChainLightningTimer;
+ uint32 ArcaneShockTimer;
+ uint32 OverloadTimer;
+ uint32 IntervalHealthAmount;
+ bool Enraged;
+
+ void Reset()
+ {
+ ChainLightningTimer = 8000;
+ ArcaneShockTimer = 5000;
+ OverloadTimer = 1200;
+ IntervalHealthAmount = 1;
+ Enraged = false;
+
+ if (pInstance)
+ pInstance->SetData(DATA_VEXALLUS_EVENT, NOT_STARTED);
+ }
+
+ void KilledUnit(Unit * /*victim*/)
+ {
+ DoScriptText(SAY_KILL, me);
+ }
+
+ void JustDied(Unit * /*victim*/)
+ {
+ if (pInstance)
+ pInstance->SetData(DATA_VEXALLUS_EVENT, DONE);
+ }
+
+ void EnterCombat(Unit * /*who*/)
+ {
+ DoScriptText(SAY_AGGRO, me);
+
+ if (pInstance)
+ pInstance->SetData(DATA_VEXALLUS_EVENT, IN_PROGRESS);
+ }
+
+ void JustSummoned(Creature *summoned)
+ {
+ if (Unit *temp = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ summoned->GetMotionMaster()->MoveFollow(temp,0,0);
+
+ //spells are SUMMON_TYPE_GUARDIAN, so using setOwner should be ok
+ summoned->CastSpell(summoned,SPELL_ENERGY_BOLT,false,0,0,me->GetGUID());
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (!Enraged)
+ {
+ //used for check, when Vexallus cast adds 85%, 70%, 55%, 40%, 25%
+ if ((me->GetHealth()*100 / me->GetMaxHealth()) <= (100-(INTERVAL_MODIFIER*IntervalHealthAmount)))
+ {
+ //increase amount, unless we're at 10%, then we switch and return
+ if (IntervalHealthAmount == INTERVAL_SWITCH)
+ {
+ Enraged = true;
+ return;
+ }
+ else
+ ++IntervalHealthAmount;
+
+ DoScriptText(SAY_ENERGY, me);
+ DoScriptText(EMOTE_DISCHARGE_ENERGY, me);
+
+ if (IsHeroic())
+ {
+ DoCast(me, H_SPELL_SUMMON_PURE_ENERGY1, false);
+ DoCast(me, H_SPELL_SUMMON_PURE_ENERGY2, false);
+ }
+ else
+ DoCast(me, SPELL_SUMMON_PURE_ENERGY, false);
+
+ //below are workaround summons, remove when summoning spells w/implicitTarget 73 implemented in the core
+ me->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
+
+ if (IsHeroic())
+ me->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
+ }
+
+ if (ChainLightningTimer <= diff)
+ {
+ if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(pTarget, SPELL_CHAIN_LIGHTNING);
+
+ ChainLightningTimer = 8000;
+ } else ChainLightningTimer -= diff;
+
+ if (ArcaneShockTimer <= diff)
+ {
+ if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ if (pTarget)
+ DoCast(pTarget, SPELL_ARCANE_SHOCK);
+
+ ArcaneShockTimer = 8000;
+ } else ArcaneShockTimer -= diff;
+ }
+ else
+ {
+ if (OverloadTimer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_OVERLOAD);
+
+ OverloadTimer = 2000;
+ } else OverloadTimer -= diff;
+ }
+
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_boss_vexallus(Creature* pCreature)
+{
+ return new boss_vexallusAI (pCreature);
+};
+
+struct mob_pure_energyAI : public ScriptedAI
+{
+ mob_pure_energyAI(Creature *c) : ScriptedAI(c) {}
+
+ void Reset() {}
+
+ void JustDied(Unit* slayer)
+ {
+ if (Unit *temp = me->GetOwner())
+ {
+ if (temp && temp->isAlive())
+ slayer->CastSpell(slayer, SPELL_ENERGY_FEEDBACK, true, 0, 0, temp->GetGUID());
+ }
+ }
+
+ void EnterCombat(Unit * /*who*/) {}
+ void MoveInLineOfSight(Unit * /*who*/) {}
+ void AttackStart(Unit * /*who*/) {}
+};
+
+CreatureAI* GetAI_mob_pure_energy(Creature* pCreature)
+{
+ return new mob_pure_energyAI (pCreature);
+};
+
+void AddSC_boss_vexallus()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "boss_vexallus";
+ newscript->GetAI = &GetAI_boss_vexallus;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "mob_pure_energy";
+ newscript->GetAI = &GetAI_mob_pure_energy;
+ newscript->RegisterSelf();
+}
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
new file mode 100644
index 00000000000..455c03739bc
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
@@ -0,0 +1,205 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Instance_Magisters_Terrace
+SD%Complete: 60
+SDComment: Designed only for Selin Fireheart
+SDCategory: Magister's Terrace
+EndScriptData */
+
+#include "ScriptedPch.h"
+#include "magisters_terrace.h"
+
+#define MAX_ENCOUNTER 4
+
+/*
+0 - Selin Fireheart
+1 - Vexallus
+2 - Priestess Delrissa
+3 - Kael'thas Sunstrider
+*/
+
+struct instance_magisters_terrace : public ScriptedInstance
+{
+ instance_magisters_terrace(Map* pMap) : ScriptedInstance(pMap) {Initialize();}
+
+ uint32 m_auiEncounter[MAX_ENCOUNTER];
+ uint32 DelrissaDeathCount;
+
+ std::list<uint64> FelCrystals;
+ std::list<uint64>::const_iterator CrystalItr;
+
+ uint64 SelinGUID;
+ uint64 DelrissaGUID;
+ uint64 VexallusDoorGUID;
+ uint64 SelinDoorGUID;
+ uint64 SelinEncounterDoorGUID;
+ uint64 DelrissaDoorGUID;
+ uint64 KaelDoorGUID;
+ uint64 KaelStatue[2];
+
+ bool InitializedItr;
+
+ void Initialize()
+ {
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ FelCrystals.clear();
+
+ DelrissaDeathCount = 0;
+
+ SelinGUID = 0;
+ DelrissaGUID = 0;
+ VexallusDoorGUID = 0;
+ SelinDoorGUID = 0;
+ SelinEncounterDoorGUID = 0;
+ DelrissaDoorGUID = 0;
+ KaelDoorGUID = 0;
+ KaelStatue[0] = 0;
+ KaelStatue[1] = 0;
+
+ InitializedItr = false;
+ }
+
+ bool IsEncounterInProgress() const
+ {
+ for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
+ if (m_auiEncounter[i] == IN_PROGRESS)
+ return true;
+ return false;
+ }
+
+ uint32 GetData(uint32 identifier)
+ {
+ switch(identifier)
+ {
+ case DATA_SELIN_EVENT: return m_auiEncounter[0];
+ case DATA_VEXALLUS_EVENT: return m_auiEncounter[1];
+ case DATA_DELRISSA_EVENT: return m_auiEncounter[2];
+ case DATA_KAELTHAS_EVENT: return m_auiEncounter[3];
+ case DATA_DELRISSA_DEATH_COUNT: return DelrissaDeathCount;
+ case DATA_FEL_CRYSTAL_SIZE: return FelCrystals.size();
+ }
+ return 0;
+ }
+
+ void SetData(uint32 identifier, uint32 data)
+ {
+ switch(identifier)
+ {
+ case DATA_SELIN_EVENT: m_auiEncounter[0] = data; break;
+ case DATA_VEXALLUS_EVENT:
+ if (data == DONE)
+ DoUseDoorOrButton(VexallusDoorGUID);
+ m_auiEncounter[1] = data;
+ break;
+ case DATA_DELRISSA_EVENT:
+ if (data == DONE)
+ DoUseDoorOrButton(DelrissaDoorGUID);
+ if (data == IN_PROGRESS)
+ DelrissaDeathCount = 0;
+ m_auiEncounter[2] = data;
+ break;
+ case DATA_KAELTHAS_EVENT: m_auiEncounter[3] = data; break;
+
+ case DATA_DELRISSA_DEATH_COUNT:
+ if (data == SPECIAL)
+ ++DelrissaDeathCount;
+ else
+ DelrissaDeathCount = 0;
+ break;
+ }
+ }
+
+ void OnCreatureCreate(Creature* pCreature, bool /*add*/)
+ {
+ switch(pCreature->GetEntry())
+ {
+ case 24723: SelinGUID = pCreature->GetGUID(); break;
+ case 24560: DelrissaGUID = pCreature->GetGUID(); break;
+ case 24722: FelCrystals.push_back(pCreature->GetGUID()); break;
+ }
+ }
+
+ void OnGameObjectCreate(GameObject* pGo, bool /*add*/)
+ {
+ switch(pGo->GetEntry())
+ {
+ case 187896: VexallusDoorGUID = pGo->GetGUID(); break;
+ //SunwellRaid Gate 02
+ case 187979: SelinDoorGUID = pGo->GetGUID(); break;
+ //Assembly Chamber Door
+ case 188065: SelinEncounterDoorGUID = pGo->GetGUID(); break;
+ case 187770: DelrissaDoorGUID = pGo->GetGUID(); break;
+ case 188064: KaelDoorGUID = pGo->GetGUID(); break;
+ case 188165: KaelStatue[0] = pGo->GetGUID(); break;
+ case 188166: KaelStatue[1] = pGo->GetGUID(); break;
+ }
+ }
+
+ uint64 GetData64(uint32 identifier)
+ {
+ switch(identifier)
+ {
+ case DATA_SELIN: return SelinGUID;
+ case DATA_DELRISSA: return DelrissaGUID;
+ case DATA_VEXALLUS_DOOR: return VexallusDoorGUID;
+ case DATA_SELIN_DOOR: return SelinDoorGUID;
+ case DATA_SELIN_ENCOUNTER_DOOR: return SelinEncounterDoorGUID;
+ case DATA_DELRISSA_DOOR: return DelrissaDoorGUID;
+ case DATA_KAEL_DOOR: return KaelDoorGUID;
+ case DATA_KAEL_STATUE_LEFT: return KaelStatue[0];
+ case DATA_KAEL_STATUE_RIGHT: return KaelStatue[1];
+
+ case DATA_FEL_CRYSTAL:
+ {
+ if (FelCrystals.empty())
+ {
+ error_log("TSCR: Magisters Terrace: No Fel Crystals loaded in Inst Data");
+ return 0;
+ }
+
+ if (!InitializedItr)
+ {
+ CrystalItr = FelCrystals.begin();
+ InitializedItr = true;
+ }
+
+ uint64 guid = *CrystalItr;
+ ++CrystalItr;
+ return guid;
+ }
+ }
+ return 0;
+ }
+};
+
+InstanceData* GetInstanceData_instance_magisters_terrace(Map* pMap)
+{
+ return new instance_magisters_terrace(pMap);
+}
+
+void AddSC_instance_magisters_terrace()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "instance_magisters_terrace";
+ newscript->GetInstanceData = &GetInstanceData_instance_magisters_terrace;
+ newscript->RegisterSelf();
+}
+
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp
new file mode 100644
index 00000000000..e46da9cb1bf
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp
@@ -0,0 +1,174 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Magisters_Terrace
+SD%Complete: 100
+SDComment: Quest support: 11490(post-event)
+SDCategory: Magisters Terrace
+EndScriptData */
+
+/* ContentData
+npc_kalecgos
+EndContentData */
+
+#include "ScriptedPch.h"
+
+/*######
+## npc_kalecgos
+######*/
+
+enum eEnums
+{
+ SPELL_TRANSFORM_TO_KAEL = 44670,
+ SPELL_ORB_KILL_CREDIT = 46307,
+ NPC_KAEL = 24848, //human form entry
+ POINT_ID_LAND = 1
+};
+
+const float afKaelLandPoint[] = {225.045, -276.236, -5.434};
+
+#define GOSSIP_ITEM_KAEL_1 "Who are you?"
+#define GOSSIP_ITEM_KAEL_2 "What can we do to assist you?"
+#define GOSSIP_ITEM_KAEL_3 "What brings you to the Sunwell?"
+#define GOSSIP_ITEM_KAEL_4 "You're not alone here?"
+#define GOSSIP_ITEM_KAEL_5 "What would Kil'jaeden want with a mortal woman?"
+
+// This is friendly keal that appear after used Orb.
+// If we assume DB handle summon, summon appear somewhere outside the platform where Orb is
+struct npc_kalecgosAI : public ScriptedAI
+{
+ npc_kalecgosAI(Creature* pCreature) : ScriptedAI(pCreature) {}
+
+ uint32 m_uiTransformTimer;
+
+ void Reset()
+ {
+ m_uiTransformTimer = 0;
+
+ // we must assume he appear as dragon somewhere outside the platform of orb, and then move directly to here
+ if (me->GetEntry() != NPC_KAEL)
+ me->GetMotionMaster()->MovePoint(POINT_ID_LAND, afKaelLandPoint[0], afKaelLandPoint[1], afKaelLandPoint[2]);
+ }
+
+ void MovementInform(uint32 uiType, uint32 uiPointId)
+ {
+ if (uiType != POINT_MOTION_TYPE)
+ return;
+
+ if (uiPointId == POINT_ID_LAND)
+ m_uiTransformTimer = MINUTE*IN_MILISECONDS;
+ }
+
+ // some targeting issues with the spell, so use this workaround as temporary solution
+ void DoWorkaroundForQuestCredit()
+ {
+ Map* pMap = me->GetMap();
+
+ if (!pMap || pMap->IsHeroic())
+ return;
+
+ Map::PlayerList const &lList = pMap->GetPlayers();
+
+ if (lList.isEmpty())
+ return;
+
+ SpellEntry const* pSpell = GetSpellStore()->LookupEntry(SPELL_ORB_KILL_CREDIT);
+
+ for (Map::PlayerList::const_iterator i = lList.begin(); i != lList.end(); ++i)
+ {
+ if (Player* pPlayer = i->getSource())
+ {
+ if (pSpell && pSpell->EffectMiscValue[0])
+ pPlayer->KilledMonsterCredit(pSpell->EffectMiscValue[0], 0);
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 uiDiff)
+ {
+ if (m_uiTransformTimer)
+ {
+ if (m_uiTransformTimer <= uiDiff)
+ {
+ DoCast(me, SPELL_ORB_KILL_CREDIT, false);
+ DoWorkaroundForQuestCredit();
+
+ // Transform and update entry, now ready for quest/read gossip
+ DoCast(me, SPELL_TRANSFORM_TO_KAEL, false);
+ me->UpdateEntry(NPC_KAEL);
+
+ m_uiTransformTimer = 0;
+ } else m_uiTransformTimer -= uiDiff;
+ }
+ }
+};
+
+CreatureAI* GetAI_npc_kalecgos(Creature* pCreature)
+{
+ return new npc_kalecgosAI(pCreature);
+}
+
+bool GossipHello_npc_kalecgos(Player* pPlayer, Creature* pCreature)
+{
+ if (pCreature->isQuestGiver())
+ pPlayer->PrepareQuestMenu(pCreature->GetGUID());
+
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
+ pPlayer->SEND_GOSSIP_MENU(12498, pCreature->GetGUID());
+
+ return true;
+}
+
+bool GossipSelect_npc_kalecgos(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
+{
+ switch(uiAction)
+ {
+ case GOSSIP_ACTION_INFO_DEF:
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+ pPlayer->SEND_GOSSIP_MENU(12500, pCreature->GetGUID());
+ break;
+ case GOSSIP_ACTION_INFO_DEF+1:
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
+ pPlayer->SEND_GOSSIP_MENU(12502, pCreature->GetGUID());
+ break;
+ case GOSSIP_ACTION_INFO_DEF+2:
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
+ pPlayer->SEND_GOSSIP_MENU(12606, pCreature->GetGUID());
+ break;
+ case GOSSIP_ACTION_INFO_DEF+3:
+ pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
+ pPlayer->SEND_GOSSIP_MENU(12607, pCreature->GetGUID());
+ break;
+ case GOSSIP_ACTION_INFO_DEF+4:
+ pPlayer->SEND_GOSSIP_MENU(12608, pCreature->GetGUID());
+ break;
+ }
+
+ return true;
+}
+
+void AddSC_magisters_terrace()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "npc_kalecgos";
+ newscript->GetAI = &GetAI_npc_kalecgos;
+ newscript->pGossipHello = &GossipHello_npc_kalecgos;
+ newscript->pGossipSelect = &GossipSelect_npc_kalecgos;
+ newscript->RegisterSelf();
+}
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
new file mode 100644
index 00000000000..d6419ea409c
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * This program is free software licensed under GPL version 2
+ * Please see the included DOCS/LICENSE.TXT for more information */
+
+#ifndef DEF_MAGISTERS_TERRACE_H
+#define DEF_MAGISTERS_TERRACE_H
+
+#define DATA_SELIN_EVENT 1
+#define DATA_VEXALLUS_EVENT 2
+#define DATA_DELRISSA_EVENT 3
+#define DATA_KAELTHAS_EVENT 4
+
+#define DATA_SELIN 5
+#define DATA_FEL_CRYSTAL 6
+#define DATA_FEL_CRYSTAL_SIZE 7
+
+#define DATA_VEXALLUS_DOOR 8
+#define DATA_SELIN_DOOR 9
+#define DATA_DELRISSA 10
+#define DATA_DELRISSA_DOOR 11
+#define DATA_SELIN_ENCOUNTER_DOOR 12
+
+#define DATA_KAEL_DOOR 13
+#define DATA_KAEL_STATUE_LEFT 14
+#define DATA_KAEL_STATUE_RIGHT 15
+
+#define DATA_DELRISSA_DEATH_COUNT 16
+
+#define ERROR_INST_DATA "TSCR Error: Instance Data not set properly for Magister's Terrace instance (map 585). Encounters will be buggy."
+#endif
+