summaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_arena.cpp18
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp30
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp4
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp83
-rw-r--r--src/server/scripts/Commands/cs_mmaps.cpp35
-rw-r--r--src/server/scripts/Commands/cs_modify.cpp10
-rw-r--r--src/server/scripts/Commands/cs_ticket.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp15
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp31
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_eviscerator.cpp19
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp25
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp19
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_hedrum.cpp21
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp37
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_okthor.cpp29
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mor_grayhoof.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp17
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp311
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp76
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp34
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp23
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp22
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp66
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp25
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp89
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp80
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp30
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/zone_duskwood.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp20
-rw-r--r--src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/zone_ghostlands.cpp29
-rw-r--r--src/server/scripts/EasternKingdoms/zone_hinterlands.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp160
-rw-r--r--src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp3
-rw-r--r--src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp21
-rw-r--r--src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/zone_undercity.cpp98
-rw-r--r--src/server/scripts/EasternKingdoms/zone_westfall.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/zone_wetlands.cpp9
-rw-r--r--src/server/scripts/Events/brewfest.cpp16
-rw-r--r--src/server/scripts/Events/hallows_end.cpp34
-rw-r--r--src/server/scripts/Events/love_in_air.cpp2
-rw-r--r--src/server/scripts/Events/winter_veil.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp22
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp16
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp31
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp16
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp33
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp22
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp30
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp210
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp14
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp159
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp56
-rw-r--r--src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp2
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp80
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp6
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp8
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp2
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp6
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp2
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp6
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp2
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp2
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp8
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp2
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp12
-rw-r--r--src/server/scripts/Kalimdor/kalimdor_script_loader.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_ashenvale.cpp3
-rw-r--r--src/server/scripts/Kalimdor/zone_azshara.cpp361
-rw-r--r--src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp5
-rw-r--r--src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_darkshore.cpp9
-rw-r--r--src/server/scripts/Kalimdor/zone_desolace.cpp16
-rw-r--r--src/server/scripts/Kalimdor/zone_moonglade.cpp3
-rw-r--r--src/server/scripts/Kalimdor/zone_silithus.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp5
-rw-r--r--src/server/scripts/Kalimdor/zone_tanaris.cpp3
-rw-r--r--src/server/scripts/Kalimdor/zone_the_barrens.cpp18
-rw-r--r--src/server/scripts/Kalimdor/zone_thousand_needles.cpp10
-rw-r--r--src/server/scripts/Kalimdor/zone_ungoro_crater.cpp3
-rw-r--r--src/server/scripts/Kalimdor/zone_winterspring.cpp13
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h6
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp485
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp10
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp13
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp111
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp25
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp8
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp24
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp8
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp5
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp16
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp77
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp121
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp61
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp13
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp15
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp218
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp4
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp144
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h3
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp2
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp22
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp4
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp10
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp22
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp28
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp70
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp12
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp28
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp42
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_eck.cpp23
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp239
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp80
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/gundrak.h13
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp39
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp18
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp19
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp58
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp41
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp12
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp22
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp20
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp34
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp117
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp43
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp84
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp12
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp30
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp16
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp11
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp39
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp14
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp20
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp19
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp18
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp54
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h5
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp7
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp6
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp11
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp15
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp13
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp9
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp541
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp312
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp264
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp657
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h41
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp229
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp36
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp53
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp21
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp88
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp11
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp48
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp68
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp33
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp107
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp43
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp92
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp59
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp106
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp34
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp71
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp29
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp57
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp10
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp26
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp7
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp5
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp10
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp40
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp27
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp9
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp27
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp27
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp10
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp2
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp4
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp2
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp4
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.cpp62
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp38
-rw-r--r--src/server/scripts/Northrend/zone_crystalsong_forest.cpp24
-rw-r--r--src/server/scripts/Northrend/zone_dalaran.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp44
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp66
-rw-r--r--src/server/scripts/Northrend/zone_howling_fjord.cpp23
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp50
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp15
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp51
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp6
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp2
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp6
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp2
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp20
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp10
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp8
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp6
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp6
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp42
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_rokmar_the_crackler.cpp5
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SlavePens/the_slave_pens.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/underbog/boss_ghazan.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp2
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_gruul.cpp4
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp10
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_porung.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp26
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp52
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp100
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp18
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp34
-rw-r--r--src/server/scripts/Outland/zone_hellfire_peninsula.cpp12
-rw-r--r--src/server/scripts/Outland/zone_nagrand.cpp14
-rw-r--r--src/server/scripts/Outland/zone_netherstorm.cpp16
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp32
-rw-r--r--src/server/scripts/Outland/zone_shattrath_city.cpp5
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp15
-rw-r--r--src/server/scripts/Pet/pet_generic.cpp22
-rw-r--r--src/server/scripts/Pet/pet_mage.cpp17
-rw-r--r--src/server/scripts/Pet/pet_shaman.cpp14
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp160
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp2
-rw-r--r--src/server/scripts/Spells/spell_item.cpp100
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp24
-rw-r--r--src/server/scripts/World/boss_emerald_dragons.cpp32
-rw-r--r--src/server/scripts/World/go_scripts.cpp58
-rw-r--r--src/server/scripts/World/npc_stave_of_ancients.cpp120
-rw-r--r--src/server/scripts/World/npcs_special.cpp7
319 files changed, 4768 insertions, 5871 deletions
diff --git a/src/server/scripts/Commands/cs_arena.cpp b/src/server/scripts/Commands/cs_arena.cpp
index 69fa60e562..fe65d83984 100644
--- a/src/server/scripts/Commands/cs_arena.cpp
+++ b/src/server/scripts/Commands/cs_arena.cpp
@@ -51,7 +51,7 @@ public:
{ "rename", HandleArenaRenameCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "captain", HandleArenaCaptainCommand, SEC_ADMINISTRATOR, Console::No },
{ "info", HandleArenaInfoCommand, SEC_GAMEMASTER, Console::Yes },
- { "lookup", HandleArenaLookupCommand, SEC_GAMEMASTER, Console::No },
+ { "lookup", HandleArenaLookupCommand, SEC_GAMEMASTER, Console::Yes },
{ "season", arenaSeasonCommandTable }
};
@@ -209,7 +209,7 @@ public:
handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
for (auto const& itr : arena->GetMembers())
- handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr.Name, itr.Guid.ToString(), itr.PersonalRating, (arena->GetCaptain() == itr.Guid ? "- Captain" : ""));
+ handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr.Name, itr.Guid.GetCounter(), itr.PersonalRating, (arena->GetCaptain() == itr.Guid ? "Captain" : ""));
return true;
}
@@ -224,17 +224,17 @@ public:
{
if (StringContainsStringI(team->GetName(), needle))
{
- if (handler->GetSession())
- {
- handler->PSendSysMessage(LANG_ARENA_LOOKUP, team->GetName(), team->GetId(), team->GetType(), team->GetType());
- found = true;
- continue;
- }
+ handler->PSendSysMessage(LANG_ARENA_LOOKUP, team->GetName(), team->GetId(), team->GetType(), team->GetType());
+ found = true;
+ continue;
}
}
if (!found)
- handler->PSendSysMessage(LANG_ARENA_ERROR_NAME_NOT_FOUND, std::string(needle));
+ {
+ handler->SendErrorMessage(LANG_ARENA_ERROR_NAME_NOT_FOUND, std::string(needle));
+ return false;
+ }
return true;
}
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 40bb89b93b..c2891c0d01 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -100,7 +100,8 @@ public:
{ "dummy", HandleDebugDummyCommand, SEC_ADMINISTRATOR, Console::No },
{ "mapdata", HandleDebugMapDataCommand, SEC_ADMINISTRATOR, Console::No },
{ "boundary", HandleDebugBoundaryCommand, SEC_ADMINISTRATOR, Console::No },
- { "visibilitydata", HandleDebugVisibilityDataCommand, SEC_ADMINISTRATOR, Console::No }
+ { "visibilitydata", HandleDebugVisibilityDataCommand, SEC_ADMINISTRATOR, Console::No },
+ { "zonestats", HandleDebugZoneStatsCommand, SEC_MODERATOR, Console::Yes}
};
static ChatCommandTable commandTable =
{
@@ -432,7 +433,7 @@ public:
}
data.hexlike();
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
handler->PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName());
return true;
}
@@ -1434,6 +1435,31 @@ public:
handler->PSendSysMessage("Zone wide visible objects in zone: {}", zoneWideVisibleObjectsInZone);
return true;
}
+
+ static bool HandleDebugZoneStatsCommand(ChatHandler* handler, Optional<PlayerIdentifier> playerTarget)
+ {
+ if (!playerTarget)
+ playerTarget = PlayerIdentifier::FromTargetOrSelf(handler);
+
+ if (!playerTarget)
+ {
+ handler->SendErrorMessage(LANG_PLAYER_NOT_FOUND);
+ return false;
+ }
+
+ Player* player = playerTarget->GetConnectedPlayer();
+
+ if (!player)
+ {
+ handler->SendErrorMessage(LANG_PLAYER_NOT_FOUND);
+ return false;
+ }
+
+ uint32 zoneId = player->GetZoneId();
+ AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(zoneId);
+ handler->PSendSysMessage("Player count in zone {} ({}): {}.", zoneId, (zoneEntry ? zoneEntry->area_name[LOCALE_enUS] : "<unknown>"), player->GetMap()->GetPlayerCountInZone(zoneId));
+ return true;
+ }
};
void AddSC_debug_commandscript()
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index 69fec5a027..3680aea36a 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -100,8 +100,8 @@ public:
}
else
{
- canFly = handler->GetSession()->GetPlayer()->CanFly();
- target->SetCanFly(!canFly);
+ canFly = !handler->GetSession()->GetPlayer()->CanFly();
+ target->SetCanFly(canFly);
}
handler->PSendSysMessage(LANG_COMMAND_FLYMODE_STATUS, handler->GetNameLink(target), canFly ? "on" : "off");
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 4ca8b5b37f..ca5cff3dd5 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -193,7 +193,9 @@ public:
{ "skirmish", HandleSkirmishCommand, SEC_ADMINISTRATOR, Console::No },
{ "mailbox", HandleMailBoxCommand, SEC_MODERATOR, Console::No },
{ "string", HandleStringCommand, SEC_GAMEMASTER, Console::No },
- { "opendoor", HandleOpenDoorCommand, SEC_GAMEMASTER, Console::No }
+ { "opendoor", HandleOpenDoorCommand, SEC_GAMEMASTER, Console::No },
+ { "bm", HandleBMCommand, SEC_GAMEMASTER, Console::No },
+ { "packetlog", HandlePacketLog, SEC_GAMEMASTER, Console::No }
};
return commandTable;
@@ -485,7 +487,7 @@ public:
uint32 queueSlot = 0;
WorldPacket data;
sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), teamId);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
// Remove from LFG queues
sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), false);
@@ -504,6 +506,7 @@ public:
if (!session)
{
+ handler->SendErrorMessage(LANG_USE_BOL);
return false;
}
@@ -537,9 +540,6 @@ public:
SetCommentatorMod(false);
return true;
}
-
- handler->SendErrorMessage(LANG_USE_BOL);
- return false;
}
static bool HandleDevCommand(ChatHandler* handler, Optional<bool> enableArg)
@@ -548,6 +548,7 @@ public:
if (!session)
{
+ handler->SendErrorMessage(LANG_USE_BOL);
return false;
}
@@ -582,9 +583,6 @@ public:
SetDevMod(false);
return true;
}
-
- handler->SendErrorMessage(LANG_USE_BOL);
- return false;
}
static bool HandleGPSCommand(ChatHandler* handler, Optional<PlayerIdentifier> target)
@@ -3069,6 +3067,75 @@ public:
handler->SendErrorMessage(LANG_CMD_NO_DOOR_FOUND, range ? *range : 5.0f);
return false;
}
+
+ static bool HandleBMCommand(ChatHandler* handler, Optional<bool> enableArg)
+ {
+ WorldSession* session = handler->GetSession();
+
+ if (!session)
+ return false;
+
+ auto SetBMMod = [&](bool enable)
+ {
+ char const* enabled = "ON";
+ char const* disabled = "OFF";
+ handler->SendNotification(LANG_COMMAND_BEASTMASTER_MODE, enable ? enabled : disabled);
+
+ session->GetPlayer()->SetBeastMaster(enable);
+ };
+
+ if (!enableArg)
+ {
+ if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
+ SetBMMod(true);
+ else
+ SetBMMod(false);
+
+ return true;
+ }
+
+ if (*enableArg)
+ {
+ SetBMMod(true);
+ return true;
+ }
+ else
+ {
+ SetBMMod(false);
+ return true;
+ }
+
+ handler->SendErrorMessage(LANG_USE_BOL);
+ return false;
+ }
+
+ static bool HandlePacketLog(ChatHandler* handler, Optional<bool> enableArg)
+ {
+ WorldSession* session = handler->GetSession();
+
+ if (!session)
+ return false;
+
+ if (enableArg)
+ {
+ if (*enableArg)
+ {
+ session->SetPacketLogging(true);
+ handler->SendNotification(LANG_ON);
+ return true;
+ }
+ else
+ {
+ session->SetPacketLogging(false);
+ handler->SendNotification(LANG_OFF);
+ return true;
+ }
+ }
+
+ handler->SendErrorMessage(LANG_USE_BOL);
+ return false;
+ }
+
};
void AddSC_misc_commandscript()
diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp
index 20b9fadff5..75813a6a3f 100644
--- a/src/server/scripts/Commands/cs_mmaps.cpp
+++ b/src/server/scripts/Commands/cs_mmaps.cpp
@@ -29,6 +29,7 @@
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "MMapFactory.h"
+#include "MMapMgr.h"
#include "Map.h"
#include "PathGenerator.h"
#include "Player.h"
@@ -136,6 +137,40 @@ public:
GridCoord const gridCoord = Acore::ComputeGridCoord(player->GetPositionX(), player->GetPositionY());
handler->PSendSysMessage("{}{}{}.mmtile", player->GetMapId(), gridCoord.x_coord, gridCoord.y_coord);
+
+ std::string fileName = Acore::StringFormat(MMAP::TILE_FILE_NAME_FORMAT, sConfigMgr->GetOption<std::string>("DataDir", "."), player->GetMapId(), gridCoord.x_coord, gridCoord.y_coord);
+ FILE* file = fopen(fileName.c_str(), "rb");
+ if (!file)
+ {
+ LOG_DEBUG("maps", "MMAP:loadMap: Could not open mmtile file '{}'", fileName);
+ return false;
+ }
+
+ // read header
+ MmapTileHeader fileHeader;
+ if (fread(&fileHeader, sizeof(MmapTileHeader), 1, file) != 1 || fileHeader.mmapMagic != MMAP_MAGIC)
+ {
+ LOG_ERROR("maps", "MMAP:loadMap: Bad header in mmap {:03}{:02}{:02}.mmtile", player->GetMapId(), gridCoord.x_coord, gridCoord.y_coord);
+ fclose(file);
+ return false;
+ }
+ fclose(file);
+ handler->PSendSysMessage("Recast config used:");
+ handler->PSendSysMessage("- walkableSlopeAngle: {}", fileHeader.recastConfig.walkableSlopeAngle);
+
+ const float cellHeight = fileHeader.recastConfig.cellSizeVertical;
+ handler->PSendSysMessage("- walkableHeight: {} ({} units)", fileHeader.recastConfig.walkableHeight * cellHeight, fileHeader.recastConfig.walkableHeight);
+ handler->PSendSysMessage("- walkableClimb: {} ({} units)", fileHeader.recastConfig.walkableClimb * cellHeight, fileHeader.recastConfig.walkableClimb);
+ handler->PSendSysMessage("- walkableRadius: {} ({} units)", fileHeader.recastConfig.walkableRadius * cellHeight, fileHeader.recastConfig.walkableRadius);
+
+ handler->PSendSysMessage("- maxSimplificationError: {}", fileHeader.recastConfig.maxSimplificationError);
+ handler->PSendSysMessage("- vertexPerMapEdge: {}", fileHeader.recastConfig.vertexPerMapEdge);
+ handler->PSendSysMessage("- vertexPerTileEdge: {}", fileHeader.recastConfig.vertexPerTileEdge);
+ handler->PSendSysMessage("- tilesPerMapEdge: {}", fileHeader.recastConfig.tilesPerMapEdge);
+ handler->PSendSysMessage("- baseUnitDim: {}", fileHeader.recastConfig.baseUnitDim);
+ handler->PSendSysMessage("- cellSizeHorizontal: {}", fileHeader.recastConfig.cellSizeHorizontal);
+ handler->PSendSysMessage("- cellSizeVertical: {}", fileHeader.recastConfig.cellSizeVertical);
+
handler->PSendSysMessage("gridloc [{}, {}]", gridCoord.x_coord, gridCoord.y_coord);
// calculate navmesh tile location
diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp
index 733f88a7a6..20ffbe0e5c 100644
--- a/src/server/scripts/Commands/cs_modify.cpp
+++ b/src/server/scripts/Commands/cs_modify.cpp
@@ -328,7 +328,7 @@ public:
data << uint8(op);
data << uint16(val);
data << uint16(mark ? *mark : 65535);
- target->GetSession()->SendPacket(&data);
+ target->SendDirectMessage(&data);
return true;
}
@@ -417,10 +417,10 @@ public:
if (CheckModifySpeed(handler, target, allSpeed, 0.1f, 50.0f))
{
NotifyModification(handler, target, LANG_YOU_CHANGE_ASPEED, LANG_YOURS_ASPEED_CHANGED, allSpeed);
- target->SetSpeed(MOVE_WALK, allSpeed);
- target->SetSpeed(MOVE_RUN, allSpeed);
- target->SetSpeed(MOVE_SWIM, allSpeed);
- target->SetSpeed(MOVE_FLIGHT, allSpeed);
+ target->SetSpeed(MOVE_WALK, allSpeed, true);
+ target->SetSpeed(MOVE_RUN, allSpeed, true);
+ target->SetSpeed(MOVE_SWIM, allSpeed, true);
+ target->SetSpeed(MOVE_FLIGHT, allSpeed, true);
return true;
}
diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp
index 84d5db8cbc..5e2a6b8711 100644
--- a/src/server/scripts/Commands/cs_ticket.cpp
+++ b/src/server/scripts/Commands/cs_ticket.cpp
@@ -146,7 +146,7 @@ public:
{
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
- submitter->GetSession()->SendPacket(&data);
+ submitter->SendDirectMessage(&data);
ChatHandler(submitter->GetSession()).SendSysMessage(LANG_TICKET_CLOSED);
}
return true;
@@ -259,7 +259,7 @@ public:
// Force abandon ticket
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
}
return true;
@@ -467,12 +467,18 @@ public:
static bool HandleGMTicketResponseAppendCommand(ChatHandler* handler, uint32 ticketId, Tail res)
{
- return TicketResponseAppend(ticketId, false, handler, res.data());
+ if (res.empty())
+ return false;
+ else
+ return TicketResponseAppend(ticketId, false, handler, res.data());
}
static bool HandleGMTicketResponseAppendLnCommand(ChatHandler* handler, uint32 ticketId, Tail res)
{
- return TicketResponseAppend(ticketId, true, handler, res.data());
+ if (res.empty())
+ return false;
+ else
+ return TicketResponseAppend(ticketId, true, handler, res.data());
}
static bool HandleGMTicketResponseDeleteCommand(ChatHandler* handler, uint32 ticketId)
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
index bd71099346..0b534612b8 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
@@ -213,7 +213,7 @@ public:
ScriptedAI::EnterEvadeMode();
return;
}
- events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
+ events.ScheduleEvent(EVENT_CHECK_RESET, 5s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp
index 214b923550..6d4c64c1d5 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp
@@ -27,12 +27,13 @@
enum IronhandData
{
- IRONHAND_FLAMES_TIMER = 16000,
- IRONHAND_FLAMES_TIMER_RAND = 3000,
IRONHAND_N_GROUPS = 3,
SPELL_GOUT_OF_FLAMES = 15529
};
+constexpr Milliseconds IRONHAND_FLAMES_TIMER = 16s;
+constexpr Milliseconds IRONHAND_FLAMES_TIMER_RAND = 3s;
+
class go_shadowforge_brazier : public GameObjectScript
{
public:
@@ -110,7 +111,7 @@ public:
{
case SPELL_GOUT_OF_FLAMES:
DoCast(SPELL_GOUT_OF_FLAMES);
- events.RescheduleEvent(SPELL_GOUT_OF_FLAMES, urand(IRONHAND_FLAMES_TIMER - IRONHAND_FLAMES_TIMER_RAND, IRONHAND_FLAMES_TIMER + IRONHAND_FLAMES_TIMER_RAND));
+ events.RescheduleEvent(SPELL_GOUT_OF_FLAMES, IRONHAND_FLAMES_TIMER - IRONHAND_FLAMES_TIMER_RAND, IRONHAND_FLAMES_TIMER + IRONHAND_FLAMES_TIMER_RAND);
break;
default:
break;
@@ -358,7 +359,8 @@ public:
case 0:
Talk(SAY_TEXT5);
HandleGameObject(DATA_ARENA4, false);
- Start(false, false);
+ me->SetWalk(true);
+ Start(false);
eventTimer = 0;
break;
case 1:
@@ -603,7 +605,10 @@ public:
creature->CastSpell(creature, SPELL_DRUNKEN_RAGE, false);
if (npc_escortAI* escortAI = CAST_AI(npc_rocknot::npc_rocknotAI, creature->AI()))
- escortAI->Start(false, false);
+ {
+ creature->SetWalk(true);
+ escortAI->Start(false);
+ }
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp
index dadfb58c60..df52818e42 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp
@@ -28,14 +28,11 @@ enum Spells
SPELL_ENVELOPING_WEB = 15471
};
-enum Timers
-{
- TIMER_SHADOWBOLT = 7000,
- TIMER_CURSE_TONGUES = 24000,
- TIMER_CURSE_WEAKNESS = 12000,
- TIMER_DEMON_ARMOR = 3000, // virtually only cast once
- TIMER_ENVELOPING_WEB = 16000
-};
+constexpr Milliseconds TIMER_SHADOWBOLT = 7s;
+constexpr Milliseconds TIMER_CURSE_TONGUES = 24s;
+constexpr Milliseconds TIMER_CURSE_WEAKNESS = 12s;
+constexpr Milliseconds TIMER_DEMON_ARMOR = 3s; //virtually only cast once
+constexpr Milliseconds TIMER_ENVELOPING_WEB = 16s;
class boss_anubshiah : public CreatureScript
{
@@ -54,11 +51,11 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_SHADOWBOLT, 0.2 * (int)TIMER_SHADOWBOLT);
- events.ScheduleEvent(SPELL_CURSE_TONGUES, 0.2 * (int)TIMER_CURSE_TONGUES);
- events.ScheduleEvent(SPELL_CURSE_WEAKNESS, 0.2 * (int)TIMER_CURSE_WEAKNESS);
- events.ScheduleEvent(SPELL_DEMON_ARMOR, 0.2 * (int)TIMER_DEMON_ARMOR);
- events.ScheduleEvent(SPELL_ENVELOPING_WEB, 0.2 * (int)TIMER_ENVELOPING_WEB);
+ events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT / 5);
+ events.ScheduleEvent(SPELL_CURSE_TONGUES, TIMER_CURSE_TONGUES / 5);
+ events.ScheduleEvent(SPELL_CURSE_WEAKNESS, TIMER_CURSE_WEAKNESS / 5);
+ events.ScheduleEvent(SPELL_DEMON_ARMOR, TIMER_DEMON_ARMOR / 5);
+ events.ScheduleEvent(SPELL_ENVELOPING_WEB, TIMER_ENVELOPING_WEB / 5);
}
void UpdateAI(uint32 diff) override
@@ -80,21 +77,21 @@ public:
{
case SPELL_SHADOWBOLT:
DoCastVictim(SPELL_SHADOWBOLT);
- events.ScheduleEvent(SPELL_SHADOWBOLT, urand(TIMER_SHADOWBOLT - 2000, TIMER_SHADOWBOLT + 2000));
+ events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT - 2s, TIMER_SHADOWBOLT + 2s);
break;
case SPELL_CURSE_TONGUES:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
DoCast(target, SPELL_CURSE_TONGUES);
}
- events.ScheduleEvent(SPELL_CURSE_TONGUES, urand(TIMER_CURSE_TONGUES - 2000, TIMER_CURSE_TONGUES + 2000));
+ events.ScheduleEvent(SPELL_CURSE_TONGUES, TIMER_CURSE_TONGUES - 2s, TIMER_CURSE_TONGUES + 2s);
break;
case SPELL_CURSE_WEAKNESS:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
DoCast(target, SPELL_CURSE_WEAKNESS);
}
- events.ScheduleEvent(SPELL_CURSE_WEAKNESS, urand(TIMER_CURSE_WEAKNESS - 2000, TIMER_CURSE_WEAKNESS + 2000));
+ events.ScheduleEvent(SPELL_CURSE_WEAKNESS, TIMER_CURSE_WEAKNESS - 2s, TIMER_CURSE_WEAKNESS + 2s);
break;
case SPELL_DEMON_ARMOR:
DoCast(me, SPELL_DEMON_ARMOR);
@@ -103,7 +100,7 @@ public:
case SPELL_ENVELOPING_WEB:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
DoCast(target, SPELL_ENVELOPING_WEB);
- events.ScheduleEvent(SPELL_ENVELOPING_WEB, urand(TIMER_ENVELOPING_WEB - 2000, TIMER_ENVELOPING_WEB + 2000));
+ events.ScheduleEvent(SPELL_ENVELOPING_WEB, TIMER_ENVELOPING_WEB - 2s, TIMER_ENVELOPING_WEB + 2s);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_eviscerator.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_eviscerator.cpp
index 5d12ea5ac1..dfebbcf111 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_eviscerator.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_eviscerator.cpp
@@ -26,12 +26,9 @@ enum Spells
SPELL_SHIELD = 7121
};
-enum Timers
-{
- TIMER_SHADOWBOLT_VOLLEY = 7000,
- TIMER_REND = 20000,
- TIMER_SHIELD = 12000
-};
+constexpr Milliseconds TIMER_SHADOWBOLT_VOLLEY = 7s;
+constexpr Milliseconds TIMER_REND = 20s;
+constexpr Milliseconds TIMER_SHIELD = 12s;
class boss_eviscerator : public CreatureScript
{
@@ -52,9 +49,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, 0.2 * (int)TIMER_SHADOWBOLT_VOLLEY);
- events.ScheduleEvent(SPELL_REND, 0.2 * (int) TIMER_REND);
- events.ScheduleEvent(SPELL_SHIELD, 0.2 * (int) TIMER_SHIELD);
+ events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, TIMER_SHADOWBOLT_VOLLEY / 5);
+ events.ScheduleEvent(SPELL_REND, TIMER_REND / 5);
+ events.ScheduleEvent(SPELL_SHIELD, TIMER_SHIELD / 5);
}
void DamageTaken(Unit* /* doneBy */, uint32& /* damage */, DamageEffectType /* damagetype */, SpellSchoolMask damageSchoolMask) override
@@ -86,11 +83,11 @@ public:
{
case SPELL_SHADOWBOLT_VOLLEY:
DoCastVictim(SPELL_SHADOWBOLT_VOLLEY);
- events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, urand(TIMER_SHADOWBOLT_VOLLEY - 2000, TIMER_SHADOWBOLT_VOLLEY + 2000));
+ events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, TIMER_SHADOWBOLT_VOLLEY - 2s, TIMER_SHADOWBOLT_VOLLEY + 2s);
break;
case SPELL_REND:
DoCastVictim(SPELL_REND);
- events.ScheduleEvent(SPELL_REND, urand(TIMER_REND - 2000, TIMER_REND + 2000));
+ events.ScheduleEvent(SPELL_REND, TIMER_REND - 2s, TIMER_REND + 2s);
break;
case SPELL_SHIELD:
SpellShieldReady = true;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp
index 6621829836..4947301136 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp
@@ -26,12 +26,9 @@ enum Spells
SPELL_BLOODLUST = 21049
};
-enum Timers
-{
- TIMER_WHIRLWIND = 12000,
- TIMER_MORTAL = 22000,
- TIMER_BLOODLUST = 30000
-};
+constexpr Milliseconds TIMER_WHIRLWIND = 12s;
+constexpr Milliseconds TIMER_MORTAL = 22s;
+constexpr Milliseconds TIMER_BLOODLUST = 30s;
class boss_gorosh_the_dervish : public CreatureScript
{
@@ -47,14 +44,14 @@ public:
{
boss_gorosh_the_dervishAI(Creature* creature) : BossAI(creature, DATA_GOROSH) { }
- uint32 nextWhirlwindTime;
+ Milliseconds nextWhirlwindTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_WHIRLWIND, 0.2 * (int) TIMER_WHIRLWIND);
- events.ScheduleEvent(SPELL_MORTALSTRIKE, 0.2 * (int) TIMER_MORTAL);
- events.ScheduleEvent(SPELL_BLOODLUST, 0.2 * (int) TIMER_BLOODLUST);
+ events.ScheduleEvent(SPELL_WHIRLWIND, TIMER_WHIRLWIND / 5);
+ events.ScheduleEvent(SPELL_MORTALSTRIKE, TIMER_MORTAL / 5);
+ events.ScheduleEvent(SPELL_BLOODLUST, TIMER_BLOODLUST / 5);
}
void UpdateAI(uint32 diff) override
@@ -78,22 +75,22 @@ public:
if (me->GetDistance2d(me->GetVictim()) < 10.0f)
{
DoCastVictim(SPELL_WHIRLWIND);
- nextWhirlwindTime = urand(TIMER_WHIRLWIND - 2000, TIMER_WHIRLWIND + 2000);
+ nextWhirlwindTime = randtime(TIMER_WHIRLWIND - 2s, TIMER_WHIRLWIND + 2s);
}
else
{
// reschedule sooner
- nextWhirlwindTime = 0.3 * urand(TIMER_WHIRLWIND - 2000, TIMER_WHIRLWIND + 2000);
+ nextWhirlwindTime = randtime(TIMER_WHIRLWIND - 2s, TIMER_WHIRLWIND + 2s) / 3;
}
events.ScheduleEvent(SPELL_WHIRLWIND, nextWhirlwindTime);
break;
case SPELL_MORTALSTRIKE:
DoCastVictim(SPELL_MORTALSTRIKE);
- events.ScheduleEvent(SPELL_MORTALSTRIKE, urand(TIMER_MORTAL - 2000, TIMER_MORTAL + 2000));
+ events.ScheduleEvent(SPELL_MORTALSTRIKE, TIMER_MORTAL - 2s, TIMER_MORTAL + 2s);
break;
case SPELL_BLOODLUST:
DoCastSelf(SPELL_BLOODLUST);
- events.ScheduleEvent(SPELL_BLOODLUST, urand(TIMER_BLOODLUST - 2000, TIMER_BLOODLUST + 2000));
+ events.ScheduleEvent(SPELL_BLOODLUST, TIMER_BLOODLUST - 2s, TIMER_BLOODLUST + 2s);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp
index cbe77cd858..c9176385d2 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp
@@ -26,11 +26,8 @@ enum Grizzle
EMOTE_FRENZY_KILL = 0
};
-enum Timer
-{
- TIMER_GROUNDTREMOR = 10000,
- TIMER_FRENZY = 15000
-};
+constexpr Milliseconds TIMER_GROUNDTREMOR = 10s;
+constexpr Milliseconds TIMER_FRENZY = 15s;
class boss_grizzle : public CreatureScript
{
@@ -46,13 +43,13 @@ public:
{
boss_grizzleAI(Creature* creature) : BossAI(creature, DATA_GRIZZLE) {}
- uint32 nextTremorTime;
+ Milliseconds nextTremorTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_GROUNDTREMOR, 0.2 * (int) TIMER_GROUNDTREMOR);
- events.ScheduleEvent(SPELL_FRENZY, 0.2 * (int) TIMER_FRENZY);
+ events.ScheduleEvent(SPELL_GROUNDTREMOR, TIMER_GROUNDTREMOR / 5);
+ events.ScheduleEvent(SPELL_FRENZY, TIMER_FRENZY / 5);
}
void UpdateAI(uint32 diff) override
@@ -77,17 +74,17 @@ public:
if (me->GetDistance2d(me->GetVictim()) < 10.0f)
{
DoCastVictim(SPELL_GROUNDTREMOR);
- nextTremorTime = urand(TIMER_GROUNDTREMOR - 2000, TIMER_GROUNDTREMOR + 2000);
+ nextTremorTime = randtime(TIMER_GROUNDTREMOR - 2s, TIMER_GROUNDTREMOR + 2s);
}
else
{
- nextTremorTime = 0.3*urand(TIMER_GROUNDTREMOR - 2000, TIMER_GROUNDTREMOR + 2000);
+ nextTremorTime = randtime(TIMER_GROUNDTREMOR - 2s, TIMER_GROUNDTREMOR + 2s) / 3;
}
events.ScheduleEvent(SPELL_GROUNDTREMOR, nextTremorTime);
break;
case SPELL_FRENZY:
DoCastSelf(SPELL_FRENZY);
- events.ScheduleEvent(SPELL_FRENZY, urand(TIMER_FRENZY - 2000, TIMER_FRENZY + 2000));
+ events.ScheduleEvent(SPELL_FRENZY, TIMER_FRENZY - 2s, TIMER_FRENZY + 2s);
Talk(EMOTE_FRENZY_KILL);
break;
default:
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_hedrum.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_hedrum.cpp
index 6861d1b895..8b2dfaaba6 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_hedrum.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_hedrum.cpp
@@ -26,12 +26,9 @@ enum Spells
SPELL_WEB_EXPLOSION = 15474
};
-enum Timers
-{
- TIMER_PARALYZING = 20000,
- TIMER_BANEFUL = 24000,
- TIMER_WEB_EXPLOSION = 20000
-};
+constexpr Milliseconds TIMER_PARALYZING = 20s;
+constexpr Milliseconds TIMER_BANEFUL = 24s;
+constexpr Milliseconds TIMER_WEB_EXPLOSION = 20s;
class boss_hedrum : public CreatureScript
{
@@ -50,9 +47,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_PARALYZING, 0.2 * (int) TIMER_PARALYZING);
- events.ScheduleEvent(SPELL_BANEFUL, 0.2 * (int) TIMER_BANEFUL);
- events.ScheduleEvent(SPELL_WEB_EXPLOSION, 0.2 * (int) TIMER_WEB_EXPLOSION);
+ events.ScheduleEvent(SPELL_PARALYZING, TIMER_PARALYZING / 5);
+ events.ScheduleEvent(SPELL_BANEFUL, TIMER_BANEFUL / 5);
+ events.ScheduleEvent(SPELL_WEB_EXPLOSION, TIMER_WEB_EXPLOSION / 5);
}
void UpdateAI(uint32 diff) override
@@ -74,18 +71,18 @@ public:
{
case SPELL_PARALYZING:
DoCastVictim(SPELL_PARALYZING);
- events.ScheduleEvent(SPELL_PARALYZING, urand(TIMER_PARALYZING - 2000, TIMER_PARALYZING + 2000));
+ events.ScheduleEvent(SPELL_PARALYZING, TIMER_PARALYZING - 2s, TIMER_PARALYZING + 2s);
break;
case SPELL_BANEFUL:
DoCastVictim(SPELL_BANEFUL);
- events.ScheduleEvent(SPELL_BANEFUL, urand(TIMER_BANEFUL - 2000, TIMER_BANEFUL + 2000));
+ events.ScheduleEvent(SPELL_BANEFUL, TIMER_BANEFUL - 2s, TIMER_BANEFUL + 2s);
break;
case SPELL_WEB_EXPLOSION:
if (me->GetDistance2d(me->GetVictim()) < 100.0f)
{
DoCast(SPELL_WEB_EXPLOSION);
}
- events.ScheduleEvent(SPELL_WEB_EXPLOSION, urand(TIMER_WEB_EXPLOSION - 2000, TIMER_WEB_EXPLOSION + 2000));
+ events.ScheduleEvent(SPELL_WEB_EXPLOSION, TIMER_WEB_EXPLOSION - 2s, TIMER_WEB_EXPLOSION + 2s);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp
index 5d27104936..a408472a07 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp
@@ -28,14 +28,11 @@ enum Spells
SPELL_WORDPAIN = 15654,
};
-enum SpellTimers
-{
- TIMER_HEAL = 12000,
- TIMER_MINDBLAST = 16000,
- TIMER_RENEW = 12000,
- TIMER_SHADOWBOLT = 16000,
- TIMER_WORDPAIN = 12000,
-};
+constexpr Milliseconds TIMER_HEAL = 12s;
+constexpr Milliseconds TIMER_MINDBLAST = 16s;
+constexpr Milliseconds TIMER_RENEW = 12s;
+constexpr Milliseconds TIMER_SHADOWBOLT = 16s;
+constexpr Milliseconds TIMER_WORDPAIN = 12s;
struct boss_moira_bronzebeardAI : public BossAI
{
@@ -44,9 +41,9 @@ struct boss_moira_bronzebeardAI : public BossAI
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_MINDBLAST, 0.5 * (int) TIMER_MINDBLAST);
- events.ScheduleEvent(SPELL_HEAL, 0.5 * (int) TIMER_HEAL);
- events.ScheduleEvent(SPELL_RENEW, 0.5 * (int) TIMER_RENEW);
+ events.ScheduleEvent(SPELL_MINDBLAST, TIMER_MINDBLAST / 2);
+ events.ScheduleEvent(SPELL_HEAL, TIMER_HEAL / 2);
+ events.ScheduleEvent(SPELL_RENEW, TIMER_RENEW / 2);
}
void UpdateAI(uint32 diff) override
@@ -67,7 +64,7 @@ struct boss_moira_bronzebeardAI : public BossAI
{
case SPELL_MINDBLAST:
DoCastVictim(SPELL_MINDBLAST);
- events.ScheduleEvent(SPELL_MINDBLAST, urand(TIMER_MINDBLAST - 2000, TIMER_MINDBLAST + 2000));
+ events.ScheduleEvent(SPELL_MINDBLAST, TIMER_MINDBLAST - 2s, TIMER_MINDBLAST + 2s);
break;
case SPELL_HEAL:
CastOnEmperorIfPossible(SPELL_HEAL, TIMER_HEAL);
@@ -82,7 +79,7 @@ struct boss_moira_bronzebeardAI : public BossAI
DoMeleeAttackIfReady();
}
- void CastOnEmperorIfPossible(uint32 spell, uint32 timer)
+ void CastOnEmperorIfPossible(uint32 spell, Milliseconds timer)
{
Creature* emperor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EMPEROR));
if (emperor && emperor->HealthBelowPct(90))
@@ -93,7 +90,7 @@ struct boss_moira_bronzebeardAI : public BossAI
{
DoCastSelf(spell);
}
- events.ScheduleEvent(spell, urand(timer - 2000, timer + 2000));
+ events.ScheduleEvent(spell, timer - 2s, timer + 2s);
}
};
@@ -107,10 +104,10 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
{
_JustEngagedWith();
Talk(0);
- events.ScheduleEvent(SPELL_WORDPAIN, 0.5 * (int)TIMER_WORDPAIN);
- events.ScheduleEvent(SPELL_HEAL, 0.5 * (int) TIMER_HEAL);
- events.ScheduleEvent(SPELL_RENEW, 0.5 * (int) TIMER_RENEW);
- events.ScheduleEvent(SPELL_SHADOWBOLT, 0.5 * (int) TIMER_SHADOWBOLT);
+ events.ScheduleEvent(SPELL_WORDPAIN, TIMER_WORDPAIN / 2);
+ events.ScheduleEvent(SPELL_HEAL, TIMER_HEAL / 2);
+ events.ScheduleEvent(SPELL_RENEW, TIMER_RENEW / 2);
+ events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT / 2);
}
void UpdateAI(uint32 diff) override
@@ -131,7 +128,7 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
{
case SPELL_WORDPAIN:
DoCastVictim(SPELL_WORDPAIN);
- events.ScheduleEvent(SPELL_WORDPAIN, urand(TIMER_WORDPAIN - 2000, TIMER_WORDPAIN + 2000));
+ events.ScheduleEvent(SPELL_WORDPAIN, TIMER_WORDPAIN - 2s, TIMER_WORDPAIN + 2s);
break;
case SPELL_HEAL:
CastOnEmperorIfPossible(SPELL_HEAL, TIMER_HEAL);
@@ -141,7 +138,7 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
break;
case SPELL_SHADOWBOLT:
DoCastVictim(SPELL_SHADOWBOLT);
- events.ScheduleEvent(SPELL_SHADOWBOLT, urand(TIMER_SHADOWBOLT - 2000, TIMER_SHADOWBOLT + 2000));
+ events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT - 2s, TIMER_SHADOWBOLT + 2s);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_okthor.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_okthor.cpp
index c5168332ae..1da1d30b0a 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_okthor.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_okthor.cpp
@@ -27,13 +27,10 @@ enum Spells
SPELL_SLOW = 19137
};
-enum Timers
-{
- TIMER_ARCANE_BOLT = 7000,
- TIMER_ARCANE_EXPLOSION = 24000,
- TIMER_POLYMORPH = 12000,
- TIMER_SLOW = 15000
-};
+constexpr Milliseconds TIMER_ARCANE_BOLT = 7s;
+constexpr Milliseconds TIMER_ARCANE_EXPLOSION = 24s;
+constexpr Milliseconds TIMER_POLYMORPH = 12s;
+constexpr Milliseconds TIMER_SLOW = 15s;
class boss_okthor : public CreatureScript
{
@@ -49,15 +46,15 @@ public:
{
boss_okthorAI(Creature* creature) : BossAI(creature, DATA_OKTHOR) {}
- uint32 nextArcaneExplosionTime;
+ Milliseconds nextArcaneExplosionTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(SPELL_ARCANE_BOLT, 0.2 * (int) TIMER_ARCANE_BOLT);
- events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, 0.2 * (int) TIMER_ARCANE_EXPLOSION);
- events.ScheduleEvent(SPELL_POLYMORPH, 0.2 * (int) TIMER_POLYMORPH);
- events.ScheduleEvent(SPELL_SLOW, 500);
+ events.ScheduleEvent(SPELL_ARCANE_BOLT, TIMER_ARCANE_BOLT / 5);
+ events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, TIMER_ARCANE_EXPLOSION / 5);
+ events.ScheduleEvent(SPELL_POLYMORPH, TIMER_POLYMORPH / 5);
+ events.ScheduleEvent(SPELL_SLOW, 500ms);
}
void UpdateAI(uint32 diff) override
@@ -82,17 +79,17 @@ public:
{
DoCast(target, SPELL_ARCANE_BOLT);
}
- events.ScheduleEvent(SPELL_ARCANE_BOLT, urand(TIMER_ARCANE_BOLT - 2000, TIMER_ARCANE_BOLT + 2000));
+ events.ScheduleEvent(SPELL_ARCANE_BOLT, TIMER_ARCANE_BOLT - 2s, TIMER_ARCANE_BOLT + 2s);
break;
case SPELL_ARCANE_EXPLOSION:
if (me->GetDistance2d(me->GetVictim()) < 50.0f)
{
DoCast(SPELL_ARCANE_EXPLOSION);
- nextArcaneExplosionTime = urand(TIMER_ARCANE_EXPLOSION - 2000, TIMER_ARCANE_EXPLOSION + 2000);
+ nextArcaneExplosionTime = randtime(TIMER_ARCANE_EXPLOSION - 2s, TIMER_ARCANE_EXPLOSION + 2s);
}
else
{
- nextArcaneExplosionTime = 0.3*urand(TIMER_ARCANE_EXPLOSION - 2000, TIMER_ARCANE_EXPLOSION + 2000);
+ nextArcaneExplosionTime = randtime(TIMER_ARCANE_EXPLOSION - 2s, TIMER_ARCANE_EXPLOSION + 2s) / 3;
}
events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, nextArcaneExplosionTime);
break;
@@ -101,7 +98,7 @@ public:
{
DoCast(target, SPELL_POLYMORPH);
}
- events.ScheduleEvent(SPELL_POLYMORPH, urand(TIMER_POLYMORPH - 2000, TIMER_POLYMORPH + 2000));
+ events.ScheduleEvent(SPELL_POLYMORPH, TIMER_POLYMORPH - 2s, TIMER_POLYMORPH + 2s);
break;
case SPELL_SLOW:
if (me->GetDistance2d(me->GetVictim()) < 50.0f)
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
index 243d6e71c5..fd18069ca9 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
@@ -606,7 +606,7 @@ public:
if (Creature* argelmach = instance->GetCreature(ArgelmachGUID))
{
argelmach->HandleEmoteCommand(EMOTE_ONESHOT_SHOUT);
- argelmach->m_Events.AddEvent(new RestoreAttack(argelmach), argelmach->m_Events.CalculateTime(3000));
+ argelmach->m_Events.AddEventAtOffset(new RestoreAttack(argelmach), 3s);
for (ObjectGuid const& argelmachAddGUID : ArgelmachAdds)
{
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
index 2beaacff3d..f7bf1b5a55 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
@@ -96,7 +96,7 @@ public:
void IsSummonedBy(WorldObject* /*summoner*/) override
{
- events.ScheduleEvent(EVENT_SUMMONED_1, 1000);
+ events.ScheduleEvent(EVENT_SUMMONED_1, 1s);
}
void JustSummoned(Creature* summon) override
@@ -128,7 +128,7 @@ public:
events.ScheduleEvent(EVENT_SUMMONED_2, 2s);
break;
case EVENT_SUMMONED_2:
- me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
+ me->GetMotionMaster()->MoveWaypoint(GYTH_PATH_1, false);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp
index 66ecf747ec..d88c390b10 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp
@@ -71,7 +71,7 @@ public:
void IsSummonedBy(WorldObject* /*summoner*/) override
{
- StartTalking(TALK_SUMMON, 8 * IN_MILLISECONDS);
+ StartTalking(TALK_SUMMON, 8s);
}
void JustEngagedWith(Unit* who) override
@@ -92,7 +92,7 @@ public:
instance->SetData(DATA_LORD_VALTHALAK, DONE);
}
- void StartTalking(uint32 talkGroupId, uint32 timer)
+ void StartTalking(uint32 talkGroupId, Milliseconds timer)
{
me->SetReactState(REACT_PASSIVE);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
@@ -123,7 +123,7 @@ public:
events.CancelEvent(EVENT_SUMMON_SPECTRAL_ASSASSIN);
- StartTalking(TALK_40_HP, 5 * IN_MILLISECONDS);
+ StartTalking(TALK_40_HP, 5s);
}
if (!frenzy15 && me->HealthBelowPctDamaged(15, damage))
@@ -132,7 +132,7 @@ public:
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 12s, 19s, 0, EVENT_PHASE_FIGHT);
- StartTalking(TALK_15_HP, 5 * IN_MILLISECONDS);
+ StartTalking(TALK_15_HP, 5s);
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mor_grayhoof.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mor_grayhoof.cpp
index c416371cd6..72ce757443 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mor_grayhoof.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mor_grayhoof.cpp
@@ -53,7 +53,7 @@ enum Spells
SPELL_FAERIE_DRAGON_FORM = 27546,
SPELL_ARCANE_EXPLOSION = 22271,
SPELL_REFLECTION = 27564,
- SPELL_CHAIN_LIGHTING = 27567,
+ SPELL_CHAIN_LIGHTNING = 27567,
SPELL_SLEEP = 20663 // Guessed
};
@@ -68,7 +68,7 @@ enum Phases
std::vector<uint32> catSpells = { SPELL_SHRED, SPELL_RAKE, SPELL_FEROCIOUS_BITE };
std::vector<uint32> humanSpells = { SPELL_HURRICANE, SPELL_MOONFIRE, SPELL_SHOCK, SPELL_HEALING_TOUCH, SPELL_REJUVENATION };
std::vector<uint32> bearSpells = { SPELL_DEMORALIZING_ROAR, SPELL_MAUL, SPELL_SWIPE };
-std::vector<uint32> faerieSpells = { SPELL_ARCANE_EXPLOSION, SPELL_REFLECTION, SPELL_CHAIN_LIGHTING, SPELL_SLEEP };
+std::vector<uint32> faerieSpells = { SPELL_ARCANE_EXPLOSION, SPELL_REFLECTION, SPELL_CHAIN_LIGHTNING, SPELL_SLEEP };
struct boss_mor_grayhoof : public BossAI
{
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp
index 45e6502eb8..45af53d9bc 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp
@@ -77,7 +77,9 @@ struct boss_quartermaster_zigris : public BossAI
{
if (me->IsWithinMeleeRange(me->GetVictim()))
{
- me->GetMotionMaster()->MoveBackwards(me->GetVictim(), 10.0f);
+ float x, y, z;
+ me->GetNearPoint(me->GetVictim(), x, y, z, me->GetVictim()->GetBoundaryRadius(), 10.0f, me->GetAngle(me->GetVictim()));
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_RUN); // TODO: Implement generic distancing on npc on target root
}
}
}
@@ -108,11 +110,11 @@ struct boss_quartermaster_zigris : public BossAI
if (me->IsWithinMeleeRange(me->GetVictim()))
{
DoCastVictim(SPELL_HOOKEDNET);
- events.RepeatEvent(16000);
+ events.Repeat(16s);
}
else
{
- events.RepeatEvent(3000);
+ events.Repeat(3s);
}
break;
case EVENT_SHOOT:
@@ -128,7 +130,7 @@ struct boss_quartermaster_zigris : public BossAI
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MoveChase(me->GetVictim());
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
index 6383681943..d1dbc4ff9e 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
@@ -222,7 +222,7 @@ public:
if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 50.0f))
waveDoorGUID = portcullis->GetGUID();
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
events.ScheduleEvent(EVENT_START_1, 1s);
}
}
@@ -234,7 +234,7 @@ public:
{
switch (id)
{
- case 5:
+ case 6:
events.ScheduleEvent(EVENT_TELEPORT_1, 2s);
break;
}
@@ -264,7 +264,7 @@ public:
events.ScheduleEvent(EVENT_START_2, 4s);
break;
case EVENT_START_2:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
events.ScheduleEvent(EVENT_START_3, 4s);
@@ -314,14 +314,14 @@ public:
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_2:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_3);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_3:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_4);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
@@ -334,14 +334,14 @@ public:
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_5:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_5);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_COMPLETE_TEXT_1:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
+ events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_6);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
@@ -362,10 +362,10 @@ public:
break;
case EVENT_PATH_NEFARIUS:
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
- victor->GetMotionMaster()->MovePath(NEFARIUS_PATH_1, true);
+ victor->GetMotionMaster()->MoveWaypoint(NEFARIUS_PATH_1, true);
break;
case EVENT_PATH_REND:
- me->GetMotionMaster()->MovePath(REND_PATH_1, false);
+ me->GetMotionMaster()->MoveWaypoint(REND_PATH_1, false);
break;
case EVENT_TELEPORT_1:
me->NearTeleportTo(194.2993f, -474.0814f, 121.4505f, -0.01225555f);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
index 84d3c07acc..fe9d0a981e 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
@@ -110,7 +110,7 @@ public:
if (_beastReached)
{
- me->GetMotionMaster()->MovePath(BEAST_MOVEMENT_ID, true);
+ me->GetMotionMaster()->MoveWaypoint(BEAST_MOVEMENT_ID, true);
}
}
@@ -157,8 +157,8 @@ public:
orc->AI()->Talk(SAY_BLACKHAND_DOOMED);
}
- orc->m_Events.AddEvent(new OrcMoveEvent(orc), me->m_Events.CalculateTime(3 * IN_MILLISECONDS));
- orc->m_Events.AddEvent(new OrcDeathEvent(orc), me->m_Events.CalculateTime(9 * IN_MILLISECONDS));
+ orc->m_Events.AddEventAtOffset(new OrcMoveEvent(orc), 3s);
+ orc->m_Events.AddEventAtOffset(new OrcDeathEvent(orc), 9s);
}
}
}
@@ -169,7 +169,7 @@ public:
if (!_beastReached)
{
_beastReached = true;
- me->GetMotionMaster()->MovePath(BEAST_MOVEMENT_ID, true);
+ me->GetMotionMaster()->MoveWaypoint(BEAST_MOVEMENT_ID, true);
// There is a chance player logged in between areatriggers (realm crash or restart)
// executing part of script which happens when player enters boss room
@@ -227,7 +227,7 @@ public:
case EVENT_FIREBALL:
DoCastVictim(SPELL_FIREBALL);
events.ScheduleEvent(EVENT_FIREBALL, 8s, 21s);
- if (events.GetNextEventTime(EVENT_FIREBLAST) < 3 * IN_MILLISECONDS)
+ if (events.GetTimeUntilEvent(EVENT_FIREBLAST) < 3s)
{
events.RescheduleEvent(EVENT_FIREBLAST, 3s);
}
@@ -235,7 +235,7 @@ public:
case EVENT_FIREBLAST:
DoCastVictim(SPELL_FIREBLAST);
events.ScheduleEvent(EVENT_FIREBLAST, 5s, 8s);
- if (events.GetNextEventTime(EVENT_FIREBALL) < 3 * IN_MILLISECONDS)
+ if (events.GetTimeUntilEvent(EVENT_FIREBALL) < 3s)
{
events.RescheduleEvent(EVENT_FIREBALL, 3s);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp
index 55ac1f26e0..33f37d0833 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp
@@ -98,31 +98,31 @@ public:
{
case EVENT_SNAP_KICK:
DoCastVictim(SPELL_SNAPKICK);
- events.RepeatEvent(6 * IN_MILLISECONDS);
+ events.Repeat(6s);
break;
case EVENT_CLEAVE:
DoCastVictim(SPELL_CLEAVE);
- events.RepeatEvent(12 * IN_MILLISECONDS);
+ events.Repeat(12s);
break;
case EVENT_UPPERCUT:
DoCastVictim(SPELL_UPPERCUT);
- events.RepeatEvent(14 * IN_MILLISECONDS);
+ events.Repeat(14s);
break;
case EVENT_MORTAL_STRIKE:
DoCastVictim(SPELL_MORTALSTRIKE);
- events.RepeatEvent(10 * IN_MILLISECONDS);
+ events.Repeat(10s);
break;
case EVENT_PUMMEL:
DoCastVictim(SPELL_PUMMEL);
- events.RepeatEvent(16 * IN_MILLISECONDS);
+ events.Repeat(16s);
break;
case EVENT_THROW_AXE:
DoCastRandomTarget(SPELL_THROWAXE);
- events.RepeatEvent(8 * IN_MILLISECONDS);
+ events.Repeat(8s);
break;
case EVENT_THRASH:
DoCastSelf(SPELL_THRASH);
- events.RepeatEvent(10 * IN_MILLISECONDS);
+ events.Repeat(10s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
index d9508f0b5a..8c5af306e5 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
@@ -39,10 +39,7 @@ enum EventIds
EVENT_SOLAKAR_WAVE = 3
};
-enum Timers
-{
- TIMER_SOLAKAR_WAVE = 30000
-};
+constexpr Milliseconds TIMER_SOLAKAR_WAVE = 30s;
enum SolakarWaves
{
@@ -1049,7 +1046,7 @@ public:
break;
case EVENT_VAEL_3_DESPAWN:
DoCast(me, SPELL_VAELASTRASZ_SPAWN);
- me->DespawnOrUnsummon(1500);
+ me->DespawnOrUnsummon(1500ms);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
index cf39b53a1f..fc8368f1b5 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
@@ -118,7 +118,7 @@ public:
return !victim->HasAura(SPELL_TIMELAPSE);
}
- void SetGUID(ObjectGuid guid, int32 id) override
+ void SetGUID(ObjectGuid const& guid, int32 id) override
{
if (id == GUID_LEVER_USER)
{
@@ -244,7 +244,7 @@ class go_chromaggus_lever : public GameObjectScript
if (Creature* creature = _instance->GetCreature(DATA_CHROMAGGUS))
{
creature->SetHomePosition(homePos);
- creature->GetMotionMaster()->MovePath(creature->GetEntry() * 10, false);
+ creature->GetMotionMaster()->MoveWaypoint(creature->GetEntry() * 10, false);
creature->AI()->SetGUID(player->GetGUID(), GUID_LEVER_USER);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
index 12fab34d17..9252546f05 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
@@ -44,7 +44,7 @@ public:
void MovementInform(uint32 type, uint32 id) override
{
- if (type != WAYPOINT_MOTION_TYPE || id != 12)
+ if (type != WAYPOINT_MOTION_TYPE || id != 13)
{
return;
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
index 614976c5ae..c1760cc5ca 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
@@ -343,7 +343,7 @@ public:
nefarian->setActive(true);
nefarian->SetCanFly(true);
nefarian->SetDisableGravity(true);
- nefarian->GetMotionMaster()->MovePath(NEFARIAN_PATH, false);
+ nefarian->GetMotionMaster()->MoveWaypoint(NEFARIAN_PATH, false);
}
events.Reset();
@@ -406,7 +406,7 @@ public:
switch (eventId)
{
case EVENT_PATH_2:
- me->GetMotionMaster()->MovePath(NEFARIUS_PATH_2, false);
+ me->GetMotionMaster()->MoveWaypoint(NEFARIUS_PATH_2, false);
events.ScheduleEvent(EVENT_CHAOS_1, 7s);
break;
case EVENT_CHAOS_1:
@@ -435,10 +435,10 @@ public:
break;
case EVENT_SUCCESS_2:
DoCast(me, SPELL_VAELASTRASZZ_SPAWN);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
break;
case EVENT_PATH_3:
- me->GetMotionMaster()->MovePath(NEFARIUS_PATH_3, false);
+ me->GetMotionMaster()->MoveWaypoint(NEFARIUS_PATH_3, false);
break;
case EVENT_START_EVENT:
BeginEvent();
@@ -592,12 +592,12 @@ struct boss_nefarian : public BossAI
return;
}
- if (id == 3)
+ if (id == 4)
{
Talk(SAY_INTRO);
}
- if (id == 5)
+ if (id == 6)
{
DoCastAOE(SPELL_SHADOWFLAME_INITIAL);
Talk(SAY_SHADOWFLAME);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
index 4b82654fb6..de984f635e 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
@@ -152,7 +152,7 @@ public:
}
}
- void SetGUID(ObjectGuid const guid, int32 /*id*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
{
_charmerGUID = guid;
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
index de8d3ef6c7..15f0f63f17 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -345,7 +345,7 @@ public:
{
case NPC_BLACKWING_DRAGON:
--addsCount[0];
- if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
+ if (EggEvent != DONE && !_events.HasTimeUntilEvent(EVENT_RAZOR_SPAWN))
{
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 1s);
}
@@ -353,7 +353,7 @@ public:
case NPC_BLACKWING_LEGIONAIRE:
case NPC_BLACKWING_MAGE:
--addsCount[1];
- if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
+ if (EggEvent != DONE && !_events.HasTimeUntilEvent(EVENT_RAZOR_SPAWN))
{
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 1s);
}
@@ -413,7 +413,7 @@ public:
if (spawnMoreAdds)
{
- _events.ScheduleEvent(EVENT_RAZOR_SPAWN, 15000);
+ _events.ScheduleEvent(EVENT_RAZOR_SPAWN, 15s);
}
}
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp
index 9f6823b3b1..0bf59bb34f 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp
@@ -91,7 +91,7 @@ public:
case EVENT_INFERNO:
{
DoCastAOE(SPELL_INFERNO);
- events.RepeatEvent(urand(21000, 26000));
+ events.Repeat(21s, 26s);
break;
}
case EVENT_IGNITE_MANA:
@@ -101,7 +101,7 @@ public:
DoCast(target, SPELL_IGNITE_MANA);
}
- events.RepeatEvent(urand(27000, 32000));
+ events.Repeat(27s, 32s);
break;
}
case EVENT_LIVING_BOMB:
@@ -111,7 +111,7 @@ public:
DoCast(target, SPELL_LIVING_BOMB);
}
- events.RepeatEvent(urand(11000, 16000));
+ events.Repeat(11s, 16s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp
index 3682a67fd1..9b6ec713a5 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp
@@ -111,13 +111,13 @@ public:
case EVENT_ANTIMAGIC_PULSE:
{
DoCastSelf(SPELL_ANTIMAGIC_PULSE);
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
}
case EVENT_MAGMA_SHACKLES:
{
DoCastSelf(SPELL_MAGMA_SHACKLES);
- events.RepeatEvent(15000);
+ events.Repeat(15s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp
index a358bec9d5..80a2bc1e82 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp
@@ -58,7 +58,7 @@ public:
case EVENT_GEHENNAS_CURSE:
{
DoCastVictim(SPELL_GEHENNAS_CURSE);
- events.RepeatEvent(urand(25000, 30000));
+ events.Repeat(25s, 30s);
break;
}
case EVENT_RAIN_OF_FIRE:
@@ -67,7 +67,7 @@ public:
{
DoCast(target, SPELL_RAIN_OF_FIRE, true);
}
- events.RepeatEvent(6000);
+ events.Repeat(6s);
break;
}
case EVENT_SHADOW_BOLT:
@@ -88,7 +88,7 @@ public:
DoCastVictim(SPELL_SHADOW_BOLT_VICTIM);
}
- events.RepeatEvent(5000);
+ events.Repeat(5s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp
index 384b818974..1ddbabeefd 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp
@@ -57,19 +57,19 @@ public:
case EVENT_IMPENDING_DOOM:
{
DoCastVictim(SPELL_IMPENDING_DOOM);
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
}
case EVENT_LUCIFRON_CURSE:
{
DoCastVictim(SPELL_LUCIFRON_CURSE);
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
}
case EVENT_SHADOW_SHOCK:
{
DoCastVictim(SPELL_SHADOW_SHOCK);
- events.RepeatEvent(5000);
+ events.Repeat(5s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp
index 978cf2f80a..460abdbd16 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp
@@ -73,13 +73,13 @@ public:
{
Talk(EMOTE_FRENZY);
DoCastSelf(SPELL_FRENZY);
- events.RepeatEvent(urand(15000, 20000));
+ events.Repeat(15s, 20s);
break;
}
case EVENT_PANIC:
{
DoCastVictim(SPELL_PANIC);
- events.RepeatEvent(urand(31000, 38000));
+ events.Repeat(31s, 38s);
break;
}
case EVENT_LAVA_BOMB:
@@ -89,7 +89,7 @@ public:
DoCast(target, SPELL_LAVA_BOMB);
}
- events.RepeatEvent(urand(12000, 15000));
+ events.Repeat(12s, 15s);
break;
}
case EVENT_LAVA_BOMB_RANGED:
@@ -104,7 +104,7 @@ public:
{
DoCast(targets.front() , SPELL_LAVA_BOMB_RANGED);
}
- events.RepeatEvent(urand(12000, 15000));
+ events.Repeat(12s, 15s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp
index ce586774f5..769a43deb6 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp
@@ -348,7 +348,7 @@ public:
{
DoCastSelf(SPELL_DAMAGE_REFLECTION);
}
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
case EVENT_TELEPORT_RANDOM:
@@ -359,14 +359,14 @@ public:
DoCast(target, SPELL_TELEPORT_RANDOM);
}
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
case EVENT_TELEPORT_TARGET:
{
DoCastSelf(SPELL_HATE_TO_ZERO, true);
DoCastAOE(SPELL_TELEPORT_TARGET);
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
}
@@ -430,7 +430,7 @@ public:
Talk(SAY_RAG_SUM_2);
// Next event will get triggered in MovementInform
me->SetWalk(true);
- me->GetMotionMaster()->MovePoint(POINT_RAGNAROS_SUMMON, MajordomoMoveRagPos, true, false);
+ me->GetMotionMaster()->MovePoint(POINT_RAGNAROS_SUMMON, MajordomoMoveRagPos, FORCED_MOVEMENT_NONE, 0.f, true, false);
break;
}
case EVENT_RAGNAROS_SUMMON_2:
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
index 84dfa53781..6cde45bdd4 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
@@ -183,13 +183,13 @@ public:
}
}
- void SetGUID(ObjectGuid guid, int32 index) override
+ void SetGUID(ObjectGuid const& guid, int32 index) override
{
if (index == GO_LAVA_BURST)
{
if (_lavaBurstGUIDS.empty())
{
- extraEvents.ScheduleEvent(EVENT_LAVA_BURST_TRIGGER, 1);
+ extraEvents.ScheduleEvent(EVENT_LAVA_BURST_TRIGGER, 1ms);
}
_lavaBurstGUIDS.insert(guid);
@@ -309,7 +309,7 @@ public:
}
_lavaBurstGUIDS.erase(lavaBurstGUID);
- extraEvents.RepeatEvent(1000);
+ extraEvents.Repeat(1s);
}
else
{
@@ -350,7 +350,7 @@ public:
{
Talk(SAY_WRATH);
}
- events.RepeatEvent(25000);
+ events.Repeat(25s);
break;
}
case EVENT_HAND_OF_RAGNAROS:
@@ -362,7 +362,7 @@ public:
_isKnockbackEmoteAllowed = false;
extraEvents.RescheduleEvent(EVENT_RESET_KNOCKBACK_EMOTE, 5s);
}
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
}
case EVENT_LAVA_BURST:
@@ -401,7 +401,7 @@ public:
extraEvents.RescheduleEvent(EVENT_RESET_KNOCKBACK_EMOTE, 5s);
}
}
- events.RepeatEvent(urand(11000, 30000));
+ events.Repeat(11s, 30s);
break;
}
case EVENT_SUBMERGE:
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp
index fc135b2817..08203f4439 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp
@@ -67,7 +67,7 @@ public:
case EVENT_ARCANE_EXPLOSION:
{
DoCastVictim(SPELL_ARCANE_EXPLOSION);
- events.RepeatEvent(urand(4000, 5000));
+ events.Repeat(4s, 5s);
break;
}
case EVENT_SHAZZRAH_CURSE:
@@ -76,26 +76,26 @@ public:
{
DoCast(target, SPELL_SHAZZRAH_CURSE);
}
- events.RepeatEvent(urand(23000, 26000));
+ events.Repeat(23s, 26s);
break;
}
case EVENT_MAGIC_GROUNDING:
{
DoCastSelf(SPELL_MAGIC_GROUNDING);
- events.RepeatEvent(urand(7000, 9000));
+ events.Repeat(7s, 9s);
break;
}
case EVENT_COUNTERSPELL:
{
DoCastAOE(SPELL_COUNTERSPELL);
- events.RepeatEvent(urand(15000, 18000));
+ events.Repeat(15s, 18s);
break;
}
case EVENT_SHAZZRAH_GATE:
{
DoCastAOE(SPELL_SHAZZRAH_GATE_DUMMY);
events.RescheduleEvent(EVENT_ARCANE_EXPLOSION, 3s, 6s);
- events.RepeatEvent(45000);
+ events.Repeat(45s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp
index 942a22f619..739a82d665 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp
@@ -72,7 +72,7 @@ public:
case EVENT_DEMORALIZING_SHOUT:
{
DoCastVictim(SPELL_DEMORALIZING_SHOUT);
- events.RepeatEvent(urand(12000, 18000));
+ events.Repeat(12s, 18s);
break;
}
case EVENT_INSPIRE:
@@ -84,19 +84,19 @@ public:
}
DoCastSelf(SPELL_INSPIRE);
- events.RepeatEvent(urand(13000, 20000));
+ events.Repeat(13s, 20s);
break;
}
case EVENT_KNOCKDOWN:
{
DoCastVictim(SPELL_KNOCKDOWN);
- events.RepeatEvent(urand(10000, 20000));
+ events.Repeat(10s, 20s);
break;
}
case EVENT_FLAMESPEAR:
{
DoCastRandomTarget(SPELL_FLAMESPEAR);
- events.RepeatEvent(urand(12000, 16000));
+ events.Repeat(12s, 16s);
break;
}
}
@@ -133,7 +133,7 @@ public:
events.ScheduleEvent(EVENT_DARK_STRIKE, 4s, 7s);
events.ScheduleEvent(EVENT_DARK_MENDING, 15s, 30s);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 2s, 4s);
- events.ScheduleEvent(EVENT_IMMOLATE, 3500ms, 6000ms);
+ events.ScheduleEvent(EVENT_IMMOLATE, 3500ms, 6s);
}
void UpdateAI(uint32 diff) override
@@ -157,7 +157,7 @@ public:
case EVENT_DARK_STRIKE:
{
DoCastVictim(SPELL_DARK_STRIKE);
- events.RepeatEvent(urand(4000, 7000));
+ events.Repeat(4s, 7s);
break;
}
case EVENT_DARK_MENDING:
@@ -169,7 +169,7 @@ public:
DoCast(target, SPELL_DARK_MENDING);
}
}
- events.RepeatEvent(urand(15000, 20000));
+ events.Repeat(15s, 20s);
break;
}
case EVENT_SHADOW_WORD_PAIN:
@@ -178,7 +178,7 @@ public:
{
DoCast(target, SPELL_SHADOW_WORD_PAIN);
}
- events.RepeatEvent(urand(2500, 5000));
+ events.Repeat(2500ms, 5s);
break;
}
case EVENT_IMMOLATE:
@@ -187,7 +187,7 @@ public:
{
DoCast(target, SPELL_IMMOLATE);
}
- events.RepeatEvent(urand(5000, 7000));
+ events.Repeat(5s, 7s);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.cpp
index 9d1d0033e2..73afa5f049 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.cpp
@@ -199,7 +199,7 @@ class spell_mc_play_dead_aura : public AuraScript
else
{
Unit::Kill(creatureTarget, creatureTarget);
- creatureTarget->DespawnOrUnsummon(14000);
+ creatureTarget->DespawnOrUnsummon(14s);
}
}
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp
index 44c7b68395..d52d5bb34a 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp
+++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp
@@ -90,7 +90,7 @@ public:
if (me->HealthBelowPct(67) && !health67)
{
me->CastSpell(me, SPELL_SMITE_STOMP, false);
- events.DelayEvents(10000);
+ events.DelayEvents(10s);
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MovePoint(EQUIP_TWO_SWORDS, 1.859f, -780.72f, 9.831f);
Talk(SAY_SWAP1);
@@ -105,7 +105,7 @@ public:
if (me->HealthBelowPct(34) && !health34)
{
me->CastSpell(me, SPELL_SMITE_STOMP, false);
- events.DelayEvents(10000);
+ events.DelayEvents(10s);
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MovePoint(EQUIP_MACE, 1.859f, -780.72f, 9.831f);
Talk(SAY_SWAP2);
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
index e4125d70d0..bfc418d000 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
@@ -131,7 +131,7 @@ public:
uint32 checkTimer;
ObjectGuid playerGUID;
- void SetGUID(ObjectGuid guid, int32) override
+ void SetGUID(ObjectGuid const& guid, int32) override
{
playerGUID = guid;
}
@@ -146,7 +146,7 @@ public:
{
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
player->GroupEventHappens(QUEST_A_FINE_MESS, me);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
index 70bcad38e2..e62ad33e53 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
@@ -183,7 +183,7 @@ struct boss_nightbane : public BossAI
me->GetMotionMaster()->MoveTakeoff(POINT_INTRO_TAKE_OFF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 10.0f, 13.99879f);
}).Schedule(4s, [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePath(me->GetEntry()*10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry()*10, false);
});
}
}
@@ -400,7 +400,7 @@ struct boss_nightbane : public BossAI
{
scheduler.Schedule(0s, [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePath(me->GetEntry()*10+1, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry()*10+1, false);
});
}
break;
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
index f804a28785..15e175dde7 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
@@ -151,7 +151,7 @@ struct boss_shade_of_aran : public BossAI
return me->GetDistance2d(roomCenter.GetPositionX(), roomCenter.GetPositionY()) < 45.0f;
}
- void SetGUID(ObjectGuid guid, int32 id) override
+ void SetGUID(ObjectGuid const& guid, int32 id) override
{
if (id == ACTION_ATIESH_REACT && !_atieshReaction)
{
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp
index bed3364478..07eb7da114 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp
@@ -123,6 +123,15 @@ struct boss_tenris_mirkblood : public BossAI
return;
DoCast(victim, SPELL_SUMMON_SANGUINE_SPIRIT_ON_KILL);
+
+ if (!_mirrorTarget)
+ return;
+
+ if (victim == _mirrorTarget)
+ {
+ me->RemoveAurasDueToSpell(SPELL_BLOOD_MIRROR0);
+ me->RemoveAurasDueToSpell(SPELL_BLOOD_MIRROR1);
+ }
}
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damageType, SpellSchoolMask damageSchoolMask) override
@@ -281,8 +290,8 @@ public:
bool OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
- if (instance->GetBossState(DATA_MIRKBLOOD) != DONE)
- if (Creature* mirkblood = instance->GetCreature(DATA_MIRKBLOOD))
+ if (Creature* mirkblood = instance->GetCreature(DATA_MIRKBLOOD))
+ if (mirkblood->IsAlive() && !mirkblood->IsInCombat())
mirkblood->AI()->Talk(SAY_APPROACH, player);
return false;
@@ -297,8 +306,8 @@ public:
bool OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
- if (instance->GetBossState(DATA_MIRKBLOOD) != DONE)
- if (Creature* mirkblood = instance->GetCreature(DATA_MIRKBLOOD))
+ if (Creature* mirkblood = instance->GetCreature(DATA_MIRKBLOOD))
+ if (mirkblood->IsAlive() && mirkblood->IsImmuneToPC())
mirkblood->SetImmuneToPC(false);
return false;
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
index 3b5092fab2..fa32df8185 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
@@ -88,7 +88,7 @@ struct npc_kilrek : public ScriptedAI
DoCast(Terestian, SPELL_BROKEN_PACT, true);
}
}
- me->DespawnOrUnsummon(15000);
+ me->DespawnOrUnsummon(15s);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
index cf45992a8e..84bd98bc66 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
@@ -170,7 +170,8 @@ public:
if (m_uiEventId == EVENT_OZ)
instance->SetData(DATA_OPERA_OZ_DEATHCOUNT, IN_PROGRESS);
- Start(false, false);
+ me->SetWalk(true);
+ Start(false);
}
void JustEngagedWith(Unit* /*who*/) override { }
@@ -523,9 +524,9 @@ public:
}
}
- me->DespawnOrUnsummon(100);
+ me->DespawnOrUnsummon(100ms);
if (Creature* arca = ObjectAccessor::GetCreature((*me), ArcanagosGUID))
- arca->DespawnOrUnsummon(100);
+ arca->DespawnOrUnsummon(100ms);
return 5000;
default:
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
index 8feeadedcb..91c2e40b03 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -138,7 +138,7 @@ struct boss_felblood_kaelthas : public BossAI
ScheduleTimedEvent(0ms, [&]{
DoCastVictim(SPELL_FIREBALL);
- }, 3000ms, 4500ms);
+ }, 3s, 4500ms);
ScheduleTimedEvent(15s, [&]{
Talk(SAY_PHOENIX);
DoCastSelf(SPELL_PHOENIX);
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
index 66edbda08a..e5535991f5 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
@@ -95,7 +95,7 @@ struct boss_selin_fireheart : public BossAI
BossAI::JustEngagedWith(who);
ScheduleTimedEvent(2500ms, [&]{
DoCastRandomTarget(SPELL_DRAIN_LIFE);
- }, 10000ms);
+ }, 10s);
ScheduleTimedEvent(2s, [&]{
me->RemoveAuraFromStack(SPELL_MANA_RAGE_TRIGGER);
DoCastAOE(SPELL_FEL_EXPLOSION);
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
index 403782eed0..0e04c702c8 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
@@ -141,7 +141,7 @@ struct boss_vexallus : public BossAI
void SummonedCreatureDies(Creature* summon, Unit* killer) override
{
summons.Despawn(summon);
- summon->DespawnOrUnsummon(1);
+ summon->DespawnOrUnsummon(1ms);
if (killer)
killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true, 0, 0, summon->GetGUID());
}
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
index eacc695482..521743897d 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
@@ -80,7 +80,7 @@ public:
{
if (Creature* kalecgos = instance->SummonCreature(NPC_KALECGOS, KalecgosSpawnPos))
{
- kalecgos->GetMotionMaster()->MovePath(PATH_KALECGOS_FLIGHT, false);
+ kalecgos->GetMotionMaster()->MoveWaypoint(PATH_KALECGOS_FLIGHT, false);
kalecgos->AI()->Talk(SAY_KALECGOS_SPAWN);
}
});
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index 4747e77658..8c51346655 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -230,7 +230,7 @@ public:
me->RemoveAllAuras();
me->CastSpell(attacker, SPELL_DUEL_VICTORY, true);
me->RestoreFaction();
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
}
}
}
@@ -396,7 +396,7 @@ public:
AttackStart(attacker);
}
- void SetGUID(ObjectGuid guid, int32) override
+ void SetGUID(ObjectGuid const& guid, int32) override
{
gothikGUID = guid;
events.ScheduleEvent(EVENT_GHOUL_MOVE_TO_PIT, 3s);
@@ -407,7 +407,7 @@ public:
{
if (type == POINT_MOTION_TYPE && point == 1)
{
- me->DespawnOrUnsummon(1500);
+ me->DespawnOrUnsummon(1500ms);
me->CastSpell(me, SPELL_GHOUL_SUBMERGE, true);
}
}
@@ -438,7 +438,7 @@ public:
if (owner->GetVictim())
AttackStart(owner->GetVictim());
- events.RepeatEvent(1000);
+ events.Repeat(1s);
return;
}
@@ -502,49 +502,6 @@ public:
};
};
-class npc_scarlet_cannon : public CreatureScript
-{
-public:
- npc_scarlet_cannon() : CreatureScript("npc_scarlet_cannon") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_scarlet_cannonAI(creature);
- }
-
- struct npc_scarlet_cannonAI : public VehicleAI
- {
- npc_scarlet_cannonAI(Creature* creature) : VehicleAI(creature) { summonAttackers = 0; }
-
- uint32 summonAttackers;
- void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool apply) override
- {
- summonAttackers = apply ? 8000 : 0;
- }
-
- void UpdateAI(uint32 diff) override
- {
- VehicleAI::UpdateAI(diff);
-
- if (summonAttackers)
- {
- summonAttackers += diff;
- if (summonAttackers >= 15000)
- {
- for (uint8 i = 0; i < 15; ++i)
- if (Creature* summon = me->SummonCreature(28834 /*NPC_SCARLET_FLEET_DEFENDER*/, 2192.56f + irand(-10, 10), -6147.90f + irand(-10, 10), 5.2f, 4.7f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 45000))
- {
- summon->SetHomePosition(me->GetHomePosition());
- summon->AI()->AttackStart(me);
- }
-
- summonAttackers = 1;
- }
- }
- }
- };
-};
-
/*######
##Quest 12848
######*/
@@ -760,22 +717,22 @@ public:
{
case EVENT_ICY_TOUCH:
DoCastVictim(SPELL_ICY_TOUCH);
- events.DelayEvents(1000, GCD_CAST);
+ events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_ICY_TOUCH, 5s, GCD_CAST);
break;
case EVENT_PLAGUE_STRIKE:
DoCastVictim(SPELL_PLAGUE_STRIKE);
- events.DelayEvents(1000, GCD_CAST);
+ events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_PLAGUE_STRIKE, 5s, GCD_CAST);
break;
case EVENT_BLOOD_STRIKE:
DoCastVictim(SPELL_BLOOD_STRIKE);
- events.DelayEvents(1000, GCD_CAST);
+ events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_BLOOD_STRIKE, 5s, GCD_CAST);
break;
case EVENT_DEATH_COIL:
DoCastVictim(SPELL_DEATH_COIL);
- events.DelayEvents(1000, GCD_CAST);
+ events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_DEATH_COIL, 5s, GCD_CAST);
break;
}
@@ -806,7 +763,7 @@ public:
ObjectGuid prisonerGUID;
- void SetGUID(ObjectGuid guid, int32 /*id*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
{
if (!prisonerGUID)
prisonerGUID = guid;
@@ -835,252 +792,6 @@ public:
}
};
-/*####
-## npc_scarlet_miner_cart
-####*/
-
-enum Spells_SM
-{
- SPELL_CART_CHECK = 54173,
- SPELL_CART_DRAG = 52465
-};
-
-class npc_scarlet_miner_cart : public CreatureScript
-{
-public:
- npc_scarlet_miner_cart() : CreatureScript("npc_scarlet_miner_cart") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_scarlet_miner_cartAI(creature);
- }
-
- struct npc_scarlet_miner_cartAI : public PassiveAI
- {
- npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature)
- {
- me->SetImmuneToAll(true);
- me->SetFaction(FACTION_FRIENDLY);
- me->SetDisplayFromModel(0); // Modelid2 is a horse.
- }
-
- ObjectGuid minerGUID;
-
- void SetGUID(ObjectGuid guid, int32 /*id*/) override
- {
- minerGUID = guid;
- }
-
- void DoAction(int32 /*param*/) override
- {
- if (Creature* miner = ObjectAccessor::GetCreature(*me, minerGUID))
- {
- me->SetWalk(false);
-
- //Not 100% correct, but movement is smooth. Sometimes miner walks faster
- //than normal, this speed is fast enough to keep up at those times.
- me->SetSpeed(MOVE_RUN, 1.25f);
-
- me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
- me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
- me->SetImmuneToAll(true);
- me->SetFaction(FACTION_FRIENDLY);
- }
- }
-
- void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply) override
- {
- who->SetVisible(!apply);
- if (!apply)
- if (Creature* miner = ObjectAccessor::GetCreature(*me, minerGUID))
- miner->DisappearAndDie();
- }
- };
-};
-
-/*####
-## npc_scarlet_miner
-####*/
-
-enum Says_SM
-{
- SAY_SCARLET_MINER_0 = 0,
- SAY_SCARLET_MINER_1 = 1
-};
-
-class npc_scarlet_miner : public CreatureScript
-{
-public:
- npc_scarlet_miner() : CreatureScript("npc_scarlet_miner") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_scarlet_minerAI(creature);
- }
-
- struct npc_scarlet_minerAI : public npc_escortAI
- {
- npc_scarlet_minerAI(Creature* creature) : npc_escortAI(creature)
- {
- me->SetReactState(REACT_PASSIVE);
- }
-
- uint32 IntroTimer;
- uint32 IntroPhase;
- ObjectGuid carGUID;
-
- void Reset() override
- {
- carGUID.Clear();
- IntroTimer = 0;
- IntroPhase = 0;
- }
-
- void InitWaypoint()
- {
- AddWaypoint(1, 2389.03f, -5902.74f, 109.014f, 5000);
- AddWaypoint(2, 2341.812012f, -5900.484863f, 102.619743f);
- AddWaypoint(3, 2308.34f, -5904.2f, 91.1099f);
- AddWaypoint(4, 2300.69f, -5912.99f, 86.1572f);
- AddWaypoint(5, 2294.142090f, -5927.274414f, 75.316849f);
- AddWaypoint(6, 2286.984375f, -5944.955566f, 63.714966f);
- AddWaypoint(7, 2280.001709f, -5961.186035f, 54.228283f);
- AddWaypoint(8, 2259.389648f, -5974.197754f, 42.359348f);
- AddWaypoint(9, 2242.882812f, -5984.642578f, 32.827850f);
- AddWaypoint(10, 2239.79f, -5989.31f, 30.4453f);
- AddWaypoint(11, 2236.52f, -5994.28f, 27.4829f);
- AddWaypoint(12, 2232.61f, -6000.23f, 23.1281f);
- AddWaypoint(13, 2228.69f, -6006.46f, 17.6638f);
- AddWaypoint(14, 2225.2f, -6012.39f, 12.9487f);
- AddWaypoint(15, 2217.265625f, -6028.959473f, 7.675705f);
- AddWaypoint(16, 2202.595947f, -6061.325684f, 5.882018f);
- AddWaypoint(17, 2188.974609f, -6080.866699f, 3.370027f);
-
- if (urand(0, 1))
- {
- AddWaypoint(18, 2176.483887f, -6110.407227f, 1.855181f);
- AddWaypoint(19, 2172.516602f, -6146.752441f, 1.074235f);
- AddWaypoint(20, 2138.918457f, -6158.920898f, 1.342926f);
- AddWaypoint(21, 2129.866699f, -6174.107910f, 4.380779f);
- AddWaypoint(22, 2125.250001f, -6181.230001f, 9.91997f);
- AddWaypoint(23, 2117.709473f, -6193.830078f, 13.3542f, 10000);
- }
- else
- {
- AddWaypoint(18, 2184.190186f, -6166.447266f, 0.968877f);
- AddWaypoint(19, 2234.265625f, -6163.741211f, 0.916021f);
- AddWaypoint(20, 2268.071777f, -6158.750977f, 1.822252f);
- AddWaypoint(21, 2270.028320f, -6176.505859f, 6.340538f);
- AddWaypoint(22, 2270.350001f, -6182.410001f, 10.42431f);
- AddWaypoint(23, 2271.739014f, -6195.401855f, 13.3542f, 10000);
- }
- }
-
- void InitCartQuest(Player* who)
- {
- carGUID = who->GetVehicleBase()->GetGUID();
- InitWaypoint();
- Start(false, false, who->GetGUID());
- SetDespawnAtFar(false);
- }
-
- void WaypointReached(uint32 waypointId) override
- {
- switch (waypointId)
- {
- case 1:
- if (Unit* car = ObjectAccessor::GetCreature(*me, carGUID))
- {
- me->SetFacingToObject(car);
- // xinef: add some flags
- car->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
- car->SetImmuneToAll(true);
- car->SetFaction(FACTION_FRIENDLY);
- }
- Talk(SAY_SCARLET_MINER_0);
- SetRun(true);
- IntroTimer = 4000;
- IntroPhase = 1;
- break;
- case 23:
- if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
- {
- car->SetPosition(car->GetPositionX(), car->GetPositionY(), me->GetPositionZ() + 1, car->GetOrientation());
- car->StopMovingOnCurrentPos();
- me->SetFacingToObject(car);
- car->RemoveAura(SPELL_CART_DRAG);
- }
- Talk(SAY_SCARLET_MINER_1);
- break;
- default:
- break;
- }
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (IntroPhase)
- {
- if (IntroTimer <= diff)
- {
- if (IntroPhase == 1)
- {
- if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
- DoCast(car, SPELL_CART_DRAG);
- IntroTimer = 800;
- IntroPhase = 2;
- }
- else
- {
- if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
- car->AI()->DoAction(0);
- IntroPhase = 0;
- }
- }
- else IntroTimer -= diff;
- }
- npc_escortAI::UpdateAI(diff);
- }
- };
-};
-
-/*######
-## go_inconspicuous_mine_car
-######*/
-
-enum Spells_Cart
-{
- SPELL_CART_SUMM = 52463
-};
-
-class go_inconspicuous_mine_car : public GameObjectScript
-{
-public:
- go_inconspicuous_mine_car() : GameObjectScript("go_inconspicuous_mine_car") { }
-
- bool OnGossipHello(Player* player, GameObject* /*go*/) override
- {
- if (player->GetQuestStatus(12701) == QUEST_STATUS_INCOMPLETE)
- {
- // Hack Why Trinity Dont Support Custom Summon Location
- if (Creature* miner = player->SummonCreature(28841, 2383.869629f, -5900.312500f, 107.996086f, player->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 1))
- {
- player->CastSpell(player, SPELL_CART_SUMM, true);
- if (Creature* car = player->GetVehicleCreatureBase())
- {
- if (car->GetEntry() == 28817)
- {
- car->AI()->SetGUID(miner->GetGUID());
- CAST_AI(npc_scarlet_miner::npc_scarlet_minerAI, miner->AI())->InitCartQuest(player);
- }
- }
- }
- }
-
- return true;
- }
-};
-
class spell_death_knight_initiate_visual : public SpellScript
{
PrepareSpellScript(spell_death_knight_initiate_visual);
@@ -1218,13 +929,9 @@ void AddSC_the_scarlet_enclave_c1()
RegisterSpellScript(spell_q12698_the_gift_that_keeps_on_giving);
new npc_scarlet_ghoul();
new npc_dkc1_gothik();
- new npc_scarlet_cannon();
new npc_unworthy_initiate();
new npc_unworthy_initiate_anchor();
new go_acherus_soul_prison();
- new npc_scarlet_miner();
- new npc_scarlet_miner_cart();
- new go_inconspicuous_mine_car();
RegisterSpellScript(spell_death_knight_initiate_visual);
RegisterSpellScript(spell_lich_king_whisper);
RegisterSpellScript(spell_lich_king_vo_blocker);
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
index 9c71aad73a..45cbf8d9a6 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
@@ -64,12 +64,12 @@ enum Koltira
//NPC_DEATH_KNIGHT_MOUNT = 29201,
MODEL_DEATH_KNIGHT_MOUNT = 25278,
- POINT_STAND_UP = 0,
- POINT_BOX = 1,
- POINT_ANTI_MAGIC_ZONE = 2,
+ POINT_STAND_UP = 1,
+ POINT_BOX = 2,
+ POINT_ANTI_MAGIC_ZONE = 3,
- POINT_MOUNT = 0,
- POINT_DESPAWN = 1
+ POINT_MOUNT = 1,
+ POINT_DESPAWN = 2
};
class npc_koltira_deathweaver : public CreatureScript
@@ -106,7 +106,7 @@ public:
Talk(SAY_BREAKOUT0);
me->m_Events.AddEventAtOffset([&] {
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
}, 5s);
}
@@ -167,13 +167,13 @@ public:
}
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1640.6724f, -6032.0527f, 134.82213f, 4.654973506927490234f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath(NPC_CRIMSON_ACOLYTE * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint(NPC_CRIMSON_ACOLYTE * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1641.0055f, -6031.893f, 134.82211f, 0.401425719261169433f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 1) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 1) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1639.7053f, -6031.7373f, 134.82213f, 2.443460941314697265f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 2) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 2) * 10, false);
break;
case 1:
Talk(SAY_BREAKOUT4);
@@ -182,13 +182,13 @@ public:
valroth->AI()->Talk(SAY_VALROTH_WAVE2);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1640.7958f, -6030.307f, 134.82211f, 4.65355682373046875f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 3) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 3) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1641.7305f, -6030.751f, 134.82211f, 6.143558979034423828f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 4) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 4) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1639.4657f, -6030.404f, 134.82211f, 4.502949237823486328f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 5) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 5) * 10, false);
break;
case 2:
Talk(SAY_BREAKOUT5);
@@ -197,16 +197,16 @@ public:
valroth->AI()->Talk(SAY_VALROTH_WAVE3);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1641.3405f, -6031.436f, 134.82211f, 4.612849712371826171f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 6) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 6) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1642.0404f, -6030.3843f, 134.82211f, 1.378810048103332519f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 7) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 7) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1640.1162f, -6029.7817f, 134.82211f, 5.707226753234863281f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 8) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 8) * 10, false);
if (Creature* acolyte = me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1640.9948f, -6029.8027f, 134.82211f, 1.605702877044677734f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
- acolyte->GetMotionMaster()->MovePath((NPC_CRIMSON_ACOLYTE + 9) * 10, false);
+ acolyte->GetMotionMaster()->MoveWaypoint((NPC_CRIMSON_ACOLYTE + 9) * 10, false);
break;
case 3:
Talk(SAY_BREAKOUT6);
@@ -223,7 +223,7 @@ public:
{
valroth->AI()->Talk(SAY_VALROTH_AGGRO);
valroth->SetReactState(REACT_AGGRESSIVE);
- valroth->GetMotionMaster()->MovePath(NPC_HIGH_INQUISITOR_VALROTH * 10, false);
+ valroth->GetMotionMaster()->MoveWaypoint(NPC_HIGH_INQUISITOR_VALROTH * 10, false);
}
return;
default:
@@ -262,7 +262,7 @@ public:
SetInvincibility(true);
me->SetReactState(REACT_PASSIVE);
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
- me->GetMotionMaster()->MovePath((me->GetEntry() + 1) * 10, false);
+ me->GetMotionMaster()->MoveWaypoint((me->GetEntry() + 1) * 10, false);
});
}
}
@@ -610,10 +610,10 @@ public:
// Start waypoint movement using WaypointMovementGenerator
if (uint32 pathId = me->GetWaypointPath())
{
- me->GetMotionMaster()->MovePath(pathId, true); // true = repeatable
+ me->GetMotionMaster()->MoveWaypoint(pathId, true); // true = repeatable
}
// Schedule the first ritual after 20-30s
- events.ScheduleEvent(EVENT_START_RITUAL, urand(20000, 30000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 20s, 30s);
}
void UpdateAI(uint32 diff) override
@@ -628,7 +628,7 @@ public:
{
if (isOnRitual) // Already performing ritual
{
- events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
@@ -655,7 +655,7 @@ public:
if (!nearestCorpse)
{
// No corpse found nearby: try again later
- events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
// Start ritual
@@ -702,7 +702,7 @@ public:
// Resume paused waypoint movement
me->ResumeMovement();
// Schedule next ritual in 20-30s
- events.ScheduleEvent(EVENT_START_RITUAL, urand(20000, 30000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 20s, 30s);
break;
}
}
@@ -723,9 +723,9 @@ public:
me->SetFacingToObject(geist);
geistGUID = geist->GetGUID();
// Geist found: schedule Ghoulplosion at +3s, then raising at +6s, then resume at +9s
- events.ScheduleEvent(EVENT_GHOULPLOSION, 3000);
- events.ScheduleEvent(EVENT_RAISE_GHOUL, 6000);
- events.ScheduleEvent(EVENT_RESUME_WP, 9000);
+ events.ScheduleEvent(EVENT_GHOULPLOSION, 3s);
+ events.ScheduleEvent(EVENT_RAISE_GHOUL, 6s);
+ events.ScheduleEvent(EVENT_RESUME_WP, 9s);
}
else
{
@@ -737,8 +737,8 @@ public:
me->SetFacingToObject(corpse);
}
- events.ScheduleEvent(EVENT_RAISE_GHOUL, 3000);
- events.ScheduleEvent(EVENT_RESUME_WP, 6000);
+ events.ScheduleEvent(EVENT_RAISE_GHOUL, 3s);
+ events.ScheduleEvent(EVENT_RESUME_WP, 6s);
}
}
}
@@ -797,10 +797,10 @@ public:
// Start waypoint movement using WaypointMovementGenerator
if (uint32 pathId = me->GetWaypointPath())
{
- me->GetMotionMaster()->MovePath(pathId, true); // true = repeatable
+ me->GetMotionMaster()->MoveWaypoint(pathId, true); // true = repeatable
}
// Schedule the first ritual after 50-60s
- events.ScheduleEvent(EVENT_START_RITUAL, urand(50000, 60000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 50s, 60s);
}
void UpdateAI(uint32 diff) override
{
@@ -814,7 +814,7 @@ public:
{
if (isOnRitual) // Already performing ritual
{
- events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
@@ -841,7 +841,7 @@ public:
}
if (!nearestCorpse)
{
- events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
// Start ritual
@@ -894,7 +894,7 @@ public:
// Resume paused waypoint movement
me->ResumeMovement();
// Schedule next ritual in 50-60s
- events.ScheduleEvent(EVENT_START_RITUAL, urand(50000, 60000));
+ events.ScheduleEvent(EVENT_START_RITUAL, 50s, 60s);
break;
}
}
@@ -923,15 +923,15 @@ public:
me->SetFacingToObject(geist);
geistGUID = geist->GetGUID();
// Geist present: Ghoulplosion in 3s (with SAY_GEIST), raise in 6s, resume in 9s
- events.ScheduleEvent(EVENT_GHOULPLOSION, 3000);
- events.ScheduleEvent(EVENT_RAISE_DEAD, 6000);
- events.ScheduleEvent(EVENT_RESUME_WP, 9000);
+ events.ScheduleEvent(EVENT_GHOULPLOSION, 3s);
+ events.ScheduleEvent(EVENT_RAISE_DEAD, 6s);
+ events.ScheduleEvent(EVENT_RESUME_WP, 9s);
}
else
{
// No Geist: raise in 3s, resume in 6s
- events.ScheduleEvent(EVENT_RAISE_DEAD, 3000);
- events.ScheduleEvent(EVENT_RESUME_WP, 6000);
+ events.ScheduleEvent(EVENT_RAISE_DEAD, 3s);
+ events.ScheduleEvent(EVENT_RESUME_WP, 6s);
}
}
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
index bfd1d01b9c..9e481aee9d 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
@@ -473,7 +473,7 @@ public:
if (battleStarted != ENCOUNTER_STATE_FIGHT)
return;
- me->m_Events.AddEvent(new DelayedSummonEvent(me, creature->GetEntry(), *creature), me->m_Events.CalculateTime(3000));
+ me->m_Events.AddEventAtOffset(new DelayedSummonEvent(me, creature->GetEntry(), *creature), 3s);
if (creature->GetEntry() >= NPC_RAMPAGING_ABOMINATION)
{
--scourgeRemaining;
@@ -504,7 +504,7 @@ public:
tirion->AI()->Talk(SAY_LIGHT_OF_DAWN25, 4s);
tirion->m_Events.AddEventAtOffset([&, tirion] {
- tirion->GetMotionMaster()->MovePath(NPC_HIGHLORD_TIRION_FORDRING * 10, false);
+ tirion->GetMotionMaster()->MoveWaypoint(NPC_HIGHLORD_TIRION_FORDRING * 10, false);
}, 14s);
events.Reset();
@@ -526,11 +526,11 @@ public:
if (battleStarted != ENCOUNTER_STATE_FIGHT)
return;
- events.RescheduleEvent(EVENT_SPELL_ANTI_MAGIC_ZONE, 15000);
- events.RescheduleEvent(EVENT_SPELL_DEATH_STRIKE, 8000);
- events.RescheduleEvent(EVENT_SPELL_DEATH_EMBRACE, 5000);
- events.RescheduleEvent(EVENT_SPELL_UNHOLY_BLIGHT, 10000);
- events.RescheduleEvent(EVENT_SPELL_DARION_MOD_DAMAGE, 500);
+ events.RescheduleEvent(EVENT_SPELL_ANTI_MAGIC_ZONE, 15s);
+ events.RescheduleEvent(EVENT_SPELL_DEATH_STRIKE, 8s);
+ events.RescheduleEvent(EVENT_SPELL_DEATH_EMBRACE, 5s);
+ events.RescheduleEvent(EVENT_SPELL_UNHOLY_BLIGHT, 10s);
+ events.RescheduleEvent(EVENT_SPELL_DARION_MOD_DAMAGE, 500ms);
}
void Reset() override
@@ -660,14 +660,14 @@ public:
{
Position pos = LightOfDawnPos[first];
summon->SetHomePosition(pos);
- summon->GetMotionMaster()->MovePoint(1, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), true, false);
+ summon->GetMotionMaster()->MovePoint(1, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, true, false);
}
first = first == 0 ? 1 : 0;
}
Position pos = LightOfDawnPos[first];
me->SetHomePosition(pos);
me->SetWalk(false);
- me->GetMotionMaster()->MovePoint(1, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), true, true);
+ me->GetMotionMaster()->MovePoint(1, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, true, true);
DoCastSelf(SPELL_THE_MIGHT_OF_MOGRAINE, true);
break;
}
@@ -691,8 +691,8 @@ public:
{
orbaz->SetReactState(REACT_PASSIVE);
orbaz->AI()->Talk(EMOTE_LIGHT_OF_DAWN04);
- orbaz->GetMotionMaster()->MovePoint(2, LightOfDawnPos[2], true, true);
- orbaz->DespawnOrUnsummon(7000);
+ orbaz->GetMotionMaster()->MovePoint(2, LightOfDawnPos[2], FORCED_MOVEMENT_NONE, 0.f, true, true);
+ orbaz->DespawnOrUnsummon(7s);
}
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
@@ -839,7 +839,7 @@ public:
alex->AI()->Talk(SAY_LIGHT_OF_DAWN41);
if (Creature* darion = GetEntryFromSummons(NPC_DARION_MOGRAINE))
- darion->DespawnOrUnsummon(3000);
+ darion->DespawnOrUnsummon(3s);
break;
case EVENT_OUTRO_SCENE_19:
if (Creature* alex = GetEntryFromSummons(NPC_HIGHLORD_ALEXANDROS_MOGRAINE))
@@ -886,7 +886,7 @@ public:
case EVENT_OUTRO_SCENE_23:
if (Creature* alex = GetEntryFromSummons(NPC_HIGHLORD_ALEXANDROS_MOGRAINE))
{
- alex->DespawnOrUnsummon(5000);
+ alex->DespawnOrUnsummon(5s);
alex->SetVisible(false);
}
break;
@@ -1055,13 +1055,13 @@ public:
if (Creature* lk = GetEntryFromSummons(NPC_THE_LICH_KING))
{
lk->CastSpell(lk, SPELL_EXIT_TELEPORT_VISUAL, true);
- lk->DespawnOrUnsummon(1500);
+ lk->DespawnOrUnsummon(1500ms);
}
if (Creature* tirion = GetEntryFromSummons(NPC_HIGHLORD_TIRION_FORDRING))
{
float o = me->GetAngle(tirion);
- tirion->GetMotionMaster()->MovePoint(4, me->GetPositionX() + 2.0f * cos(o), me->GetPositionY() + 2.0f * std::sin(o), me->GetPositionZ(), false);
+ tirion->GetMotionMaster()->MovePoint(4, me->GetPositionX() + 2.0f * cos(o), me->GetPositionY() + 2.0f * std::sin(o), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
tirion->SetFaction(FACTION_FRIENDLY);
}
@@ -1145,7 +1145,7 @@ public:
}
case EVENT_OUTRO_SCENE_61:
summons.DespawnAll();
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
events.Reset();
return;
}
@@ -1269,7 +1269,7 @@ class spell_chapter5_return_to_capital : public SpellScript
if (creature)
{
creature->PauseMovement(5000);
- creature->SetTimedFacingToObject(player, 30000);
+ creature->SetFacingToObject(player, 30s);
if (roll_chance_i(30))
{
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
index 8b585920c9..3392b3a953 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
@@ -36,16 +36,13 @@ enum BossData
GANDLING_ROOM_TO_USE
};
-enum Timers
-{
- TIMER_ARCANE_MIN = 8000,
- TIMER_ARCANE_MAX = 14000,
- TIMER_CURSE_MIN = 20000,
- TIMER_CURSE_MAX = 30000,
- TIMER_SHIELD_MIN = 30000,
- TIMER_SHIELD_MAX = 40000,
- TIMER_PORTAL = 25000
-};
+constexpr Milliseconds TIMER_ARCANE_MIN = 8s;
+constexpr Milliseconds TIMER_ARCANE_MAX = 14s;
+constexpr Milliseconds TIMER_CURSE_MIN = 20s;
+//constexpr Milliseconds TIMER_CURSE_MAX = 30s;
+constexpr Milliseconds TIMER_SHIELD_MIN = 30s;
+//constexpr Milliseconds TIMER_SHIELD_MAX = 40s;
+constexpr Milliseconds TIMER_PORTAL = 25s;
enum IdPortalSpells
{
@@ -335,18 +332,18 @@ public:
{
case SPELL_ARCANE_MISSILES:
DoCastVictim(SPELL_ARCANE_MISSILES);
- events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
+ events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_CURSE_DARKMASTER:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
{
DoCast(target, SPELL_CURSE_DARKMASTER);
}
- events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
+ events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_SHADOW_SHIELD:
DoCastSelf(SPELL_SHADOW_SHIELD);
- events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
+ events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_SHADOW_PORTAL:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
index b58ad2de39..3169ee1bb5 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
@@ -56,7 +56,7 @@ enum Events
enum Misc
{
WEAPON_KIRTONOS_STAFF = 11365,
- POINT_KIRTONOS_LAND = 13,
+ POINT_KIRTONOS_LAND = 14,
KIRTONOS_PATH = 105061,
EMOTE_SUMMONED = 0
@@ -103,7 +103,7 @@ public:
void EnterEvadeMode(EvadeReason /*why*/) override
{
instance->SetData(DATA_KIRTONOS_THE_HERALD, FAIL);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void MovementInform(uint32 type, uint32 id) override
@@ -139,7 +139,7 @@ public:
switch (events2.ExecuteEvent())
{
case INTRO_1:
- me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(KIRTONOS_PATH, false);
Talk(EMOTE_SUMMONED);
break;
case INTRO_2:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
index 5363fac88e..253608fd51 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
@@ -399,17 +399,17 @@ public:
{
case 1:
me->CastSpell(me, BONE_ARMOR_SPELL, false);
- events.RepeatEvent(60000);
+ events.Repeat(60s);
break;
case 2:
if (Unit* target = SelectUnitCasting())
{
me->CastSpell(target, COUNTER_SPELL, false);
- events.RepeatEvent(urand(10000, 20000));
+ events.Repeat(10s, 20s);
}
else
{
- events.RepeatEvent(400);
+ events.Repeat(400ms);
}
break;
case 3:
@@ -417,11 +417,11 @@ public:
{
me->CastSpell(target, DRAIN_MANA_SPELL, false);
}
- events.RepeatEvent(urand(13000, 20000));
+ events.Repeat(13s, 20s);
break;
case 4:
me->CastSpell(me->GetVictim(), SHADOWBOLT_VOLLEY_SPELL, true);
- events.RepeatEvent(urand(11000, 17000));
+ events.Repeat(11s, 17s);
break;
}
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
index 9435fd1943..affaef9dcf 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
@@ -135,14 +135,14 @@ public:
if (_slaughterProgress == 2)
{
for (uint32 i = 0; i < 33; ++i)
- events.ScheduleEvent(EVENT_SPAWN_MINDLESS, 5000 + i * 210);
+ events.ScheduleEvent(EVENT_SPAWN_MINDLESS, Milliseconds(5000 + i * 210));
if (Creature* baron = instance->GetCreature(_baronRivendareGUID))
if (GameObject* gate = baron->FindNearestGameObject(GO_SLAUGHTER_GATE_SIDE, 200.0f))
gate->SetGoState(GO_STATE_ACTIVE);
}
if (_slaughterProgress == 3)
{
- events.ScheduleEvent(EVENT_SPAWN_BLACK_GUARD, 20000);
+ events.ScheduleEvent(EVENT_SPAWN_BLACK_GUARD, 20s);
}
if (_slaughterProgress == 4)
{
@@ -296,7 +296,7 @@ public:
_baronRunProgress = DATA_BARON_RUN_GATE;
_baronRunTime = 45;
DoCastSpellOnPlayers(SPELL_BARON_ULTIMATUM);
- events.ScheduleEvent(EVENT_BARON_TIME, 60000);
+ events.ScheduleEvent(EVENT_BARON_TIME, 60s);
if (Creature* baron = instance->GetCreature(_baronRivendareGUID))
baron->AI()->Talk(SAY_BARON_INIT_YELL);
@@ -379,12 +379,12 @@ public:
data >> _barthilasrunProgress;
if (_baronRunTime)
{
- events.ScheduleEvent(EVENT_BARON_TIME, 60000);
+ events.ScheduleEvent(EVENT_BARON_TIME, 60s);
}
if (_slaughterProgress > 0 && _slaughterProgress < 4)
{
- events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5000);
+ events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5s);
}
}
@@ -455,20 +455,20 @@ public:
if (i == 0)
{
// set timer to reset the trap
- events.ScheduleEvent(EVENT_GATE1_TRAP, 30 * MINUTE * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE1_TRAP, 1800s);
// set timer to reopen gates
- events.ScheduleEvent(EVENT_GATE1_DELAY, 20 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE1_DELAY, 20s);
// set timer to spawn the plagued critters
- events.ScheduleEvent(EVENT_GATE1_CRITTER_DELAY, 2 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE1_CRITTER_DELAY, 2s);
}
else if (i == 1)
{
// set timer to reset the trap
- events.ScheduleEvent(EVENT_GATE2_TRAP, 30 * MINUTE * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE2_TRAP, 1800s);
// set timer to reopen gates
- events.ScheduleEvent(EVENT_GATE2_DELAY, 20 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE2_DELAY, 20s);
// set timer to spawn the plagued critters
- events.ScheduleEvent(EVENT_GATE2_CRITTER_DELAY, 2 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_GATE2_CRITTER_DELAY, 2s);
}
}
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
index e7937c6226..1df2bc3955 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
@@ -196,10 +196,10 @@ struct npc_madrigosa : public NullCreatureAI
me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD);
me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_MAD_1, 2000);
+ events.ScheduleEvent(EVENT_MAD_1, 2s);
}
else if (param == ACTION_SPAWN_FELMYST)
- events.ScheduleEvent(EVENT_SPAWN_FELMYST, 60000);
+ events.ScheduleEvent(EVENT_SPAWN_FELMYST, 60s);
}
void UpdateAI(uint32 diff) override
@@ -217,27 +217,27 @@ struct npc_madrigosa : public NullCreatureAI
}
me->GetMotionMaster()->MoveTakeoff(1, 1477.94f, 643.22f, 21.21f);
me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
- events.ScheduleEvent(EVENT_MAD_2, 4000);
+ events.ScheduleEvent(EVENT_MAD_2, 4s);
break;
case EVENT_MAD_2:
Talk(SAY_MAD_1);
me->CastSpell(me, SPELL_MADRIGOSA_FREEZE, false);
- events.ScheduleEvent(EVENT_MAD_2_1, 1000);
+ events.ScheduleEvent(EVENT_MAD_2_1, 1s);
break;
case EVENT_MAD_2_1:
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_MADRIGOSA_FROST_BREATH, false);
- events.ScheduleEvent(EVENT_MAD_3, 7000);
+ events.ScheduleEvent(EVENT_MAD_3, 7s);
break;
case EVENT_MAD_3:
Talk(SAY_MAD_2);
- events.ScheduleEvent(EVENT_MAD_4, 7000);
+ events.ScheduleEvent(EVENT_MAD_4, 7s);
break;
case EVENT_MAD_4:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO);
- events.ScheduleEvent(EVENT_MAD_5, 5000);
+ events.ScheduleEvent(EVENT_MAD_5, 5s);
break;
case EVENT_MAD_5:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -245,7 +245,7 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
}
- events.ScheduleEvent(EVENT_MAD_6, 10000);
+ events.ScheduleEvent(EVENT_MAD_6, 10s);
break;
case EVENT_MAD_6:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -255,21 +255,21 @@ struct npc_madrigosa : public NullCreatureAI
}
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
me->SetDisableGravity(true);
- events.ScheduleEvent(EVENT_MAD_7, 4000);
+ events.ScheduleEvent(EVENT_MAD_7, 4s);
break;
case EVENT_MAD_7:
Talk(SAY_MAD_3);
me->CastSpell(me, SPELL_MADRIGOSA_FROST_BLAST, false);
- events.ScheduleEvent(EVENT_MAD_8, 3000);
- events.ScheduleEvent(EVENT_MAD_8, 5000);
- events.ScheduleEvent(EVENT_MAD_8_1, 6000);
- events.ScheduleEvent(EVENT_MAD_8, 6500);
- events.ScheduleEvent(EVENT_MAD_8, 7500);
- events.ScheduleEvent(EVENT_MAD_8, 8500);
- events.ScheduleEvent(EVENT_MAD_8, 9500);
- events.ScheduleEvent(EVENT_MAD_9, 11000);
- events.ScheduleEvent(EVENT_MAD_8, 12000);
- events.ScheduleEvent(EVENT_MAD_8, 14000);
+ events.ScheduleEvent(EVENT_MAD_8, 3s);
+ events.ScheduleEvent(EVENT_MAD_8, 5s);
+ events.ScheduleEvent(EVENT_MAD_8_1, 6s);
+ events.ScheduleEvent(EVENT_MAD_8, 6500ms);
+ events.ScheduleEvent(EVENT_MAD_8, 7500ms);
+ events.ScheduleEvent(EVENT_MAD_8, 8500ms);
+ events.ScheduleEvent(EVENT_MAD_8, 9500ms);
+ events.ScheduleEvent(EVENT_MAD_9, 11s);
+ events.ScheduleEvent(EVENT_MAD_8, 12s);
+ events.ScheduleEvent(EVENT_MAD_8, 14s);
break;
case EVENT_MAD_8:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -286,27 +286,27 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_FEL_FIREBALL, false);
brutallus->AI()->Talk(YELL_INTRO_BREAK_ICE);
}
- events.ScheduleEvent(EVENT_MAD_11, 6000);
+ events.ScheduleEvent(EVENT_MAD_11, 6s);
break;
//case EVENT_MAD_10:
case EVENT_MAD_11:
me->SetDisableGravity(false);
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
- events.ScheduleEvent(EVENT_MAD_13, 2500);
+ events.ScheduleEvent(EVENT_MAD_13, 2500ms);
break;
case EVENT_MAD_13:
Talk(SAY_MAD_4);
me->RemoveAllAuras();
me->CastSpell(me, SPELL_MADRIGOSA_ENCAPSULATE, false);
- events.ScheduleEvent(EVENT_MAD_14, 2000);
+ events.ScheduleEvent(EVENT_MAD_14, 2s);
break;
case EVENT_MAD_14:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->SetDisableGravity(true);
- brutallus->GetMotionMaster()->MovePoint(0, brutallus->GetPositionX(), brutallus->GetPositionY() - 30.0f, brutallus->GetPositionZ() + 15.0f, false, true);
+ brutallus->GetMotionMaster()->MovePoint(0, brutallus->GetPositionX(), brutallus->GetPositionY() - 30.0f, brutallus->GetPositionZ() + 15.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, true);
}
- events.ScheduleEvent(EVENT_MAD_15, 10000);
+ events.ScheduleEvent(EVENT_MAD_15, 10s);
break;
case EVENT_MAD_15:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -316,28 +316,28 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->GetMotionMaster()->MoveFall();
brutallus->AI()->Talk(YELL_INTRO_CHARGE);
}
- events.ScheduleEvent(EVENT_MAD_16, 1400);
+ events.ScheduleEvent(EVENT_MAD_16, 1400ms);
break;
case EVENT_MAD_16:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->CastSpell(me, SPELL_BRUTALLUS_CHARGE, true);
- events.ScheduleEvent(EVENT_MAD_17, 1200);
+ events.ScheduleEvent(EVENT_MAD_17, 1200ms);
break;
case EVENT_MAD_17:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H);
- events.ScheduleEvent(EVENT_MAD_18, 500);
+ events.ScheduleEvent(EVENT_MAD_18, 500ms);
break;
case EVENT_MAD_18:
Talk(SAY_MAD_5);
me->SetDynamicFlag(UNIT_DYNFLAG_DEAD);
me->SetStandState(UNIT_STAND_STATE_DEAD);
- events.ScheduleEvent(EVENT_MAD_19, 6000);
+ events.ScheduleEvent(EVENT_MAD_19, 6s);
break;
case EVENT_MAD_19:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO_KILL_MADRIGOSA);
- events.ScheduleEvent(EVENT_MAD_20, 7000);
+ events.ScheduleEvent(EVENT_MAD_20, 7s);
break;
case EVENT_MAD_20:
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
@@ -347,7 +347,7 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->AI()->Talk(YELL_INTRO_TAUNT);
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_BREAK_ICE, false);
}
- events.ScheduleEvent(EVENT_MAD_21, 4000);
+ events.ScheduleEvent(EVENT_MAD_21, 4s);
break;
case EVENT_MAD_21:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -360,7 +360,7 @@ struct npc_madrigosa : public NullCreatureAI
break;
case EVENT_SPAWN_FELMYST:
DoCastAOE(SPELL_SUMMON_FELBLAZE, true);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
break;
}
}
@@ -382,7 +382,7 @@ class spell_madrigosa_activate_barrier : public SpellScript
WorldPacket pkt;
go->BuildValuesUpdateBlockForPlayer(&data, player);
data.BuildPacket(pkt);
- player->GetSession()->SendPacket(&pkt);
+ player->SendDirectMessage(&pkt);
});
}
}
@@ -409,7 +409,7 @@ class spell_madrigosa_deactivate_barrier : public SpellScript
WorldPacket pkt;
go->BuildValuesUpdateBlockForPlayer(&data, player);
data.BuildPacket(pkt);
- player->GetSession()->SendPacket(&pkt);
+ player->SendDirectMessage(&pkt);
});
}
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
index c9b0ad3f12..75ee7dd055 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
@@ -157,7 +157,7 @@ struct boss_felmyst : public BossAI
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SendMovementFlagUpdate();
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, true);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, true);
}
}
@@ -205,7 +205,7 @@ struct boss_felmyst : public BossAI
// Summon Kalecgos (human form of kalecgos fight)
if (Creature* kalec = me->SummonCreature(NPC_KALECGOS_FELMYST, 1573.1461f, 755.20245f, 99.524956f, 3.595378f))
- kalec->GetMotionMaster()->MovePoint(POINT_KALECGOS, 1474.2347f, 624.0703f, 29.32589f, false, true);
+ kalec->GetMotionMaster()->MovePoint(POINT_KALECGOS, 1474.2347f, 624.0703f, 29.32589f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, true);
}
void ScheduleGroundAbilities()
@@ -312,25 +312,26 @@ struct boss_felmyst : public BossAI
++_strafeCount;
_currentLane = urand(0, 2);
if (isRightSide)
- me->GetMotionMaster()->MovePoint(POINT_LANE, RightSideLanes[_currentLane], false);
+ me->GetMotionMaster()->MovePoint(POINT_LANE, RightSideLanes[_currentLane], FORCED_MOVEMENT_NONE, 0.f, false);
else
- me->GetMotionMaster()->MovePoint(POINT_LANE, LeftSideLanes[_currentLane], false);
+ me->GetMotionMaster()->MovePoint(POINT_LANE, LeftSideLanes[_currentLane], FORCED_MOVEMENT_NONE, 0.f, false);
}, 5s);
break;
case POINT_LANE:
Talk(EMOTE_BREATH);
- me->m_Events.AddEventAtOffset([&] {
+ me->m_Events.AddEventAtOffset([this]()
+ {
for (uint8 i = 0; i < 16; ++i)
- me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(i*250));
+ me->m_Events.AddEventAtOffset(new CorruptTriggers(me, _currentLane), Milliseconds(i * 250));
}, 5s);
me->m_Events.AddEventAtOffset([&] {
DoCastSelf(SPELL_FELMYST_SPEED_BURST, true);
if (me->FindNearestCreature(NPC_WORLD_TRIGGER_RIGHT, 30.0f))
- me->GetMotionMaster()->MovePoint(POINT_AIR_BREATH_END, LeftSideLanes[_currentLane], false);
+ me->GetMotionMaster()->MovePoint(POINT_AIR_BREATH_END, LeftSideLanes[_currentLane], FORCED_MOVEMENT_NONE, 0.f, false);
else
- me->GetMotionMaster()->MovePoint(POINT_AIR_BREATH_END, RightSideLanes[_currentLane], false);
+ me->GetMotionMaster()->MovePoint(POINT_AIR_BREATH_END, RightSideLanes[_currentLane], FORCED_MOVEMENT_NONE, 0.f, false);
}, 5s);
break;
case POINT_AIR_BREATH_END:
@@ -338,9 +339,9 @@ struct boss_felmyst : public BossAI
me->m_Events.AddEventAtOffset([&] {
if (me->FindNearestCreature(NPC_WORLD_TRIGGER_RIGHT, 30.0f))
- me->GetMotionMaster()->MovePoint(POINT_AIR_UP, RightSide, false);
+ me->GetMotionMaster()->MovePoint(POINT_AIR_UP, RightSide, FORCED_MOVEMENT_NONE, 0.f, false);
else
- me->GetMotionMaster()->MovePoint(POINT_AIR_UP, LeftSide, false);
+ me->GetMotionMaster()->MovePoint(POINT_AIR_UP, LeftSide, FORCED_MOVEMENT_NONE, 0.f, false);
}, 2s);
break;
}
@@ -362,7 +363,7 @@ struct boss_felmyst : public BossAI
me->m_Events.AddEventAtOffset([&] {
me->SetImmuneToPC(false);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, true);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, true);
}, 8500ms);
});
}
@@ -425,7 +426,7 @@ struct npc_demonic_vapor_trail : public NullCreatureAI
void Reset() override
{
me->CastSpell(me, SPELL_DEMONIC_VAPOR_TRAIL_PERIODIC, true);
- me->DespawnOrUnsummon(20000);
+ me->DespawnOrUnsummon(20s);
}
void SpellHitTarget(Unit* /*unit*/, SpellInfo const* spellInfo) override
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
index 221f15a236..af4a14d7d8 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
@@ -387,7 +387,7 @@ struct boss_kiljaeden : public BossAI
{
anveena->RemoveAllAuras();
anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true);
- anveena->DespawnOrUnsummon(1500);
+ anveena->DespawnOrUnsummon(1500ms);
DoCastSelf(SPELL_CUSTOM_08_STATE, true);
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
scheduler.CancelAll();
@@ -554,8 +554,8 @@ struct boss_kiljaeden : public BossAI
summon->SetDisableGravity(true);
summon->CastSpell(summon, SPELL_ARMAGEDDON_VISUAL, true);
summon->SetPosition(summon->GetPositionX(), summon->GetPositionY(), summon->GetPositionZ() + 20.0f, 0.0f);
- summon->m_Events.AddEvent(new CastArmageddon(summon), summon->m_Events.CalculateTime(6000));
- summon->DespawnOrUnsummon(urand(8000, 10000));
+ summon->m_Events.AddEventAtOffset(new CastArmageddon(summon), 6s);
+ summon->DespawnOrUnsummon(randtime(8s, 10s));
}
}
@@ -719,7 +719,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
me->SetCanFly(false);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_TELEPORT_AND_TRANSFORM, true);
- events.ScheduleEvent(EVENT_SCENE_01, 35000);
+ events.ScheduleEvent(EVENT_SCENE_01, 35s);
}
}
@@ -729,25 +729,18 @@ struct npc_kalecgos_kj : public NullCreatureAI
if (summon->GetEntry() == NPC_SHATTERED_SUN_RIFTWAKER)
{
summon->CastSpell(summon, SPELL_TELEPORT_VISUAL, true);
- Movement::MoveSplineInit init(summon);
+
if (summons.size() == 1)
- {
- init.MoveTo(1727.08f, 656.82f, 28.37f, false, true);
- init.SetFacing(5.14f);
- }
+ summon->GetMotionMaster()->MovePoint(0, 1727.08f, 656.82f, 28.37f, FORCED_MOVEMENT_NONE, 0.f, 5.14f, false, true);
else
- {
- init.MoveTo(1738.84f, 627.32f, 28.26f, false, true);
- init.SetFacing(2.0f);
- }
- init.Launch();
+ summon->GetMotionMaster()->MovePoint(0, 1738.84f, 627.32f, 28.26f, FORCED_MOVEMENT_NONE, 0.f, 2.0f, false, true);
}
else if (summon->GetEntry() == NPC_SHATTRATH_PORTAL_DUMMY)
{
if (Creature* riftwaker = summon->FindNearestCreature(NPC_SHATTERED_SUN_RIFTWAKER, 10.0f))
riftwaker->CastSpell(summon, SPELL_OPEN_PORTAL_FROM_SHATTRATH, false);
summon->SetWalk(true);
- summon->GetMotionMaster()->MovePoint(0, summon->GetPositionX(), summon->GetPositionY(), summon->GetPositionZ() + 30.0f, false, true);
+ summon->GetMotionMaster()->MovePoint(0, summon->GetPositionX(), summon->GetPositionY(), summon->GetPositionZ() + 30.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, true);
}
else if (summon->GetEntry() == NPC_INERT_PORTAL)
summon->CastSpell(summon, SPELL_BOSS_ARCANE_PORTAL_STATE, true);
@@ -762,7 +755,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
{
summon->CastSpell(summon, SPELL_TELEPORT_VISUAL, true);
summon->SetWalk(true);
- summon->GetMotionMaster()->MovePoint(0, 1710.15f, 639.23f, 27.311f, false, true);
+ summon->GetMotionMaster()->MovePoint(0, 1710.15f, 639.23f, 27.311f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, true);
}
else if (summon->GetEntry() == NPC_THE_CORE_OF_ENTROPIUS)
summon->GetMotionMaster()->MovePoint(0, summon->GetPositionX(), summon->GetPositionY(), 30.0f);
@@ -775,69 +768,69 @@ struct npc_kalecgos_kj : public NullCreatureAI
{
case EVENT_SCENE_01:
Talk(SAY_KALECGOS_GOODBYE);
- events.ScheduleEvent(eventId + 1, 15000);
+ events.ScheduleEvent(eventId + 1, 15s);
break;
case EVENT_SCENE_02:
me->SummonCreature(NPC_SHATTERED_SUN_RIFTWAKER, 1688.42f, 641.82f, 27.60f, 0.67f);
me->SummonCreature(NPC_SHATTERED_SUN_RIFTWAKER, 1712.58f, 616.29f, 27.78f, 0.76f);
- events.ScheduleEvent(eventId + 1, 6000);
+ events.ScheduleEvent(eventId + 1, 6s);
break;
case EVENT_SCENE_03:
me->SummonCreature(NPC_SHATTRATH_PORTAL_DUMMY, 1727.08f + cos(5.14f), 656.82f + std::sin(5.14f), 28.37f + 2.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000);
me->SummonCreature(NPC_SHATTRATH_PORTAL_DUMMY, 1738.84f + cos(2.0f), 627.32f + std::sin(2.0f), 28.26f + 2.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000);
- events.ScheduleEvent(eventId + 1, 11000);
+ events.ScheduleEvent(eventId + 1, 11s);
break;
case EVENT_SCENE_04:
me->SummonCreature(NPC_INERT_PORTAL, 1734.96f, 642.43f, 28.06f, 3.49f);
- events.ScheduleEvent(eventId + 1, 4000);
+ events.ScheduleEvent(eventId + 1, 4s);
break;
case EVENT_SCENE_05:
if (Creature* first = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f, 640.49f, 28.06f, 3.49f))
{
- first->m_Events.AddEvent(new MoveDelayed(first, 1718.70f, 607.78f, 28.06f, 2.323f), first->m_Events.CalculateTime(5000));
- first->m_Events.AddEvent(new FixOrientation(first), first->m_Events.CalculateTime(12000));
+ first->m_Events.AddEventAtOffset(new MoveDelayed(first, 1718.70f, 607.78f, 28.06f, 2.323f), 5s);
+ first->m_Events.AddEventAtOffset(new FixOrientation(first), 12s);
for (uint8 i = 0; i < 9; ++i)
if (Creature* follower = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f + 5 * cos(i * 2.0f * M_PI / 9), 640.49f + 5 * std::sin(i * 2.0f * M_PI / 9), 28.06f, 3.49f))
follower->GetMotionMaster()->MoveFollow(first, 3.0f, follower->GetAngle(first));
}
- events.ScheduleEvent(eventId + 1, 10000);
+ events.ScheduleEvent(eventId + 1, 10s);
break;
case EVENT_SCENE_06:
if (Creature* first = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f, 640.49f, 28.06f, 3.49f))
{
- first->m_Events.AddEvent(new MoveDelayed(first, 1678.69f, 649.27f, 28.06f, 5.46f), first->m_Events.CalculateTime(5000));
- first->m_Events.AddEvent(new FixOrientation(first), first->m_Events.CalculateTime(14500));
+ first->m_Events.AddEventAtOffset(new MoveDelayed(first, 1678.69f, 649.27f, 28.06f, 5.46f), 5s);
+ first->m_Events.AddEventAtOffset(new FixOrientation(first), 14500ms);
for (uint8 i = 0; i < 9; ++i)
if (Creature* follower = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f + 5 * cos(i * 2.0f * M_PI / 9), 640.49f + 5 * std::sin(i * 2.0f * M_PI / 9), 28.06f, 3.49f))
follower->GetMotionMaster()->MoveFollow(first, 3.0f, follower->GetAngle(first));
}
- events.ScheduleEvent(eventId + 1, 12000);
+ events.ScheduleEvent(eventId + 1, 12s);
break;
case EVENT_SCENE_07:
me->SummonCreature(NPC_LADY_LIADRIN, 1719.87f, 644.265f, 28.06f, 3.83f);
me->SummonCreature(NPC_PROPHET_VELEN, 1717.97f, 646.44f, 28.06f, 3.94f);
- events.ScheduleEvent(eventId + 1, 7000);
+ events.ScheduleEvent(eventId + 1, 7s);
break;
case EVENT_SCENE_08:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_01);
- events.ScheduleEvent(eventId + 1, 25000);
+ events.ScheduleEvent(eventId + 1, 25s);
break;
case EVENT_SCENE_09:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_02);
- events.ScheduleEvent(eventId + 1, 14500);
+ events.ScheduleEvent(eventId + 1, 14500ms);
break;
case EVENT_SCENE_10:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_03);
- events.ScheduleEvent(eventId + 1, 12500);
+ events.ScheduleEvent(eventId + 1, 12500ms);
break;
case EVENT_SCENE_11:
me->SummonCreature(NPC_THE_CORE_OF_ENTROPIUS, 1698.86f, 628.73f, 92.83f, 0.0f);
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->CastSpell(velen, SPELL_CALL_ENTROPIUS, false);
- events.ScheduleEvent(eventId + 1, 8000);
+ events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_12:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
@@ -845,32 +838,32 @@ struct npc_kalecgos_kj : public NullCreatureAI
velen->InterruptNonMeleeSpells(false);
velen->AI()->Talk(SAY_VELEN_04);
}
- events.ScheduleEvent(eventId + 1, 20000);
+ events.ScheduleEvent(eventId + 1, 20s);
break;
case EVENT_SCENE_13:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->GetMotionMaster()->MovePoint(0, 1711.28f, 637.29f, 27.29f);
- events.ScheduleEvent(eventId + 1, 6000);
+ events.ScheduleEvent(eventId + 1, 6s);
break;
case EVENT_SCENE_14:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_01);
- events.ScheduleEvent(eventId + 1, 10000);
+ events.ScheduleEvent(eventId + 1, 10s);
break;
case EVENT_SCENE_15:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_05);
- events.ScheduleEvent(eventId + 1, 14000);
+ events.ScheduleEvent(eventId + 1, 14s);
break;
case EVENT_SCENE_16:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_02);
- events.ScheduleEvent(eventId + 1, 2000);
+ events.ScheduleEvent(eventId + 1, 2s);
break;
case EVENT_SCENE_17:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_06);
- events.ScheduleEvent(eventId + 1, 3000);
+ events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_18:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
@@ -878,7 +871,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
core->RemoveAllAuras();
core->CastSpell(core, SPELL_BLAZE_TO_LIGHT, true);
}
- events.ScheduleEvent(eventId + 1, 8000);
+ events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_19:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
@@ -886,42 +879,42 @@ struct npc_kalecgos_kj : public NullCreatureAI
core->SetObjectScale(0.75f);
core->GetMotionMaster()->MovePoint(0, core->GetPositionX(), core->GetPositionY(), 28.0f);
}
- events.ScheduleEvent(eventId + 1, 2000);
+ events.ScheduleEvent(eventId + 1, 2s);
break;
case EVENT_SCENE_20:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
core->CastSpell(core, SPELL_SUNWELL_IGNITION, true);
- events.ScheduleEvent(eventId + 1, 3000);
+ events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_21:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_07);
- events.ScheduleEvent(eventId + 1, 15000);
+ events.ScheduleEvent(eventId + 1, 15s);
break;
case EVENT_SCENE_22:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_03);
- events.ScheduleEvent(eventId + 1, 20000);
+ events.ScheduleEvent(eventId + 1, 20s);
break;
case EVENT_SCENE_23:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_08);
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->SetStandState(UNIT_STAND_STATE_KNEEL);
- events.ScheduleEvent(eventId + 1, 8000);
+ events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_24:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_09);
- events.ScheduleEvent(eventId + 1, 5000);
+ events.ScheduleEvent(eventId + 1, 5s);
break;
case EVENT_SCENE_25:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
{
velen->GetMotionMaster()->MovePoint(0, 1739.38f, 643.79f, 28.06f);
- velen->DespawnOrUnsummon(5000);
+ velen->DespawnOrUnsummon(5s);
}
- events.ScheduleEvent(eventId + 1, 3000);
+ events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_26:
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
@@ -929,9 +922,9 @@ struct npc_kalecgos_kj : public NullCreatureAI
if (summon->GetEntry() == NPC_SHATTERED_SUN_SOLDIER)
{
summon->GetMotionMaster()->MovePoint(0, 1739.38f, 643.79f, 28.06f);
- summon->DespawnOrUnsummon(summon->GetExactDist2d(1734.96f, 642.43f) * 100);
+ summon->DespawnOrUnsummon(Milliseconds(uint32(summon->GetExactDist2d(1734.96f, 642.43f) * 100)));
}
- events.ScheduleEvent(eventId + 1, 7000);
+ events.ScheduleEvent(eventId + 1, 7s);
break;
case EVENT_SCENE_27:
me->setActive(false);
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
index 863954f0ff..d2cc53486d 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
@@ -274,7 +274,7 @@ struct npc_singularity : public NullCreatureAI
void Reset() override
{
- me->DespawnOrUnsummon(18000);
+ me->DespawnOrUnsummon(18s);
me->m_Events.AddEventAtOffset([&] {
DoCastSelf(SPELL_BLACK_HOLE_SUMMON_VISUAL, true);
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
index 065192bf74..863f4a2449 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
@@ -161,72 +161,72 @@ static PlayerAbilityStruct PlayerAbility[13][3] =
// 0 UNK class (should never be set)
{
// Warrior as fallback behavior if for some reason UNK class
- { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
+ { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 1 warrior
- { { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
+ { { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 2 paladin
- { { SPELL_PA_CONSECRATION, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_PA_HOLY_LIGHT, ABILITY_TARGET_HEAL, 10000ms },
- { SPELL_PA_AVENGING_WRATH, ABILITY_TARGET_SELF, 10000ms }
+ { { SPELL_PA_CONSECRATION, ABILITY_TARGET_SELF, 10s },
+ { SPELL_PA_HOLY_LIGHT, ABILITY_TARGET_HEAL, 10s },
+ { SPELL_PA_AVENGING_WRATH, ABILITY_TARGET_SELF, 10s }
},
// 3 hunter
- { { SPELL_HU_EXPLOSIVE_TRAP, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_HU_FREEZING_TRAP, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_HU_SNAKE_TRAP, ABILITY_TARGET_SELF, 10000ms }
+ { { SPELL_HU_EXPLOSIVE_TRAP, ABILITY_TARGET_SELF, 10s },
+ { SPELL_HU_FREEZING_TRAP, ABILITY_TARGET_SELF, 10s },
+ { SPELL_HU_SNAKE_TRAP, ABILITY_TARGET_SELF, 10s }
},
// 4 rogue
- { { SPELL_RO_WOUND_POISON, ABILITY_TARGET_VICTIM, 3000ms },
- { SPELL_RO_SLICE_DICE, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_RO_BLIND, ABILITY_TARGET_ENEMY, 10000ms }
+ { { SPELL_RO_WOUND_POISON, ABILITY_TARGET_VICTIM, 3s },
+ { SPELL_RO_SLICE_DICE, ABILITY_TARGET_SELF, 10s },
+ { SPELL_RO_BLIND, ABILITY_TARGET_ENEMY, 10s }
},
// 5 priest
- { { SPELL_PR_PAIN_SUPP, ABILITY_TARGET_HEAL, 10000ms },
- { SPELL_PR_HEAL, ABILITY_TARGET_HEAL, 10000ms },
- { SPELL_PR_PSYCHIC_SCREAM, ABILITY_TARGET_SELF, 10000ms }
+ { { SPELL_PR_PAIN_SUPP, ABILITY_TARGET_HEAL, 10s },
+ { SPELL_PR_HEAL, ABILITY_TARGET_HEAL, 10s },
+ { SPELL_PR_PSYCHIC_SCREAM, ABILITY_TARGET_SELF, 10s }
},
// 6 death knight
{
- { SPELL_DK_PLAGUE_STRIKE, ABILITY_TARGET_ENEMY, 2000ms },
- { SPELL_DK_DEATH_AND_DECAY, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_DK_BLOOD_WORMS, ABILITY_TARGET_ENEMY, 5000ms }
+ { SPELL_DK_PLAGUE_STRIKE, ABILITY_TARGET_ENEMY, 2s },
+ { SPELL_DK_DEATH_AND_DECAY, ABILITY_TARGET_SELF, 10s },
+ { SPELL_DK_BLOOD_WORMS, ABILITY_TARGET_ENEMY, 5s }
},
// 7 shaman
- { { SPELL_SH_FIRE_NOVA, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_SH_HEALING_WAVE, ABILITY_TARGET_HEAL, 10000ms },
- { SPELL_SH_CHAIN_LIGHT, ABILITY_TARGET_ENEMY, 8000ms }
+ { { SPELL_SH_FIRE_NOVA, ABILITY_TARGET_SELF, 10s },
+ { SPELL_SH_HEALING_WAVE, ABILITY_TARGET_HEAL, 10s },
+ { SPELL_SH_CHAIN_LIGHT, ABILITY_TARGET_ENEMY, 8s }
},
// 8 mage
- { { SPELL_MG_FIREBALL, ABILITY_TARGET_ENEMY, 5000ms },
- { SPELL_MG_FROSTBOLT, ABILITY_TARGET_ENEMY, 5000ms },
- { SPELL_MG_ICE_LANCE, ABILITY_TARGET_SPECIAL, 2000ms }
+ { { SPELL_MG_FIREBALL, ABILITY_TARGET_ENEMY, 5s },
+ { SPELL_MG_FROSTBOLT, ABILITY_TARGET_ENEMY, 5s },
+ { SPELL_MG_ICE_LANCE, ABILITY_TARGET_SPECIAL, 2s }
},
// 9 warlock
- { { SPELL_WL_CURSE_OF_DOOM, ABILITY_TARGET_ENEMY, 10000ms },
- { SPELL_WL_RAIN_OF_FIRE, ABILITY_TARGET_ENEMY, 10000ms },
- { SPELL_WL_UNSTABLE_AFFL, ABILITY_TARGET_ENEMY, 10000ms }
+ { { SPELL_WL_CURSE_OF_DOOM, ABILITY_TARGET_ENEMY, 10s },
+ { SPELL_WL_RAIN_OF_FIRE, ABILITY_TARGET_ENEMY, 10s },
+ { SPELL_WL_UNSTABLE_AFFL, ABILITY_TARGET_ENEMY, 10s }
},
// 10 UNK class (should never be set)
{
// Warrior as fallback behavior if for some reason UNK class
- { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
+ { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
+ { SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 11 druid
- { { SPELL_DR_LIFEBLOOM, ABILITY_TARGET_HEAL, 10000ms },
- { SPELL_DR_THORNS, ABILITY_TARGET_SELF, 10000ms },
- { SPELL_DR_MOONFIRE, ABILITY_TARGET_ENEMY, 8000ms }
+ { { SPELL_DR_LIFEBLOOM, ABILITY_TARGET_HEAL, 10s },
+ { SPELL_DR_THORNS, ABILITY_TARGET_SELF, 10s },
+ { SPELL_DR_MOONFIRE, ABILITY_TARGET_ENEMY, 8s }
},
// MISC shadow priest
- { { SPELL_PR_MIND_CONTROL, ABILITY_TARGET_ENEMY, 15000ms },
- { SPELL_PR_MIND_BLAST, ABILITY_TARGET_ENEMY, 5000ms },
- { SPELL_PR_SW_DEATH, ABILITY_TARGET_ENEMY, 10000ms }
+ { { SPELL_PR_MIND_CONTROL, ABILITY_TARGET_ENEMY, 15s },
+ { SPELL_PR_MIND_BLAST, ABILITY_TARGET_ENEMY, 5s },
+ { SPELL_PR_SW_DEATH, ABILITY_TARGET_ENEMY, 10s }
}
};
@@ -244,7 +244,7 @@ struct boss_hexlord_malacrass : public BossAI
{
BossAI::Reset();
_currentClass = CLASS_NONE;
- _classAbilityTimer = 10000ms;
+ _classAbilityTimer = 10s;
_timeUntilNextDrainPower = 0ms;
SpawnAdds();
ScheduleHealthCheckEvent(80, [&] {
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
index 22c405ed62..91cbfb02a0 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
@@ -127,7 +127,7 @@ struct boss_nalorakk : public BossAI
{
_introScheduler.CancelGroup(GROUP_CHECK_DEAD);
_waveList.clear();
- me->GetMotionMaster()->MovePath(me->GetEntry()*100+1, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry()*100+1, false);
Talk(SAY_RUN_AWAY);
_introScheduler.Schedule(5s, [this](TaskContext)
{
@@ -153,7 +153,7 @@ struct boss_nalorakk : public BossAI
_introScheduler.CancelGroup(GROUP_CHECK_DEAD);
_waveList.clear();
Talk(SAY_RUN_AWAY);
- me->GetMotionMaster()->MovePath(me->GetEntry()*100+2, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry()*100+2, false);
_introScheduler.Schedule(6s, [this](TaskContext)
{
me->SetFacingTo(1.54f);
@@ -176,7 +176,7 @@ struct boss_nalorakk : public BossAI
_introScheduler.CancelGroup(GROUP_CHECK_DEAD);
_waveList.clear();
Talk(SAY_RUN_AWAY);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 100 + 3, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 100 + 3, false);
_introScheduler.Schedule(6s, [this](TaskContext)
{
me->SetFacingTo(1.54f);
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
index b33a057db3..7add91965c 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
@@ -285,10 +285,7 @@ struct boss_zuljin : public BossAI
instance->SetBossState(DATA_ZULJIN, DONE);
Talk(SAY_DEATH);
summons.DespawnEntry(CREATURE_COLUMN_OF_FIRE);
-
- me->m_Events.AddEventAtOffset( [this] {
- summons.DespawnAll();
- }, 3s);
+ summons.DespawnAll(3s);
}
void SpawnAdds()
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
index 6dd4a8c9e2..efff4f78b3 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
@@ -78,7 +78,7 @@ struct npc_forest_frog : public ScriptedAI
void MovementInform(uint32 type, uint32 data) override
{
if (type == POINT_MOTION_TYPE && data == POINT_DESPAWN)
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
void UpdateAI(uint32 diff) override
@@ -103,7 +103,7 @@ struct npc_forest_frog : public ScriptedAI
Talk(SAY_THANKS_FREED, player);
eventTimer = 2;
- events.ScheduleEvent(eventTimer, urand(4000, 5000));
+ events.ScheduleEvent(eventTimer, 4s, 5s);
break;
case 2:
if (me->GetEntry() != NPC_GUNTER && me->GetEntry() != NPC_KYREN) // vendors don't kneel?
@@ -140,7 +140,7 @@ struct npc_forest_frog : public ScriptedAI
break;
}
eventTimer = 3;
- events.ScheduleEvent(eventTimer, urand(6000, 7000));
+ events.ScheduleEvent(eventTimer, 6s, 7s);
break;
case 3:
me->SetStandState(EMOTE_ONESHOT_NONE);
@@ -152,9 +152,9 @@ struct npc_forest_frog : public ScriptedAI
eventTimer = 4;
if (me->GetEntry() == NPC_GUNTER || me->GetEntry() == NPC_KYREN)
- events.ScheduleEvent(eventTimer, 5 * MINUTE * IN_MILLISECONDS); // vendors wait for 5 minutes before running away and despawning
+ events.ScheduleEvent(eventTimer, 300s); // vendors wait for 5 minutes before running away and despawning
else
- events.ScheduleEvent(eventTimer, 6000);
+ events.ScheduleEvent(eventTimer, 6s);
break;
case 4:
me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
@@ -165,7 +165,7 @@ struct npc_forest_frog : public ScriptedAI
Talk(SAY_GOODBYE, player);
eventTimer = 5;
- events.ScheduleEvent(eventTimer, 2000);
+ events.ScheduleEvent(eventTimer, 2s);
break;
case 5:
@@ -205,7 +205,7 @@ struct npc_forest_frog : public ScriptedAI
// start generic rp
eventTimer = 1;
- events.ScheduleEvent(eventTimer, 3000);
+ events.ScheduleEvent(eventTimer, 3s);
me->UpdateEntry(cEntry);
@@ -400,7 +400,7 @@ struct npc_harrison_jones : public ScriptedAI
Talk(SAY_HARRISON_0);
scheduler.Schedule(2s, [this](TaskContext /*task*/)
{
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_1, false);
+ me->GetMotionMaster()->MoveWaypoint(HARRISON_MOVE_1, false);
});
}
}
@@ -448,7 +448,7 @@ struct npc_harrison_jones : public ScriptedAI
// Players are Now Saved to instance at SPECIAL (Player should be notified?)
scheduler.Schedule(500ms, [this](TaskContext /*task*/)
{
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_2, false);
+ me->GetMotionMaster()->MoveWaypoint(HARRISON_MOVE_2, false);
});
}
}
@@ -486,7 +486,7 @@ struct npc_harrison_jones : public ScriptedAI
void MovementInform(uint32 type, uint32 id) override
{
// at gong
- if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GONG)
+ if (type == WAYPOINT_MOTION_TYPE && id == 3 && _phase == PHASE_GONG)
{
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
me->SetFacingToObject(gong);
@@ -503,13 +503,13 @@ struct npc_harrison_jones : public ScriptedAI
});
}
// to the massive gate
- else if (type == WAYPOINT_MOTION_TYPE && id == 1 && _phase == PHASE_GATE_CLOSED)
+ else if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GATE_CLOSED)
{
me->SetEntry(NPC_HARRISON_JONES_1);
Talk(SAY_HARRISON_2);
}
// at massive gate
- else if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GATE_CLOSED)
+ else if (type == WAYPOINT_MOTION_TYPE && id == 3 && _phase == PHASE_GATE_CLOSED)
{
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
Talk(SAY_HARRISON_3);
@@ -521,7 +521,7 @@ struct npc_harrison_jones : public ScriptedAI
{
DoCastSelf(SPELL_STEALTH);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_3, false);
+ me->GetMotionMaster()->MoveWaypoint(HARRISON_MOVE_3, false);
});
}
}
@@ -592,14 +592,14 @@ struct npc_amanishi_lookout : public NullCreatureAI
Talk(SAY_INVADERS);
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
me->SetUnitFlag(UNIT_FLAG_RENAME);
- me->GetMotionMaster()->MovePath(PATH_LOOKOUT, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_LOOKOUT, false);
}
}
void MovementInform(uint32 type, uint32 id) override
{
// at boss
- if (type == WAYPOINT_MOTION_TYPE && id == 8) // should despawn with waypoint script
+ if (type == WAYPOINT_MOTION_TYPE && id == 9) // should despawn with waypoint script
me->DespawnOrUnsummon(0s, 0s);
}
private:
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
index 5cabaf62c4..4b90e0ea21 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
@@ -330,7 +330,7 @@ public:
if (Unit* arlokk = ObjectAccessor::GetUnit(*me, _instance->GetGuidData(NPC_ARLOKK)))
me->GetMotionMaster()->MovePoint(0, arlokk->GetPositionX(), arlokk->GetPositionY(), arlokk->GetPositionZ());
- _events.ScheduleEvent(EVENT_ATTACK, 6000);
+ _events.ScheduleEvent(EVENT_ATTACK, 6s);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -355,7 +355,7 @@ public:
if (arlokk->IsAlive())
arlokk->GetAI()->SetData(_sideData, 0);
}
- me->DespawnOrUnsummon(4000);
+ me->DespawnOrUnsummon(4s);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
index 1b8d13bbf7..6975e98a1f 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
@@ -41,7 +41,7 @@ struct boss_gahzranka : public BossAI
void IsSummonedBy(WorldObject* /*summoner*/) override
{
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
}
void JustEngagedWith(Unit* /*who*/) override
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
index c750fd59c6..0b4bddc3d8 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
@@ -140,7 +140,7 @@ struct boss_jeklik : public BossAI
me->SetDisableGravity(true);
DoCastSelf(SPELL_BAT_FORM, true);
- me->GetMotionMaster()->MovePath(PATH_JEKLIK_INTRO, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_JEKLIK_INTRO, false);
}
void PathEndReached(uint32 pathId) override
@@ -295,7 +295,7 @@ struct npc_batrider : public CreatureAI
me->SetSpeed(MOVE_WALK, 5.0f, true);
me->SetCanFly(true);
- me->GetMotionMaster()->MoveSplinePath(PATH_BATRIDER_LOOP);
+ me->GetMotionMaster()->MovePath(PATH_BATRIDER_LOOP);
}
else
{
@@ -375,7 +375,7 @@ struct npc_batrider : public CreatureAI
if (!me->isMoving())
{
me->SetCanFly(true);
- me->GetMotionMaster()->MoveSplinePath(PATH_BATRIDER_LOOP);
+ me->GetMotionMaster()->MovePath(PATH_BATRIDER_LOOP);
}
}
else if (_mode == BATRIDER_MODE_TRASH)
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
index e02c69e0f3..251e76ad57 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
@@ -80,7 +80,7 @@ enum Misc
MODEL_OHGAN_MOUNT = 15271,
PATH_MANDOKIR = 492861,
- POINT_MANDOKIR_END = 24,
+ POINT_MANDOKIR_END = 25,
CHAINED_SPIRIT_COUNT = 20,
ACTION_CHARGE = 1
};
@@ -156,7 +156,7 @@ public:
killCount = 0;
if (me->GetPositionZ() > 140.0f)
{
- events.ScheduleEvent(EVENT_CHECK_START, 1000);
+ events.ScheduleEvent(EVENT_CHECK_START, 1s);
if (Creature* speaker = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_VILEBRANCH_SPEAKER)))
{
if (!speaker->IsAlive())
@@ -250,7 +250,7 @@ public:
}
}
- void SetGUID(ObjectGuid const guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == ACTION_CHARGE)
{
@@ -564,7 +564,7 @@ public:
RevivePlayer(victim, reviveGUID);
}
- void SetGUID(ObjectGuid const guid, int32 /*type = 0 */) override
+ void SetGUID(ObjectGuid const& guid, int32 /*type = 0 */) override
{
reviveGUID = guid;
}
@@ -612,7 +612,7 @@ public:
revivePlayerGUID.Clear();
}
- void SetGUID(ObjectGuid const guid, int32 /*id*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
{
revivePlayerGUID = guid;
}
@@ -641,7 +641,7 @@ public:
{
DoCast(target, SPELL_REVIVE);
}
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
diff --git a/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp b/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp
index 376e746677..dea0884b75 100644
--- a/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp
@@ -78,7 +78,7 @@ public:
break;
case 11:
Talk(SAY_PROGRESS_6, player);
- SetRun();
+ me->SetWalk(false);
break;
case 19:
Talk(SAY_PROGRESS_7, player);
@@ -106,7 +106,8 @@ public:
if (quest->GetQuestId() == QUEST_SUNKEN_TREASURE)
{
Talk(SAY_PROGRESS_1, player);
- npc_escortAI::Start(false, false, player->GetGUID(), quest);
+ me->SetWalk(true);
+ Start(false, player->GetGUID(), quest);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
}
}
diff --git a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp
index d7d06ac3f4..14a1aa6b78 100644
--- a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp
@@ -64,7 +64,7 @@ struct boss_twilight_corrupter : public ScriptedAI
{
if (creature->IsAlive() && me->GetGUID() != creature->GetGUID())
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp
index c90d2d78b7..5357b8e14f 100644
--- a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp
@@ -93,7 +93,7 @@ public:
_faction = faction;
}
- void SetGUID(ObjectGuid guid, int32) override
+ void SetGUID(ObjectGuid const& guid, int32) override
{
_playerGUID = guid;
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
@@ -207,7 +207,7 @@ public:
EnterEvadeMode();
return;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
}
case EVENT_SUMMON_ARCHERS:
@@ -217,7 +217,7 @@ public:
_spoken = false;
SummonPeasants();
_spoken = false;
- events.RepeatEvent(60 * IN_MILLISECONDS);
+ events.Repeat(60s);
break;
}
}
@@ -262,7 +262,7 @@ public:
if (Unit* creature = summon->GetSummonerUnit())
creature->GetAI()->DoAction(1);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void JustDied(Unit*) override
diff --git a/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp b/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp
index 45184f8384..ef651b4c69 100644
--- a/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp
@@ -112,11 +112,11 @@ struct npc_cameron : public ScriptedAI
if (Creature* children = ObjectAccessor::GetCreature(*me, _childrenGUIDs[i]))
{
children->SetWalk(true);
- children->GetMotionMaster()->MovePoint(0, MovePosPositions[i], true, MovePosPositions[i].GetOrientation());
+ children->GetMotionMaster()->MovePoint(0, MovePosPositions[i]);
}
}
me->SetWalk(true);
- me->GetMotionMaster()->MovePoint(0, MovePosPositions.back(), true, MovePosPositions.back().GetOrientation());
+ me->GetMotionMaster()->MovePoint(0, MovePosPositions.back());
}
void PathEndReached(uint32 pathId) override
@@ -182,13 +182,13 @@ struct npc_cameron : public ScriptedAI
switch (eventId)
{
case EVENT_WP_START_GOLDSHIRE:
- me->GetMotionMaster()->MovePath(GOLDSHIRE_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(GOLDSHIRE_PATH, false);
break;
case EVENT_WP_START_WOODS:
- me->GetMotionMaster()->MovePath(WOODS_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(WOODS_PATH, false);
break;
case EVENT_WP_START_HOUSE:
- me->GetMotionMaster()->MovePath(HOUSE_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(HOUSE_PATH, false);
break;
case EVENT_WP_START_LISA:
for (uint32 i = 0; i < _childrenGUIDs.size(); ++i)
@@ -197,7 +197,7 @@ struct npc_cameron : public ScriptedAI
{
if (lisa->GetEntry() == NPC_LISA)
{
- lisa->GetMotionMaster()->MovePath(LISA_PATH, false);
+ lisa->GetMotionMaster()->MoveWaypoint(LISA_PATH, false);
break;
}
}
@@ -233,7 +233,7 @@ struct npc_cameron : public ScriptedAI
child->SearchFormation();
// Start movement
- me->GetMotionMaster()->MovePath(STORMWIND_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(STORMWIND_PATH, false);
break;
}
@@ -386,7 +386,7 @@ struct npc_eastvale_peasent : public ScriptedAI
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->CastSpell(me, SPELL_TRANSFORM_PEASENT_WITH_WOOD);
me->SetSpeed(MOVE_WALK, 1.0f);
- me->GetMotionMaster()->MovePath(_path, false);
+ me->GetMotionMaster()->MoveWaypoint(_path, false);
}
}
@@ -418,7 +418,7 @@ struct npc_eastvale_peasent : public ScriptedAI
switch (eventId)
{
case EVENT_MOVETORAELEN:
- me->GetMotionMaster()->MovePath(_path + 1, false);
+ me->GetMotionMaster()->MoveWaypoint(_path + 1, false);
break;
case EVENT_TALKTORAELEN1:
if (Creature* realen = me->FindNearestCreature(NPC_SUPERVISOR_RAELEN, 2.0f, true))
@@ -492,7 +492,7 @@ struct npc_eastvale_peasent : public ScriptedAI
case EVENT_PATHBACK:
if (Creature* realen = ObjectAccessor::GetCreature(*me, _realenGUID))
realen->AI()->SetData(1, 1);
- me->GetMotionMaster()->MovePath(_path + 2, false);
+ me->GetMotionMaster()->MoveWaypoint(_path + 2, false);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp
index cd3612d4eb..cc3f0104b9 100644
--- a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp
@@ -60,7 +60,7 @@ struct npc_partygoer_pather : public ScriptedAI
switch (eventId)
{
case EVENT_PATH:
- me->GetMotionMaster()->MovePath(_path, false);
+ me->GetMotionMaster()->MoveWaypoint(_path, false);
break;
case EVENT_RANDOM_ACTION_PATHER:
{
@@ -139,7 +139,7 @@ struct npc_partygoer : public ScriptedAI
void Reset() override
{
- _events.ScheduleEvent(EVENT_RANDOM_ACTION, urand(1000, 20000));
+ _events.ScheduleEvent(EVENT_RANDOM_ACTION, 1s, 20s);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/EasternKingdoms/zone_ghostlands.cpp b/src/server/scripts/EasternKingdoms/zone_ghostlands.cpp
index da2cb493e4..b570c1d181 100644
--- a/src/server/scripts/EasternKingdoms/zone_ghostlands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_ghostlands.cpp
@@ -113,7 +113,8 @@ struct npc_ranger_lilatha : public npc_escortAI
if (quest->GetQuestId() == QUEST_ESCAPE_FROM_THE_CATACOMBS)
{
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
- npc_escortAI::Start(true, false, player->GetGUID());
+ me->SetWalk(true);
+ Start(true, player->GetGUID());
}
}
};
@@ -148,13 +149,13 @@ struct npc_sentinel_leader : public ScriptedAI
{
switch (id)
{
- case 1:
- case 4:
- case 7:
+ case 2:
+ case 5:
case 8:
- case 13:
+ case 9:
case 14:
- case 17:
+ case 15:
+ case 18:
Creature* SentinelSpy = me->FindNearestCreature(NPC_SENTINEL_SPY, 2.0f, true);
if (SentinelSpy)
{
@@ -281,10 +282,10 @@ struct npc_sentinel_infiltrator : public ScriptedAI
case PATH_ONE:
switch (id)
{
- case 5:
- case 8:
- case 14:
- case 18:
+ case 6:
+ case 9:
+ case 15:
+ case 19:
Creature* SentinelInfiltrator = me->FindNearestCreature(NPC_SENTINEL_INFILTRATOR, 3.5f, true);
if (SentinelInfiltrator)
{
@@ -298,10 +299,10 @@ struct npc_sentinel_infiltrator : public ScriptedAI
case PATH_TWO:
switch (id)
{
- case 5:
- case 7:
- case 14:
- case 17:
+ case 6:
+ case 8:
+ case 15:
+ case 18:
Creature* SentinelInfiltrator = me->FindNearestCreature(NPC_SENTINEL_INFILTRATOR, 3.5f, true);
if (SentinelInfiltrator)
{
diff --git a/src/server/scripts/EasternKingdoms/zone_hinterlands.cpp b/src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
index 4659c2b79a..f48aa5c06c 100644
--- a/src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
@@ -132,7 +132,8 @@ public:
if (GameObject* go = me->FindNearestGameObject(GO_RINJI_CAGE, INTERACTION_DISTANCE))
go->UseDoorOrButton();
- npc_escortAI::Start(false, false, player->GetGUID(), quest);
+ me->SetWalk(true);
+ Start(false, player->GetGUID(), quest);
}
}
@@ -156,7 +157,7 @@ public:
case 17:
Talk(SAY_RIN_COMPLETE, player);
player->GroupEventHappens(QUEST_RINJI_TRAPPED, me);
- SetRun();
+ me->SetWalk(false);
postEventCount = 1;
break;
}
diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
index be0caf53d1..15192af962 100644
--- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
@@ -136,25 +136,25 @@ public:
if (Creature* c = me->FindNearestCreature(NPC_THALORIEN_REMAINS, 100.0f, true))
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.Reset();
- events.ScheduleEvent(EVENT_CHECK_PLAYER, 5000);
- events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0);
- events.ScheduleEvent(EVENT_TALK_INTRO_0, 3000);
- events.ScheduleEvent(EVENT_TALK_INTRO_1, 8000);
- events.ScheduleEvent(EVENT_TALK_INTRO_2, 15000);
- events.ScheduleEvent(EVENT_TALK_INTRO_3, 22000);
- events.ScheduleEvent(EVENT_SALUTE, 24000);
- events.ScheduleEvent(EVENT_SOLDIERS_RUN_AWAY, 30000);
- events.ScheduleEvent(EVENT_GO_FIGHTPOINT, 31000);
- events.ScheduleEvent(EVENT_TALK_SPAWN_0, 38000);
- events.ScheduleEvent(EVENT_SUMMON_MORLEN, 44000);
- events.ScheduleEvent(EVENT_TALK_SPAWN_1, 47000);
- events.ScheduleEvent(EVENT_TALK_MORLEN_0, 52000);
- events.ScheduleEvent(EVENT_TALK_MORLEN_1, 58000);
- events.ScheduleEvent(EVENT_SPAWN_WAVE_1, 61000);
-
- events.ScheduleEvent(EVENT_SPELL_BLADESTORM, urand(6000, 15000));
- events.ScheduleEvent(EVENT_SPELL_MORTAL_STRIKE, urand(3000, 7000));
- events.ScheduleEvent(EVENT_SPELL_HEROIC_STRIKE, urand(4000, 10000));
+ events.ScheduleEvent(EVENT_CHECK_PLAYER, 5s);
+ events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0ms);
+ events.ScheduleEvent(EVENT_TALK_INTRO_0, 3s);
+ events.ScheduleEvent(EVENT_TALK_INTRO_1, 8s);
+ events.ScheduleEvent(EVENT_TALK_INTRO_2, 15s);
+ events.ScheduleEvent(EVENT_TALK_INTRO_3, 22s);
+ events.ScheduleEvent(EVENT_SALUTE, 24s);
+ events.ScheduleEvent(EVENT_SOLDIERS_RUN_AWAY, 30s);
+ events.ScheduleEvent(EVENT_GO_FIGHTPOINT, 31s);
+ events.ScheduleEvent(EVENT_TALK_SPAWN_0, 38s);
+ events.ScheduleEvent(EVENT_SUMMON_MORLEN, 44s);
+ events.ScheduleEvent(EVENT_TALK_SPAWN_1, 47s);
+ events.ScheduleEvent(EVENT_TALK_MORLEN_0, 52s);
+ events.ScheduleEvent(EVENT_TALK_MORLEN_1, 58s);
+ events.ScheduleEvent(EVENT_SPAWN_WAVE_1, 61s);
+
+ events.ScheduleEvent(EVENT_SPELL_BLADESTORM, 6s, 15s);
+ events.ScheduleEvent(EVENT_SPELL_MORTAL_STRIKE, 3s, 7s);
+ events.ScheduleEvent(EVENT_SPELL_HEROIC_STRIKE, 4s, 10s);
}
void JustSummoned(Creature* summon) override
@@ -172,10 +172,10 @@ public:
me->RemoveAurasDueToSpell(67541);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MoveCharge(11779.30f, -7065.43f, 24.92f, me->GetSpeed(MOVE_RUN), EVENT_CHARGE);
- events.ScheduleEvent(EVENT_OUTRO_0, 0);
- events.ScheduleEvent(EVENT_OUTRO_1, 5000);
- events.ScheduleEvent(EVENT_OUTRO_2, 12000);
- events.ScheduleEvent(EVENT_OUTRO_3, 19000);
+ events.ScheduleEvent(EVENT_OUTRO_0, 0ms);
+ events.ScheduleEvent(EVENT_OUTRO_1, 5s);
+ events.ScheduleEvent(EVENT_OUTRO_2, 12s);
+ events.ScheduleEvent(EVENT_OUTRO_3, 19s);
}
else if (summons.size() == 1)
{
@@ -184,13 +184,13 @@ public:
switch (summon->GetEntry())
{
case NPC_SCOURGE_ZOMBIE:
- events.ScheduleEvent(EVENT_SPAWN_WAVE_2, 3000);
+ events.ScheduleEvent(EVENT_SPAWN_WAVE_2, 3s);
break;
case NPC_GHOUL_INVADER:
- events.ScheduleEvent(EVENT_SPAWN_WAVE_3, 3000);
+ events.ScheduleEvent(EVENT_SPAWN_WAVE_3, 3s);
break;
case NPC_CRYPT_RAIDER:
- events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3000);
+ events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3s);
break;
}
}
@@ -227,7 +227,7 @@ public:
if (Player* p = ObjectAccessor::GetPlayer(*me, playerGUID))
if (p->GetExactDist(me) <= 50.0f)
{
- events.RepeatEvent(5000);
+ events.Repeat(5s);
break;
}
me->setActive(false);
@@ -266,7 +266,7 @@ public:
{
if (!summons.empty())
{
- events.RepeatEvent(5000);
+ events.Repeat(5s);
return;
}
else
@@ -350,7 +350,7 @@ public:
break;
}
}
- events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3000);
+ events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3s);
break;
case EVENT_SUMMONS_ATTACK:
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
@@ -370,13 +370,13 @@ public:
case EVENT_OUTRO_3:
Talk(SAY_OUTRO_0 + (evId - EVENT_OUTRO_0));
if (evId == EVENT_OUTRO_3)
- events.ScheduleEvent(EVENT_OUTRO_KNEEL, 6000);
+ events.ScheduleEvent(EVENT_OUTRO_KNEEL, 6s);
break;
case EVENT_OUTRO_KNEEL:
if (Player* p = ObjectAccessor::GetPlayer(*me, playerGUID))
p->KilledMonsterCredit(NPC_THALORIEN_KILL_CREDIT);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
- events.ScheduleEvent(EVENT_DISAPPEAR, 6000);
+ events.ScheduleEvent(EVENT_DISAPPEAR, 6s);
break;
case EVENT_DISAPPEAR:
me->SetVisible(false);
@@ -390,17 +390,17 @@ public:
case EVENT_SPELL_BLADESTORM:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 67541, false);
- events.RepeatEvent(urand(25000, 35000));
+ events.Repeat(25s, 35s);
break;
case EVENT_SPELL_MORTAL_STRIKE:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 67542, false);
- events.RepeatEvent(urand(7000, 12000));
+ events.Repeat(7s, 12s);
break;
case EVENT_SPELL_HEROIC_STRIKE:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 57846, false);
- events.RepeatEvent(urand(5000, 10000));
+ events.Repeat(5s, 10s);
break;
}
@@ -410,7 +410,7 @@ public:
void MovementInform(uint32 type, uint32 id) override
{
if (type == POINT_MOTION_TYPE && id == EVENT_CHARGE)
- events.ScheduleEvent(EVENT_SET_FACING, 0);
+ events.ScheduleEvent(EVENT_SET_FACING, 0ms);
}
void EnterEvadeMode(EvadeReason why) override
@@ -504,19 +504,19 @@ public:
me->SummonCreature(NPC_SUNWELL_VISUAL_BUNNY, 1688.24f, 621.769f, 29.1745f, 0.523177f, TEMPSUMMON_MANUAL_DESPAWN);
me->setActive(true);
events.Reset();
- events.ScheduleEvent(1, 1000); // guard talk
- events.ScheduleEvent(2, 4000); // theron talk
- events.ScheduleEvent(3, 10000); // npcs walk
- events.ScheduleEvent(4, 17000); // rommath talk
- events.ScheduleEvent(5, 20000); // theron talk
- events.ScheduleEvent(6, 28000); // theron talk
- events.ScheduleEvent(7, 37000); // rommath talk
- events.ScheduleEvent(8, 44000); // rommath talk
- events.ScheduleEvent(9, 52000); // rommath talk
- events.ScheduleEvent(10, 60000); // auric talk
- events.ScheduleEvent(11, 66000); // auric talk
- events.ScheduleEvent(12, 76000); // rommath talk
- events.ScheduleEvent(13, 80000); // move home
+ events.ScheduleEvent(1, 1s); // guard talk
+ events.ScheduleEvent(2, 4s); // theron talk
+ events.ScheduleEvent(3, 10s); // npcs walk
+ events.ScheduleEvent(4, 17s); // rommath talk
+ events.ScheduleEvent(5, 20s); // theron talk
+ events.ScheduleEvent(6, 28s); // theron talk
+ events.ScheduleEvent(7, 37s); // rommath talk
+ events.ScheduleEvent(8, 44s); // rommath talk
+ events.ScheduleEvent(9, 52s); // rommath talk
+ events.ScheduleEvent(10, 60s); // auric talk
+ events.ScheduleEvent(11, 66s); // auric talk
+ events.ScheduleEvent(12, 76s); // rommath talk
+ events.ScheduleEvent(13, 80s); // move home
}
}
@@ -539,16 +539,16 @@ public:
break;
case 3:
me->SetWalk(true);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 100, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 100, false);
if (Creature* c = me->FindNearestCreature(NPC_THERON, 60.0f, true))
{
c->SetWalk(true);
- c->GetMotionMaster()->MovePath(c->GetEntry() * 100, false);
+ c->GetMotionMaster()->MoveWaypoint(c->GetEntry() * 100, false);
}
if (Creature* c = me->FindNearestCreature(NPC_AURIC, 60.0f, true))
{
c->SetWalk(true);
- c->GetMotionMaster()->MovePath(c->GetEntry() * 100, false);
+ c->GetMotionMaster()->MoveWaypoint(c->GetEntry() * 100, false);
}
break;
case 4:
@@ -586,7 +586,7 @@ public:
case 13:
me->setActive(false);
if (Creature* c = me->FindNearestCreature(NPC_SUNWELL_VISUAL_BUNNY, 60.0f, true))
- c->DespawnOrUnsummon(1);
+ c->DespawnOrUnsummon(1ms);
if (GameObject* go = me->FindNearestGameObject(GO_QUEL_DELAR, 60.0f))
go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
me->SetWalk(true);
@@ -610,61 +610,6 @@ public:
};
};
-/*###### THEIR: ######*/
-
-/*######
-## npc_greengill_slave
-######*/
-
-#define ENRAGE 45111
-#define ORB 45109
-#define QUESTG 11541
-#define DM 25060
-
-class npc_greengill_slave : public CreatureScript
-{
-public:
- npc_greengill_slave() : CreatureScript("npc_greengill_slave") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_greengill_slaveAI(creature);
- }
-
- struct npc_greengill_slaveAI : public ScriptedAI
- {
- npc_greengill_slaveAI(Creature* creature) : ScriptedAI(creature) { }
-
- void JustEngagedWith(Unit* /*who*/) override { }
-
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
- {
- Player* player = caster->ToPlayer();
- if (!player)
- return;
-
- if (spellInfo->Id == ORB && !me->HasAura(ENRAGE))
- {
- if (player->GetQuestStatus(QUESTG) == QUEST_STATUS_INCOMPLETE)
- DoCast(player, 45110, true);
-
- DoCast(me, ENRAGE);
-
- if (Creature* Myrmidon = me->FindNearestCreature(DM, 70))
- {
- me->AddThreat(Myrmidon, 100000.0f);
- AttackStart(Myrmidon);
- }
- }
- }
-
- void UpdateAI(uint32 /*diff*/) override
- {
- DoMeleeAttackIfReady();
- }
- };
-};
-
// 45396, 45398 - Weapon Coating Enchant
class spell_gen_weapon_coating_enchant : public AuraScript
{
@@ -690,6 +635,5 @@ void AddSC_isle_of_queldanas()
new npc_bh_thalorien_dawnseeker();
RegisterSpellScript(spell_bh_cleanse_quel_delar);
new npc_grand_magister_rommath();
- new npc_greengill_slave();
RegisterSpellScript(spell_gen_weapon_coating_enchant);
}
diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp
index bbf1037521..f176916a74 100644
--- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp
@@ -61,7 +61,8 @@ public:
if (quest->GetQuestId() == QUEST_MISSING_IN_ACTION)
{
Talk(SAY_CORPORAL_1, player);
- npc_escortAI::Start(true, false, player->GetGUID(), quest);
+ me->SetWalk(true);
+ Start(true, player->GetGUID(), quest);
me->SetImmuneToNPC(false);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
}
diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
index 5709c14b87..6ab4e712c4 100644
--- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
@@ -111,7 +111,10 @@ public:
creature->AI()->Talk(SAY_QUESTACCEPT, player);
if (npc_escortAI* pEscortAI = CAST_AI(npc_deathstalker_erland::npc_deathstalker_erlandAI, creature->AI()))
- pEscortAI->Start(true, false, player->GetGUID());
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(true, player->GetGUID());
+ }
}
return true;
@@ -328,7 +331,7 @@ public:
{
HasEnded = false;
TalkRNG = urand(0,1);
- events.ScheduleEvent(EVENT_APPA_INTRO, 2000);
+ events.ScheduleEvent(EVENT_APPA_INTRO, 2s);
summons.DespawnAll();
}
@@ -387,31 +390,31 @@ public:
case EVENT_APPA_INTRO:
Talk(SAY_APPA_INTRO);
SummonCrowd();
- events.ScheduleEvent(EVENT_APPA_SAY_1, 3000);
+ events.ScheduleEvent(EVENT_APPA_SAY_1, 3s);
break;
case EVENT_APPA_SAY_1:
Talk(TalkRNG ? SAY_APPA_OPTION_1_1 : SAY_APPA_OPTION_2_1);
- events.ScheduleEvent(EVENT_APPA_SAY_2, 5000);
+ events.ScheduleEvent(EVENT_APPA_SAY_2, 5s);
break;
case EVENT_APPA_SAY_2:
Talk(TalkRNG ? SAY_APPA_OPTION_1_2 : SAY_APPA_OPTION_2_2);
- events.ScheduleEvent(EVENT_APPA_SAY_3, 5000);
+ events.ScheduleEvent(EVENT_APPA_SAY_3, 5s);
break;
case EVENT_APPA_SAY_3:
Talk(TalkRNG ? SAY_APPA_OPTION_1_3 : SAY_APPA_OPTION_2_3);
- events.ScheduleEvent(EVENT_APPA_SAY_4, 5000);
+ events.ScheduleEvent(EVENT_APPA_SAY_4, 5s);
break;
case EVENT_APPA_SAY_4:
Talk(TalkRNG ? SAY_APPA_OPTION_1_4 : SAY_APPA_OPTION_2_4);
- events.ScheduleEvent(EVENT_APPA_OUTRO, 5000);
+ events.ScheduleEvent(EVENT_APPA_OUTRO, 5s);
break;
case EVENT_APPA_OUTRO:
Talk(SAY_APPA_OUTRO);
- events.ScheduleEvent(EVENT_APPA_OUTRO_CROWD, 3000);
+ events.ScheduleEvent(EVENT_APPA_OUTRO_CROWD, 3s);
break;
case EVENT_APPA_OUTRO_CROWD:
EmoteCrowd();
- events.ScheduleEvent(EVENT_APPA_OUTRO_END, 5000);
+ events.ScheduleEvent(EVENT_APPA_OUTRO_END, 5s);
break;
case EVENT_APPA_OUTRO_END: // Despawn for Apparition is handled via Areatrigger SAI (5m)
summons.DespawnAll();
diff --git a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
index cbf88ba9a5..6adf8cdf1f 100644
--- a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
@@ -406,7 +406,8 @@ public:
{
if (Player* player = GetPlayerForEscort())
{
- CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->Start(false, false, player->GetGUID());
+ pLescovar->SetWalk(true);
+ CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->Start(false, player->GetGUID());
CAST_AI(npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, pLescovar->AI())->SetMaxPlayerDistance(200.0f);
}
}
@@ -448,7 +449,8 @@ public:
{
if (Creature* pSpybot = creature->FindNearestCreature(NPC_TYRION_SPYBOT, 5.0f, true))
{
- CAST_AI(npc_tyrion_spybot::npc_tyrion_spybotAI, pSpybot->AI())->Start(false, false, player->GetGUID());
+ pSpybot->SetWalk(true);
+ CAST_AI(npc_tyrion_spybot::npc_tyrion_spybotAI, pSpybot->AI())->Start(false, player->GetGUID());
CAST_AI(npc_tyrion_spybot::npc_tyrion_spybotAI, pSpybot->AI())->SetMaxPlayerDistance(200.0f);
}
return true;
diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp
index dcfd61342c..a7218f9b1c 100644
--- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp
@@ -118,7 +118,7 @@ public:
_events.ScheduleEvent(EVENT_MULTI_SHOT, 10s);
}
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == GUID_EVENT_INVOKER)
{
@@ -142,7 +142,7 @@ public:
{
summoned->SetDisableGravity(true);
float speed = summoned->GetDistance(summoned->GetPositionX(), summoned->GetPositionY(), me->GetPositionZ() + 15.0f) / (1000.0f * 0.001f);
- summoned->MonsterMoveWithSpeed(summoned->GetPositionX(), summoned->GetPositionY(), me->GetPositionZ() + 15.0f, speed);
+ summoned->GetMotionMaster()->MovePoint(0, summoned->GetPositionX(), summoned->GetPositionY(), me->GetPositionZ() + 15.0f, FORCED_MOVEMENT_NONE, speed);
summoned->CastSpell(summoned, SPELL_RIBBON_OF_SOULS, false);
}
}
@@ -270,8 +270,7 @@ public:
if (EventMoveTimer <= diff)
{
me->SetDisableGravity(true);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), HIGHBORNE_LOC_Y_NEW, me->GetDistance(me->GetPositionX(), me->GetPositionY(), HIGHBORNE_LOC_Y_NEW) / (5000 * 0.001f));
- me->SetPosition(me->GetPositionX(), me->GetPositionY(), HIGHBORNE_LOC_Y_NEW, me->GetOrientation());
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), HIGHBORNE_LOC_Y_NEW, FORCED_MOVEMENT_NONE, me->GetDistance(me->GetPositionX(), me->GetPositionY(), HIGHBORNE_LOC_Y_NEW) / (5000 * 0.001f));
EventMove = false;
}
else EventMoveTimer -= diff;
@@ -917,7 +916,7 @@ public:
if (auto ai = CAST_AI(npc_varian_wrynn::npc_varian_wrynnAI, creature->AI()))
{
- ai->Start(true, true, player->GetGUID());
+ ai->Start(true, player->GetGUID());
if (Creature* jaina = GetClosestCreatureWithEntry(creature, NPC_JAINA, 50.0f))
ai->jainaGUID = jaina->GetGUID();
else
@@ -1218,27 +1217,27 @@ public:
{
case 0:
if (Unit* temp = me->SummonCreature(NPC_DOCTOR, AllianceSpawn[4].x - rand32() % 5, AllianceSpawn[4].y - rand32() % 5, AllianceSpawn[4].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 1:
if (Unit* temp = me->SummonCreature(NPC_CHEMIST, AllianceSpawn[4].x - rand32() % 5, AllianceSpawn[4].y - rand32() % 5, AllianceSpawn[4].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 2:
if (Unit* temp = me->SummonCreature(NPC_BETRAYER, AllianceSpawn[4].x - rand32() % 5, AllianceSpawn[4].y - rand32() % 5, AllianceSpawn[4].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 3:
if (Unit* temp = me->SummonCreature(NPC_DOCTOR, AllianceSpawn[5].x - rand32() % 5, AllianceSpawn[5].y - rand32() % 5, AllianceSpawn[5].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 4:
if (Unit* temp = me->SummonCreature(NPC_CHEMIST, AllianceSpawn[5].x - rand32() % 5, AllianceSpawn[5].y - rand32() % 5, AllianceSpawn[5].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 5:
if (Unit* temp = me->SummonCreature(NPC_BETRAYER, AllianceSpawn[5].x - rand32() % 5, AllianceSpawn[5].y - rand32() % 5, AllianceSpawn[5].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
}
}
@@ -1246,7 +1245,7 @@ public:
case 5:
for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
if (Unit* temp = me->SummonCreature(NPC_GUARDIAN, AllianceSpawn[6].x - rand32() % 5, AllianceSpawn[6].y - rand32() % 5, AllianceSpawn[6].z, TEMPSUMMON_DEAD_DESPAWN))
- temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
+ temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case 6:
if (Unit* temp = me->SummonCreature(NPC_BLIGHTWORM, AllianceSpawn[7].x, AllianceSpawn[7].y, AllianceSpawn[7].z, TEMPSUMMON_MANUAL_DESPAWN))
@@ -1322,22 +1321,22 @@ public:
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[8].x, AllianceSpawn[8].y, AllianceSpawn[8].z, 0, TEMPSUMMON_TIMED_DESPAWN, 90000))
{
allianceGuardsGUID.push_back(temp->GetGUID());
- temp->GetMotionMaster()->MovePath(NPC_SW_SOLDIER * 10, false);
+ temp->GetMotionMaster()->MoveWaypoint(NPC_SW_SOLDIER * 10, false);
}
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[8].x, AllianceSpawn[8].y, AllianceSpawn[8].z, 0, TEMPSUMMON_TIMED_DESPAWN, 90000))
{
allianceGuardsGUID.push_back(temp->GetGUID());
- temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 1, false);
+ temp->GetMotionMaster()->MoveWaypoint((NPC_SW_SOLDIER * 10) + 1, false);
}
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[8].x, AllianceSpawn[8].y, AllianceSpawn[8].z, 0, TEMPSUMMON_TIMED_DESPAWN, 90000))
{
allianceGuardsGUID.push_back(temp->GetGUID());
- temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 2, false);
+ temp->GetMotionMaster()->MoveWaypoint((NPC_SW_SOLDIER * 10) + 2, false);
}
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[8].x, AllianceSpawn[8].y, AllianceSpawn[8].z, 0, TEMPSUMMON_TIMED_DESPAWN, 90000))
{
allianceGuardsGUID.push_back(temp->GetGUID());
- temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 3, false);
+ temp->GetMotionMaster()->MoveWaypoint((NPC_SW_SOLDIER * 10) + 3, false);
}
break;
case 8:
@@ -1349,7 +1348,7 @@ public:
case 10:
if (Unit* temp = me->SummonCreature(NPC_DREADLORD, AllianceSpawn[11].x, AllianceSpawn[11].y, AllianceSpawn[11].z, TEMPSUMMON_DEAD_DESPAWN))
{
- temp->GetMotionMaster()->MovePath(NPC_DREADLORD * 10, false);
+ temp->GetMotionMaster()->MoveWaypoint(NPC_DREADLORD * 10, false);
temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
}
@@ -1537,7 +1536,7 @@ public:
case 8:
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
{
- jaina->GetMotionMaster()->MovePath(NPC_JAINA * 10, false);
+ jaina->GetMotionMaster()->MoveWaypoint(NPC_JAINA * 10, false);
jaina->setActive(true);
}
bStepping = false;
@@ -1614,7 +1613,7 @@ public:
break;
case 22:
Talk(WRYNN_SAY_SEWERS_4);
- SetRun(false);
+ me->SetWalk(true);
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
{
jaina->GetMotionMaster()->Clear();
@@ -1665,7 +1664,7 @@ public:
JumpToNextStep(3 * IN_MILLISECONDS);
break;
case 31:
- SetRun(true);
+ me->SetWalk(false);
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
SetEscortPaused(false);
@@ -1727,7 +1726,7 @@ public:
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
{
jaina->GetMotionMaster()->Clear();
- jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, false);
+ jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
}
JumpToNextStep(5 * IN_MILLISECONDS);
break;
@@ -1789,7 +1788,7 @@ public:
break;
case 54:
Talk(WRYNN_SAY_APO_7);
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(4 * IN_MILLISECONDS);
break;
case 55:
@@ -1845,7 +1844,7 @@ public:
JumpToNextStep(1.5 * IN_MILLISECONDS);
break;
case 65:
- SetRun(true);
+ me->SetWalk(false);
SetEscortPaused(false);
JumpToNextStep(0.25 * IN_MILLISECONDS);
break;
@@ -2236,7 +2235,8 @@ public:
if (Creature* sylvannas = GetClosestCreatureWithEntry(creature, NPC_SYLVANAS, 50.0f))
{
thrall_ai->sylvanasfollowGUID = sylvannas->GetGUID();
- thrall_ai->Start(true, true, player->GetGUID());
+ creature->SetWalk(false);
+ thrall_ai->Start(true, player->GetGUID());
thrall_ai->SetDespawnAtEnd(false);
thrall_ai->SetDespawnAtFar(false);
}
@@ -2477,7 +2477,7 @@ public:
for (std::list<Creature*>::iterator itr = ThroneList.begin(); itr != ThroneList.end(); itr++)
(*itr)->DespawnOrUnsummon();
SetEscortPaused(false);
- SetRun(false);
+ me->SetWalk(true);
break;
}
default:
@@ -2537,9 +2537,9 @@ public:
{
case 0: // Vortex
if (Creature* whirlwind1 = me->SummonCreature(NPC_VORTEX, ThrallSpawn[0].x, ThrallSpawn[0].y, ThrallSpawn[0].z, ThrallSpawn[0].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30 * IN_MILLISECONDS))
- whirlwind1->GetMotionMaster()->MovePath(NPC_WHIRLWIND * 10, false);
+ whirlwind1->GetMotionMaster()->MoveWaypoint(NPC_WHIRLWIND * 10, false);
if (Creature* whirlwind2 = me->SummonCreature(NPC_VORTEX, ThrallSpawn[0].x, ThrallSpawn[0].y, ThrallSpawn[0].z, ThrallSpawn[0].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30 * IN_MILLISECONDS))
- whirlwind2->GetMotionMaster()->MovePath(NPC_WHIRLWIND * 100, false);
+ whirlwind2->GetMotionMaster()->MoveWaypoint(NPC_WHIRLWIND * 100, false);
break;
case 1:
// BATTLING_COURTYARD Initial Spawn
@@ -2762,7 +2762,7 @@ public:
{
hordeGuardsGUID.push_back(temp->GetGUID());
temp->AI()->Talk(SAY_FOR_THE_HORDE);
- temp->GetMotionMaster()->MovePath(NPC_WARSONG_BATTLEGUARD * 100, false);
+ temp->GetMotionMaster()->MoveWaypoint(NPC_WARSONG_BATTLEGUARD * 100, false);
}
break;
// Valimathras Room Preparation
@@ -2972,10 +2972,10 @@ public:
SetEscortPaused(false);
bStepping = false;
JumpToNextStep(0);
- SetRun(true);
+ me->SetWalk(false);
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasfollowGUID))
{
- sylvanas->GetMotionMaster()->MovePath(NPC_SYLVANAS * 100, false);
+ sylvanas->GetMotionMaster()->MoveWaypoint(NPC_SYLVANAS * 100, false);
sylvanas->setActive(true);
}
break;
@@ -3005,9 +3005,9 @@ public:
for (std::list<Creature*>::iterator itr = PlagueList.begin(); itr != PlagueList.end(); itr++)
(*itr)->DespawnOrUnsummon();
SetEscortPaused(false);
- SetRun(false);
+ me->SetWalk(true);
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasfollowGUID))
- sylvanas->GetMotionMaster()->MovePath(NPC_SYLVANAS * 1000, false);
+ sylvanas->GetMotionMaster()->MoveWaypoint(NPC_SYLVANAS * 1000, false);
JumpToNextStep(3 * IN_MILLISECONDS);
break;
}
@@ -3054,10 +3054,10 @@ public:
if (Creature* valimathras = ObjectAccessor::GetCreature(*me, ValimathrasGUID))
{
valimathras->GetMotionMaster()->MovePoint(0, 1804.559f, 235.504f, 62.753f);
- valimathras->DespawnOrUnsummon(3 * IN_MILLISECONDS);
+ valimathras->DespawnOrUnsummon(3s);
}
if (Creature* valimathrasportal = ObjectAccessor::GetCreature(*me, ValimathrasPortalGUID))
- valimathrasportal->DespawnOrUnsummon(6 * IN_MILLISECONDS);
+ valimathrasportal->DespawnOrUnsummon(6s);
JumpToNextStep(1 * IN_MILLISECONDS);
break;
case 26:
@@ -3077,7 +3077,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(true);
+ me->SetWalk(false);
Talk(THRALL_SAY_COURTYARD_4);
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_START_H, 0);
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COURTYARD_FIGHT_H, 1);
@@ -3182,7 +3182,7 @@ public:
SpawnWave(6);
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
}
@@ -3226,7 +3226,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
// Top of Undercity Discussion
@@ -3266,7 +3266,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
case 63:
@@ -3284,7 +3284,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
case 67:
@@ -3299,7 +3299,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
// KHANOK - Valimathtas Intro
@@ -3332,10 +3332,10 @@ public:
if (Creature* valimathras = ObjectAccessor::GetCreature(*me, ValimathrasGUID))
{
valimathras->GetMotionMaster()->MovePoint(0, 1596.642f, 429.811f, -46.3429f);
- valimathras->DespawnOrUnsummon(3 * IN_MILLISECONDS);
+ valimathras->DespawnOrUnsummon(3s);
}
if (Creature* valimathrasportal = ObjectAccessor::GetCreature(*me, ValimathrasPortalGUID))
- valimathrasportal->DespawnOrUnsummon(3 * IN_MILLISECONDS);
+ valimathrasportal->DespawnOrUnsummon(3s);
JumpToNextStep(2 * IN_MILLISECONDS);
break;
// KHANOK - Trashspawn
@@ -3475,7 +3475,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(false);
+ me->SetWalk(true);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
case 109:
@@ -3491,7 +3491,7 @@ public:
FollowThrall();
SetEscortPaused(false);
bStepping = false;
- SetRun(true);
+ me->SetWalk(false);
JumpToNextStep(0 * IN_MILLISECONDS);
break;
case 112:
@@ -3662,7 +3662,7 @@ public:
case 143:
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasfollowGUID))
{
- sylvanas->GetMotionMaster()->MovePoint(0, 1289.48f, 314.33f, -57.32f, true);
+ sylvanas->GetMotionMaster()->MovePoint(0, 1289.48f, 314.33f, -57.32f);
sylvanas->CastSpell(sylvanas, SPELL_LEAP_TO_PLATFORM);
}
JumpToNextStep(10 * IN_MILLISECONDS);
@@ -3706,7 +3706,7 @@ public:
wrynn->SetImmuneToAll(true);
wrynn->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
wrynn->SetReactState(REACT_PASSIVE);
- wrynn->GetMotionMaster()->MovePoint(0, 1302.543f, 359.472f, -67.295f, true);
+ wrynn->GetMotionMaster()->MovePoint(0, 1302.543f, 359.472f, -67.295f);
}
if (Creature* jaina = me->SummonCreature(NPC_JAINA, 1308.862f, 381.809f, -66.044243f, TEMPSUMMON_MANUAL_DESPAWN))
{
@@ -3807,7 +3807,7 @@ public:
{
SaurfangGUID = saurfang->GetGUID();
saurfang->SetWalk(true);
- saurfang->GetMotionMaster()->MovePoint(0, 1300.862f, 353.670f, -66.187f, true);
+ saurfang->GetMotionMaster()->MovePoint(0, 1300.862f, 353.670f, -66.187f);
}
JumpToNextStep(7 * IN_MILLISECONDS);
break;
@@ -3865,8 +3865,8 @@ public:
me->GetCreatureListWithEntryInGrid(HelperList, NPC_OVERLORD_SAURFANG, 100.0f);
if (!HelperList.empty())
for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
- (*itr)->DespawnOrUnsummon(120 * IN_MILLISECONDS);
- me->DespawnOrUnsummon(120 * IN_MILLISECONDS);
+ (*itr)->DespawnOrUnsummon(120s);
+ me->DespawnOrUnsummon(120s);
bStepping = false;
JumpToNextStep(0 * IN_MILLISECONDS);
break;
diff --git a/src/server/scripts/EasternKingdoms/zone_westfall.cpp b/src/server/scripts/EasternKingdoms/zone_westfall.cpp
index 6d54a0cc26..de9afc5afe 100644
--- a/src/server/scripts/EasternKingdoms/zone_westfall.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_westfall.cpp
@@ -56,9 +56,8 @@ public:
if (quest->GetQuestId() == QUEST_TOME_VALOR)
{
creature->AI()->Talk(SAY_DS_START);
-
if (npc_escortAI* pEscortAI = CAST_AI(npc_daphne_stilwell::npc_daphne_stilwellAI, creature->AI()))
- pEscortAI->Start(true, true, player->GetGUID());
+ pEscortAI->Start(true, player->GetGUID());
}
return true;
@@ -117,7 +116,7 @@ public:
me->SummonCreature(NPC_DEFIAS_RAIDER, -11438.14f, 1607.6f, 70.94f, 4.38f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
break;
case 10:
- SetRun(false);
+ me->SetWalk(true);
break;
case 11:
Talk(SAY_DS_PROLOGUE);
diff --git a/src/server/scripts/EasternKingdoms/zone_wetlands.cpp b/src/server/scripts/EasternKingdoms/zone_wetlands.cpp
index 9118411816..054e170434 100644
--- a/src/server/scripts/EasternKingdoms/zone_wetlands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_wetlands.cpp
@@ -62,7 +62,7 @@ public:
case 2:
if (me->HasStealthAura())
me->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
- SetRun();
+ me->SetWalk(false);
me->SetFaction(FACTION_ENEMY);
break;
}
@@ -109,7 +109,7 @@ public:
me->GetThreatMgr().ClearAllThreat();
me->CombatStop(true);
- SetRun(false);
+ me->SetWalk(true);
}
}
}
@@ -138,7 +138,10 @@ public:
pSlim->CastSpell(pSlim, SPELL_STEALTH, true);
if (npc_tapoke_slim_jahn::npc_tapoke_slim_jahnAI* pEscortAI = CAST_AI(npc_tapoke_slim_jahn::npc_tapoke_slim_jahnAI, pSlim->AI()))
- pEscortAI->Start(false, false, player->GetGUID(), quest);
+ {
+ pSlim->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID(), quest);
+ }
}
return false;
}
diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp
index e0b01c49f9..c743ed2456 100644
--- a/src/server/scripts/Events/brewfest.cpp
+++ b/src/server/scripts/Events/brewfest.cpp
@@ -367,10 +367,10 @@ struct npc_dark_iron_attack_generator : public ScriptedAI
if (AllowStart())
{
PrepareEvent();
- events.RepeatEvent(300000);
+ events.Repeat(300s);
return;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
}
case EVENT_SPAWN_MOLE_MACHINE:
@@ -393,7 +393,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI
if (Creature* cr = me->SummonCreature(NPC_MOLE_MACHINE_TRIGGER, x, y, 398.11f, 0.0f))
cr->CastSpell(cr, SPELL_SPAWN_MOLE_MACHINE, true);
}
- events.RepeatEvent(3000);
+ events.Repeat(3s);
break;
}
case EVENT_PRE_FINISH_ATTACK:
@@ -410,7 +410,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI
}
case EVENT_BARTENDER_SAY:
{
- events.RepeatEvent(12000);
+ events.Repeat(12s);
Creature* sayer = GetRandomBartender();
if (!sayer)
return;
@@ -603,7 +603,7 @@ struct npc_dark_iron_attack_mole_machine : public ScriptedAI
{
me->SummonCreature(NPC_DARK_IRON_GUZZLER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 6000);
summonTimer = 0;
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
}
}
}
@@ -1714,12 +1714,12 @@ struct npc_coren_direbrew : public ScriptedAI
case EVENT_SUMMON_MOLE_MACHINE:
{
me->CastCustomSpell(SPELL_MOLE_MACHINE_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
- _events.RepeatEvent(15 * IN_MILLISECONDS);
+ _events.Repeat(15s);
break;
}
case EVENT_DIREBREW_DISARM:
DoCastSelf(SPELL_DIREBREW_DISARM_PRE_CAST, true);
- _events.RepeatEvent(20 * IN_MILLISECONDS);
+ _events.Repeat(20s);
break;
default:
break;
@@ -1743,7 +1743,7 @@ struct npc_coren_direbrew_sisters : public ScriptedAI
{
npc_coren_direbrew_sisters(Creature* creature) : ScriptedAI(creature) { }
- void SetGUID(ObjectGuid guid, int32 id) override
+ void SetGUID(ObjectGuid const& guid, int32 id) override
{
if (id == DATA_TARGET_GUID)
{
diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp
index 06d649291a..f9bf2a2c09 100644
--- a/src/server/scripts/Events/hallows_end.cpp
+++ b/src/server/scripts/Events/hallows_end.cpp
@@ -428,7 +428,7 @@ struct npc_costumed_orphan_matron : public ScriptedAI
GetInitXYZ(x, y, z, o, path);
if (Creature* cr = me->SummonCreature(NPC_SHADE_OF_HORSEMAN, x, y, z, o, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000))
{
- cr->GetMotionMaster()->MovePath(path, true);
+ cr->GetMotionMaster()->MoveWaypoint(path, true);
cr->AI()->DoAction(path);
horseGUID = cr->GetGUID();
}
@@ -697,7 +697,7 @@ struct npc_hallows_end_soh : public ScriptedAI
void EnterEvadeMode(EvadeReason /* why */) override
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
uint32 GetData(uint32 /*type*/) const override
@@ -763,7 +763,7 @@ struct npc_hallows_end_soh : public ScriptedAI
}
CastFires(false);
- events.RepeatEvent(15000);
+ events.Repeat(15s);
break;
}
case 4:
@@ -848,7 +848,7 @@ struct npc_hallows_end_soh : public ScriptedAI
if (Unit* c = ObjectAccessor::GetUnit(*me, guid))
c->RemoveAllAuras();
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
else
{
@@ -868,7 +868,7 @@ struct npc_hallows_end_soh : public ScriptedAI
me->RemoveAllAuras();
me->SetCanFly(false);
me->SetDisableGravity(false);
- events.ScheduleEvent(4, 2000);
+ events.ScheduleEvent(4, 2s);
}
}
@@ -1029,7 +1029,7 @@ struct boss_headless_horseman : public ScriptedAI
std::list<Creature*> unitList;
me->GetCreaturesWithEntryInRange(unitList, 100.0f, NPC_PUMPKIN_FIEND);
for (std::list<Creature*>::iterator itr = unitList.begin(); itr != unitList.end(); ++itr)
- (*itr)->ToCreature()->DespawnOrUnsummon(500);
+ (*itr)->ToCreature()->DespawnOrUnsummon(500ms);
Map::PlayerList const& players = me->GetMap()->GetPlayers();
if (!players.IsEmpty() && players.begin()->GetSource() && players.begin()->GetSource()->GetGroup())
@@ -1085,9 +1085,9 @@ struct boss_headless_horseman : public ScriptedAI
{
if (type == WAYPOINT_MOTION_TYPE)
{
- if (point == 0)
+ if (point == 1)
me->CastSpell(me, SPELL_HEAD_VISUAL, true);
- else if (point == 11)
+ else if (point == 12)
{
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
me->StopMoving();
@@ -1191,7 +1191,7 @@ struct boss_headless_horseman : public ScriptedAI
break;
case 3:
me->SetDisableGravity(true);
- me->GetMotionMaster()->MovePath(236820, false);
+ me->GetMotionMaster()->MoveWaypoint(236820, false);
me->CastSpell(me, SPELL_SHAKE_CAMERA_SMALL, true);
player->Say(TALK_PLAYER_FELT_DEATH);
Talk(TALK_ENTRANCE);
@@ -1202,7 +1202,7 @@ struct boss_headless_horseman : public ScriptedAI
talkCount = 0;
return; // pop and return, skip repeat
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
}
case EVENT_HORSEMAN_FOLLOW:
@@ -1218,7 +1218,7 @@ struct boss_headless_horseman : public ScriptedAI
case EVENT_HORSEMAN_CLEAVE:
{
me->CastSpell(me->GetVictim(), SPELL_HORSEMAN_CLEAVE, false);
- events.RepeatEvent(8000);
+ events.Repeat(8s);
break;
}
case EVENT_HORSEMAN_WHIRLWIND:
@@ -1226,11 +1226,11 @@ struct boss_headless_horseman : public ScriptedAI
if (me->HasAuraEffect(SPELL_HORSEMAN_WHIRLWIND, EFFECT_0))
{
me->RemoveAura(SPELL_HORSEMAN_WHIRLWIND);
- events.RepeatEvent(15000);
+ events.Repeat(15s);
break;
}
me->CastSpell(me, SPELL_HORSEMAN_WHIRLWIND, true);
- events.RepeatEvent(6000);
+ events.Repeat(6s);
break;
}
case EVENT_HORSEMAN_CHECK_HEALTH:
@@ -1241,7 +1241,7 @@ struct boss_headless_horseman : public ScriptedAI
return;
}
- events.RepeatEvent(1000);
+ events.Repeat(1s);
break;
}
case EVENT_HORSEMAN_CONFLAGRATION:
@@ -1253,21 +1253,21 @@ struct boss_headless_horseman : public ScriptedAI
Talk(TALK_CONFLAGRATION);
}
- events.RepeatEvent(12500);
+ events.Repeat(12500ms);
break;
}
case EVENT_SUMMON_PUMPKIN:
{
if (talkCount < 4)
{
- events.RepeatEvent(1);
+ events.Repeat(1ms);
talkCount++;
me->CastSpell(me, SPELL_SUMMON_PUMPKIN, false);
}
else
{
Talk(TALK_SPROUTING_PUMPKINS);
- events.RepeatEvent(15000);
+ events.Repeat(15s);
talkCount = 0;
}
diff --git a/src/server/scripts/Events/love_in_air.cpp b/src/server/scripts/Events/love_in_air.cpp
index 6c5a2aedb0..6a22e8e839 100644
--- a/src/server/scripts/Events/love_in_air.cpp
+++ b/src/server/scripts/Events/love_in_air.cpp
@@ -247,7 +247,7 @@ struct npc_love_in_air_snivel_real : public ScriptedAI
if (Unit* owner = me->ToTempSummon()->GetSummonerUnit())
me->CastSpell(owner, SPELL_SNIVEL_GUN, true);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
}
diff --git a/src/server/scripts/Events/winter_veil.cpp b/src/server/scripts/Events/winter_veil.cpp
index 6a66ed29e6..a1a53a0422 100644
--- a/src/server/scripts/Events/winter_veil.cpp
+++ b/src/server/scripts/Events/winter_veil.cpp
@@ -192,7 +192,7 @@ class spell_winter_veil_racer_slam_hit : public SpellScript
return;
target->CastSpell(target->GetPositionX() + irand(-10, 10), target->GetPositionY() + irand(-10, 10), target->GetPositionZ(), SPELL_RACER_DEATH_VISUAL, true);
- target->DespawnOrUnsummon(3000);
+ target->DespawnOrUnsummon(3s);
target->CastSpell(target, SPELL_RACER_FLAMES, true);
caster->CastSpell(caster, SPELL_RACER_KILL_COUNTER, true);
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
index 69eaa77eab..02a718379c 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
@@ -97,7 +97,7 @@ public:
Talk(SAY_ONSPAWN, 1200ms);
if (action == DATA_ANETHERON)
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
}
void PathEndReached(uint32 pathId) override
@@ -109,7 +109,7 @@ public:
case ALLIANCE_BASE_CHARGE_3:
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
}, 1s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
index 3d15d6cf7c..7b1ccf257b 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
@@ -297,7 +297,7 @@ struct boss_archimonde : public BossAI
}
}
}, 5s);
- ScheduleTimedEvent(5000ms, [&]
+ ScheduleTimedEvent(5s, [&]
{
bool noPlayersInRange = true;
if (Map* map = me->GetMap())
@@ -335,7 +335,7 @@ struct boss_archimonde : public BossAI
Talk(SAY_SLAY);
}
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == GUID_GAIN_SOUL_CHARGE_PLAYER)
{
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp
index 82f86f1b58..fa931454fc 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp
@@ -86,7 +86,7 @@ public:
Talk(SAY_ONSPAWN, 1200ms);
if (action == DATA_AZGALOR)
- me->GetMotionMaster()->MovePath(HORDE_BOSS_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(HORDE_BOSS_PATH, false);
}
void KilledUnit(Unit * victim) override
@@ -110,7 +110,7 @@ public:
if (Creature* archi = instance->GetCreature(DATA_ARCHIMONDE))
{
archi->AI()->DoAction(ACTION_BECOME_ACTIVE_AND_CHANNEL);
- archi->AI()->Talk(SAY_ARCHIMONDE_INTRO, 25000ms);
+ archi->AI()->Talk(SAY_ARCHIMONDE_INTRO, 25s);
}
BossAI::JustDied(killer);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
index 42ad0d907d..991b8214f6 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
@@ -94,9 +94,9 @@ public:
Milliseconds GetMarkRepeatTimer()
{
++_markCounter;
- Milliseconds timer = 45000ms - (5000ms * _markCounter);
- if (timer <= 10000ms)
- return 10000ms;
+ Milliseconds timer = 45s - (5s * _markCounter);
+ if (timer <= 10s)
+ return 10s;
else
return timer;
}
@@ -106,7 +106,7 @@ public:
Talk(SAY_ONSPAWN, 1200ms);
if (action == DATA_KAZROGAL)
- me->GetMotionMaster()->MovePath(HORDE_BOSS_PATH, false);
+ me->GetMotionMaster()->MoveWaypoint(HORDE_BOSS_PATH, false);
}
void KilledUnit(Unit * victim) override
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp
index 39bce4e6ee..887a34570f 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp
@@ -101,7 +101,7 @@ public:
Talk(SAY_ONSPAWN, 1200ms);
if (action == DATA_WINTERCHILL)
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
}
void PathEndReached(uint32 pathId) override
@@ -113,7 +113,7 @@ public:
case ALLIANCE_BASE_CHARGE_3:
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
}, 1s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
index 01b12a9ef8..1ec84feb5f 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
@@ -188,7 +188,7 @@ public:
else
{
creature->AI()->Talk(SAY_SUCCESS);
- creature->GetMotionMaster()->MovePath(JAINA_RETREAT_PATH, false);
+ creature->GetMotionMaster()->MoveWaypoint(JAINA_RETREAT_PATH, false);
}
}
return true;
@@ -493,15 +493,15 @@ struct npc_hyjal_ground_trash : public ScriptedAI
case DATA_WINTERCHILL:
case DATA_ANETHERON:
case DATA_ALLIANCE_RETREAT:
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_CHARGE_1, ALLIANCE_BASE_CHARGE_3), false);
break;
case DATA_KAZROGAL:
case DATA_AZGALOR:
case DATA_HORDE_RETREAT:
- me->GetMotionMaster()->MovePath(urand(HORDE_BASE_CHARGE_1, HORDE_BASE_CHARGE_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(HORDE_BASE_CHARGE_1, HORDE_BASE_CHARGE_3), false);
break;
case DATA_ARCHIMONDE:
- me->GetMotionMaster()->MovePath(urand(NIGHT_ELF_BASE_CHARGE_1, NIGHT_ELF_BASE_CHARGE_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(NIGHT_ELF_BASE_CHARGE_1, NIGHT_ELF_BASE_CHARGE_3), false);
break;
}
}
@@ -517,7 +517,7 @@ struct npc_hyjal_ground_trash : public ScriptedAI
case ALLIANCE_BASE_CHARGE_3:
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
+ me->GetMotionMaster()->MoveWaypoint(urand(ALLIANCE_BASE_PATROL_1, ALLIANCE_BASE_PATROL_3), true);
}, 1s);
break;
case HORDE_BASE_CHARGE_1:
@@ -525,7 +525,7 @@ struct npc_hyjal_ground_trash : public ScriptedAI
case HORDE_BASE_CHARGE_3:
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(urand(HORDE_BASE_PATROL_1, HORDE_BASE_PATROL_3), true);
+ me->GetMotionMaster()->MoveWaypoint(urand(HORDE_BASE_PATROL_1, HORDE_BASE_PATROL_3), true);
}, 1s);
break;
case NIGHT_ELF_BASE_CHARGE_1:
@@ -616,9 +616,9 @@ struct npc_hyjal_gargoyle : public ScriptedAI
case DATA_AZGALOR:
case DATA_HORDE_RETREAT:
if (me->GetPositionX() < 5500.f)
- me->GetMotionMaster()->MovePath(urand(GARGOYLE_PATH_FORTRESS_1, GARGOYLE_PATH_FORTRESS_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(GARGOYLE_PATH_FORTRESS_1, GARGOYLE_PATH_FORTRESS_3), false);
else
- me->GetMotionMaster()->MovePath(urand(GARGOYLE_PATH_TROLL_CAMP_1, GARGOYLE_PATH_TROLL_CAMP_3), false);
+ me->GetMotionMaster()->MoveWaypoint(urand(GARGOYLE_PATH_TROLL_CAMP_1, GARGOYLE_PATH_TROLL_CAMP_3), false);
break;
default:
break;
@@ -687,9 +687,9 @@ struct npc_hyjal_frost_wyrm : public ScriptedAI
case DATA_AZGALOR:
case DATA_HORDE_RETREAT:
if (me->GetPositionX() < 5500.f)
- me->GetMotionMaster()->MovePath(FROST_WYRM_FORTRESS, false);
+ me->GetMotionMaster()->MoveWaypoint(FROST_WYRM_FORTRESS, false);
else
- me->GetMotionMaster()->MovePath(FROST_WYRM_TROLL_CAMP, false);
+ me->GetMotionMaster()->MoveWaypoint(FROST_WYRM_TROLL_CAMP, false);
break;
default:
break;
@@ -702,7 +702,7 @@ struct npc_hyjal_frost_wyrm : public ScriptedAI
{
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(FROST_WYRM_FORTRESS_PATROL, true);
+ me->GetMotionMaster()->MoveWaypoint(FROST_WYRM_FORTRESS_PATROL, true);
}, 1s);
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
index 1803000b92..5a120eaa07 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
@@ -53,16 +53,16 @@ ObjectData const creatureData[] =
Milliseconds hyjalWaveTimers[4][MAX_WAVES_STANDARD]
{
- { 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 190000ms, 0ms }, // Winterchill
- { 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 130000ms, 190000ms, 0ms }, // Anetheron
- { 130000ms, 155000ms, 130000ms, 155000ms, 130000ms, 130000ms, 155000ms, 225000ms, 0ms }, // Kaz'rogal
- { 130000ms, 190000ms, 190000ms, 190000ms, 130000ms, 155000ms, 190000ms, 225000ms, 0ms } // Azgalor
+ { 130s, 130s, 130s, 130s, 130s, 130s, 130s, 190s, 0ms }, // Winterchill
+ { 130s, 130s, 130s, 130s, 130s, 130s, 130s, 190s, 0ms }, // Anetheron
+ { 130s, 155s, 130s, 155s, 130s, 130s, 155s, 225s, 0ms }, // Kaz'rogal
+ { 130s, 190s, 190s, 190s, 130s, 155s, 190s, 225s, 0ms } // Azgalor
};
Milliseconds hyjalRetreatTimers[2][MAX_WAVES_RETREAT]
{
- { 10000ms, 6000ms , 0ms }, // Alliance
- { 10000ms, 40000ms, 0ms } // Horde
+ { 10s, 6s , 0ms }, // Alliance
+ { 10s, 40s, 0ms } // Horde
};
Milliseconds hyjalNightElfWaveTimers[1][MAX_WAVES_NIGHT_ELF]
@@ -295,7 +295,7 @@ public:
}
// Despawn all alliance NPCs
- scheduler.Schedule(21000ms, [this](TaskContext)
+ scheduler.Schedule(21s, [this](TaskContext)
{
for (ObjectGuid const& guid : _baseAlliance)
if (Creature* creature = instance->GetCreature(guid))
@@ -343,7 +343,7 @@ public:
}
}
- scheduler.Schedule(21000ms, [this](TaskContext)
+ scheduler.Schedule(21s, [this](TaskContext)
{
for (ObjectGuid const& guid : _baseHorde)
if (Creature* creature = instance->GetCreature(guid))
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp
index f429e5a474..439817bc4d 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp
@@ -18,17 +18,16 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "SpellMgr.h"
#include "culling_of_stratholme.h"
enum Spells
{
SPELL_CURSE_OF_EXERTION = 52772,
- SPELL_WOUNDING_STRIKE_N = 52771,
- SPELL_WOUNDING_STRIKE_H = 58830,
+ SPELL_WOUNDING_STRIKE = 52771,
SPELL_TIME_STOP = 58848,
SPELL_TIME_WARP = 52766,
- SPELL_TIME_STEP_N = 52737,
- SPELL_TIME_STEP_H = 58829,
+ SPELL_TIME_STEP = 52737,
};
enum Events
@@ -77,17 +76,17 @@ public:
{
Talk(SAY_AGGRO);
- events.ScheduleEvent(EVENT_SPELL_CURSE_OF_EXERTION, 9000);
- events.ScheduleEvent(EVENT_SPELL_WOUNDING_STRIKE, 3000);
- events.ScheduleEvent(EVENT_SPELL_TIME_WARP, 25000);
+ events.ScheduleEvent(EVENT_SPELL_CURSE_OF_EXERTION, 9s);
+ events.ScheduleEvent(EVENT_SPELL_WOUNDING_STRIKE, 3s);
+ events.ScheduleEvent(EVENT_SPELL_TIME_WARP, 25s);
if (IsHeroic())
- events.ScheduleEvent(EVENT_SPELL_TIME_STOP, 20000);
+ events.ScheduleEvent(EVENT_SPELL_TIME_STOP, 20s);
}
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
{
- if (spellInfo->Id == SPELL_TIME_STEP_H || spellInfo->Id == SPELL_TIME_STEP_N)
+ if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_TIME_STEP, me))
{
if (target == me)
return;
@@ -98,7 +97,7 @@ public:
return;
}
warps++;
- me->CastSpell(target, DUNGEON_MODE(SPELL_TIME_STEP_N, SPELL_TIME_STEP_H), true);
+ me->CastSpell(target, SPELL_TIME_STEP, true);
}
}
@@ -116,23 +115,23 @@ public:
case EVENT_SPELL_CURSE_OF_EXERTION:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
me->CastSpell(target, SPELL_CURSE_OF_EXERTION, false);
- events.RepeatEvent(9000);
+ events.Repeat(9s);
break;
case EVENT_SPELL_WOUNDING_STRIKE:
- me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_WOUNDING_STRIKE_N, SPELL_WOUNDING_STRIKE_H), false);
- events.RepeatEvent(6000);
+ me->CastSpell(me->GetVictim(), SPELL_WOUNDING_STRIKE, false);
+ events.Repeat(6s);
break;
case EVENT_SPELL_TIME_STOP:
me->CastSpell(me, SPELL_TIME_STOP, false);
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
case EVENT_SPELL_TIME_WARP:
Talk(SAY_TIME_WARP);
me->CastSpell(me, SPELL_TIME_WARP, false);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
- me->CastSpell(target, DUNGEON_MODE(SPELL_TIME_STEP_N, SPELL_TIME_STEP_H), true);
+ me->CastSpell(target, SPELL_TIME_STEP, true);
- events.RepeatEvent(25000);
+ events.Repeat(25s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp
index 7ec0d095c3..854b43b389 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp
@@ -67,7 +67,7 @@ public:
summons.DespawnAll();
if (InstanceScript* pInstance = me->GetInstanceScript())
if (pInstance->GetData(DATA_GUARDIANTIME_EVENT) == 0)
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
me->SummonCreature(NPC_TIME_RIFT, 2337.6f, 1270.0f, 132.95f, 2.79f);
me->SummonCreature(NPC_GUARDIAN_OF_TIME, 2319.3f, 1267.7f, 132.8f, 1.0f);
@@ -79,8 +79,8 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
me->InterruptNonMeleeSpells(false);
- events.ScheduleEvent(EVENT_SPELL_VOID_STRIKE, 8000);
- events.ScheduleEvent(EVENT_SPELL_CORRUPTING_BLIGHT, 12000);
+ events.ScheduleEvent(EVENT_SPELL_VOID_STRIKE, 8s);
+ events.ScheduleEvent(EVENT_SPELL_CORRUPTING_BLIGHT, 12s);
Talk(SAY_AGGRO);
}
@@ -93,11 +93,11 @@ public:
{
if (cr->GetEntry() == NPC_TIME_RIFT)
{
- cr->DespawnOrUnsummon(1000);
+ cr->DespawnOrUnsummon(1s);
}
else
{
- cr->DespawnOrUnsummon(5000);
+ cr->DespawnOrUnsummon(5s);
cr->RemoveAllAuras();
cr->AI()->Talk(SAY_THANKS);
}
@@ -120,7 +120,7 @@ public:
{
Talk(SAY_FAIL);
summons.DespawnAll();
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
}
}
@@ -147,12 +147,12 @@ public:
{
case EVENT_SPELL_VOID_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_VOID_STRIKE, false);
- events.RepeatEvent(8000);
+ events.Repeat(8s);
break;
case EVENT_SPELL_CORRUPTING_BLIGHT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
me->CastSpell(target, SPELL_CORRUPTING_BLIGHT, false);
- events.RepeatEvent(12000);
+ events.Repeat(12s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
index 065224bdc3..eefb3f71b6 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
@@ -22,12 +22,9 @@
enum Spells
{
- SPELL_CARRION_SWARM_N = 52720,
- SPELL_CARRION_SWARM_H = 58852,
- SPELL_MIND_BLAST_N = 52722,
- SPELL_MIND_BLAST_H = 58850,
- SPELL_SLEEP_N = 52721,
- SPELL_SLEEP_H = 58849,
+ SPELL_CARRION_SWARM = 52720,
+ SPELL_MIND_BLAST = 52722,
+ SPELL_SLEEP = 52721,
SPELL_VAMPIRIC_TOUCH = 52723,
};
@@ -80,17 +77,17 @@ public:
if (finished)
{
Talk(SAY_OUTRO);
- me->DespawnOrUnsummon(20000);
+ me->DespawnOrUnsummon(20s);
}
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
- events.ScheduleEvent(EVENT_SPELL_CARRION_SWARM, 6000);
- events.ScheduleEvent(EVENT_SPELL_MIND_BLAST, 11000);
- events.ScheduleEvent(EVENT_SPELL_SLEEP, 20000);
- events.ScheduleEvent(EVENT_SPELL_VAMPIRIC_TOUCH, 15000);
+ events.ScheduleEvent(EVENT_SPELL_CARRION_SWARM, 6s);
+ events.ScheduleEvent(EVENT_SPELL_MIND_BLAST, 11s);
+ events.ScheduleEvent(EVENT_SPELL_SLEEP, 20s);
+ events.ScheduleEvent(EVENT_SPELL_VAMPIRIC_TOUCH, 15s);
}
void JustDied(Unit* /*killer*/) override
@@ -145,23 +142,23 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_SPELL_CARRION_SWARM:
- me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_CARRION_SWARM_N, SPELL_CARRION_SWARM_H), false);
- events.RepeatEvent(7000);
+ me->CastSpell(me->GetVictim(), SPELL_CARRION_SWARM, false);
+ events.Repeat(7s);
break;
case EVENT_SPELL_MIND_BLAST:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
- me->CastSpell(target, DUNGEON_MODE(SPELL_MIND_BLAST_N, SPELL_MIND_BLAST_H), false);
- events.RepeatEvent(6000);
+ me->CastSpell(target, SPELL_MIND_BLAST, false);
+ events.Repeat(6s);
break;
case EVENT_SPELL_SLEEP:
Talk(SAY_SLEEP);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
- me->CastSpell(target, DUNGEON_MODE(SPELL_SLEEP_N, SPELL_SLEEP_H), false);
- events.RepeatEvent(17000);
+ me->CastSpell(target, SPELL_SLEEP, false);
+ events.Repeat(17s);
break;
case EVENT_SPELL_VAMPIRIC_TOUCH:
me->CastSpell(me, SPELL_VAMPIRIC_TOUCH, true);
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
index 8a87485c1e..e1ec2ec439 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
@@ -21,10 +21,8 @@
enum Spells
{
- SPELL_CONSTRICTING_CHAINS_N = 52696,
- SPELL_CONSTRICTING_CHAINS_H = 58823,
- SPELL_DISEASE_EXPULSION_N = 52666,
- SPELL_DISEASE_EXPULSION_H = 58824,
+ SPELL_CONSTRICTING_CHAINS = 52696,
+ SPELL_DISEASE_EXPULSION = 52666,
SPELL_FRENZY = 58841,
};
@@ -66,9 +64,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
- events.RescheduleEvent(EVENT_SPELL_CONSTRICTING_CHAINS, 15000);
- events.RescheduleEvent(EVENT_SPELL_DISEASE_EXPULSION, 4000);
- events.RescheduleEvent(EVENT_SPELL_FRENZY, 20000);
+ events.RescheduleEvent(EVENT_SPELL_CONSTRICTING_CHAINS, 15s);
+ events.RescheduleEvent(EVENT_SPELL_DISEASE_EXPULSION, 4s);
+ events.RescheduleEvent(EVENT_SPELL_FRENZY, 20s);
}
void JustDied(Unit* /*killer*/) override
@@ -97,17 +95,17 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_SPELL_DISEASE_EXPULSION:
- me->CastSpell(me, DUNGEON_MODE(SPELL_DISEASE_EXPULSION_N, SPELL_DISEASE_EXPULSION_H), false);
- events.RepeatEvent(6000);
+ me->CastSpell(me, SPELL_DISEASE_EXPULSION, false);
+ events.Repeat(6s);
break;
case EVENT_SPELL_FRENZY:
me->CastSpell(me, SPELL_FRENZY, false);
- events.RepeatEvent(20000);
+ events.Repeat(20s);
break;
case EVENT_SPELL_CONSTRICTING_CHAINS:
if (Unit* pTarget = SelectTarget(SelectTargetMethod::MinThreat, 0, 50.0f, true))
- me->CastSpell(pTarget, DUNGEON_MODE(SPELL_CONSTRICTING_CHAINS_N, SPELL_CONSTRICTING_CHAINS_H), false);
- events.RepeatEvent(14000);
+ me->CastSpell(pTarget, SPELL_CONSTRICTING_CHAINS, false);
+ events.Repeat(14s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp
index f0228eec2a..545645d8c7 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp
@@ -23,14 +23,12 @@
enum Spells
{
- SPELL_SHADOW_BOLT_N = 57725,
- SPELL_SHADOW_BOLT_H = 58827,
+ SPELL_SHADOW_BOLT = 57725,
SPELL_STEAL_FLESH_CHANNEL = 52708,
SPELL_STEAL_FLESH_TARGET = 52711,
SPELL_STEAL_FLESH_CASTER = 52712,
SPELL_SUMMON_GHOULS = 52451,
- SPELL_EXPLODE_GHOUL_N = 52480,
- SPELL_EXPLODE_GHOUL_H = 58825,
+ SPELL_EXPLODE_GHOUL = 52480,
SPELL_CURSE_OF_TWISTED_FAITH = 58845,
};
@@ -84,12 +82,12 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
- events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, 7000);
- events.ScheduleEvent(EVENT_SPELL_STEAL_FLESH, 11000);
- events.ScheduleEvent(EVENT_SPELL_SUMMON_GHOULS, 16000);
- events.ScheduleEvent(EVENT_EXPLODE_GHOUL, 22000);
+ events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, 7s);
+ events.ScheduleEvent(EVENT_SPELL_STEAL_FLESH, 11s);
+ events.ScheduleEvent(EVENT_SPELL_SUMMON_GHOULS, 16s);
+ events.ScheduleEvent(EVENT_EXPLODE_GHOUL, 22s);
if (IsHeroic())
- events.ScheduleEvent(EVENT_SPELL_CURSE, 25000);
+ events.ScheduleEvent(EVENT_SPELL_CURSE, 25s);
}
void JustDied(Unit* /*killer*/) override
@@ -112,7 +110,7 @@ public:
if (Creature* cr = ObjectAccessor::GetCreature(*me, (*itr)))
if (cr->IsAlive())
{
- me->CastSpell(cr, DUNGEON_MODE(SPELL_EXPLODE_GHOUL_N, SPELL_EXPLODE_GHOUL_H), false);
+ me->CastSpell(cr, SPELL_EXPLODE_GHOUL, false);
return;
}
}
@@ -129,30 +127,30 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SHADOW_BOLT:
- me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT_N, SPELL_SHADOW_BOLT_H), false);
- events.RepeatEvent(10000);
+ me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
+ events.Repeat(10s);
break;
case EVENT_SPELL_STEAL_FLESH:
if (!urand(0, 2))
Talk(SAY_STEAL_FLESH);
me->CastSpell(me->GetVictim(), SPELL_STEAL_FLESH_CHANNEL, false);
- events.RepeatEvent(12000);
+ events.Repeat(12s);
break;
case EVENT_SPELL_SUMMON_GHOULS:
if (!urand(0, 2))
Talk(SAY_SUMMON_GHOULS);
me->CastSpell(me, SPELL_SUMMON_GHOULS, false);
- events.RepeatEvent(10000);
+ events.Repeat(10s);
break;
case EVENT_EXPLODE_GHOUL:
if (!urand(0, 2))
Talk(SAY_EXPLODE_GHOUL);
ExplodeGhoul();
- events.RepeatEvent(15000);
+ events.Repeat(15s);
break;
case EVENT_SPELL_CURSE:
me->CastSpell(me->GetVictim(), SPELL_CURSE_OF_TWISTED_FAITH, false);
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index 32ec43e808..0403df2f58 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -141,8 +141,7 @@ enum Spells
{
// Combat spells
SPELL_ARTHAS_AURA = 52442,
- SPELL_ARTHAS_EXORCISM_N = 52445,
- SPELL_ARTHAS_EXORCISM_H = 58822,
+ SPELL_ARTHAS_EXORCISM = 52445,
SPELL_ARTHAS_HOLY_LIGHT = 52444,
// Visuals
@@ -385,7 +384,7 @@ public:
uint8 timeRiftId;
Creature* GetEventNpc(uint32 entry);
- void ScheduleNextEvent(uint32 currentEvent, uint32 time);
+ void ScheduleNextEvent(uint32 currentEvent, Milliseconds time);
void SummonNextWave();
void ReorderInstance(uint32 data);
void JustEngagedWith(Unit* /*who*/) override ;
@@ -418,13 +417,13 @@ public:
{
// Event
eventInRun = true;
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE1, 0);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE1, 0ms);
}
else if (param == ACTION_START_CITY)
{
Talk(SAY_PHASE201);
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE2, 12000);
- SetRun(false);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE2, 12s);
+ me->SetWalk(true);
eventInRun = true;
me->SummonCreature(NPC_CITY_MAN, EventPos[EVENT_SRC_TOWN_CITYMAN1]);
@@ -434,14 +433,14 @@ public:
{
waveGroupId = 10;
eventInRun = true;
- SetRun(true);
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE2 + 9, 10000);
+ me->SetWalk(false);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE2 + 9, 10s);
}
else if (param == ACTION_START_TOWN_HALL)
{
Talk(SAY_PHASE301);
SetEscortPaused(false);
- SetRun(false);
+ me->SetWalk(true);
if (Creature* cr = me->SummonCreature(NPC_CITY_MAN3, EventPos[EVENT_SRC_HALL_CITYMAN1]))
{
@@ -460,13 +459,13 @@ public:
{
Talk(SAY_PHASE401);
SetEscortPaused(false);
- SetRun(false);
+ me->SetWalk(true);
}
else if (param == ACTION_START_LAST_CITY)
{
Talk(SAY_PHASE404);
SetEscortPaused(false);
- SetRun(true);
+ me->SetWalk(false);
}
else if (param == ACTION_START_MALGANIS)
{
@@ -480,13 +479,13 @@ public:
}
Talk(SAY_PHASE501);
SetEscortPaused(false);
- SetRun(true);
+ me->SetWalk(false);
}
else if (param == ACTION_KILLED_MALGANIS)
{
EnterEvadeMode();
eventInRun = true;
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE5 + 1, 22000);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE5 + 1, 22s);
me->SetFacingTo(1.84f);
if (!me->GetMap()->GetPlayers().IsEmpty())
@@ -533,7 +532,7 @@ public:
break;
// After intro, in front of bridge
case 3:
- SetRun(true);
+ me->SetWalk(false);
Talk(SAY_PHASE118);
summons.DespawnAll(); // uther, jaina and horses
break;
@@ -547,7 +546,7 @@ public:
if (Creature* stalker = me->SummonCreature(NPC_INVIS_TARGET, 2026.469f, 1287.088f, 143.596f, 1.37f, TEMPSUMMON_TIMED_DESPAWN, 14000))
{
me->SetFacingToObject(stalker);
- stalker->DespawnOrUnsummon(500);
+ stalker->DespawnOrUnsummon(500ms);
}
break;
// Reached first cityman
@@ -574,12 +573,12 @@ public:
if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_REACHED_TOWN_HALL);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- SetRun(false);
+ me->SetWalk(true);
SetEscortPaused(true);
break;
// Inside Town Hall first scene pos
case 22:
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE3, 0);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE3, 0ms);
eventInRun = true;
SetEscortPaused(true);
break;
@@ -600,7 +599,7 @@ public:
break;
// Town Hall, upper floor third fight
case 31:
- SetRun(false);
+ me->SetWalk(true);
SpawnTimeRift();
SpawnTimeRift();
Talk(SAY_PHASE312);
@@ -616,14 +615,14 @@ public:
break;
// Reached book shelf
case 36:
- SetRun(true);
+ me->SetWalk(false);
if (pInstance)
if (GameObject* pGate = pInstance->instance->GetGameObject(pInstance->GetGuidData(DATA_SHKAF_GATE)))
pGate->SetGoState(GO_STATE_ACTIVE);
break;
// Behind secred passage
case 45:
- SetRun(true);
+ me->SetWalk(false);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
SetEscortPaused(true);
if (pInstance)
@@ -631,11 +630,11 @@ public:
break;
// Some walk talk
case 47:
- SetRun(false);
+ me->SetWalk(true);
Talk(SAY_PHASE405);
break;
case 48:
- SetRun(true);
+ me->SetWalk(false);
Talk(SAY_PHASE406);
break;
case 53:
@@ -652,7 +651,7 @@ public:
// Infront of malganis
case 55:
Talk(SAY_PHASE502);
- actionEvents.ScheduleEvent(EVENT_ACTION_PHASE5, 7000);
+ actionEvents.ScheduleEvent(EVENT_ACTION_PHASE5, 7s);
SetEscortPaused(true);
eventInRun = true;
break;
@@ -674,44 +673,45 @@ public:
switch (uint32 currentEvent = actionEvents.ExecuteEvent())
{
case EVENT_ACTION_PHASE1:
- SetRun(false);
+ me->SetWalk(true);
me->SummonCreature(NPC_JAINA, EventPos[EVENT_SRC_JAINA], TEMPSUMMON_DEAD_DESPAWN, 180000);
if (Creature* uther = me->SummonCreature(NPC_UTHER, EventPos[EVENT_SRC_UTHER], TEMPSUMMON_DEAD_DESPAWN, 180000))
{
- uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_UTHER], false);
+ uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_UTHER], FORCED_MOVEMENT_NONE, 0.f, false);
uther->SetTarget(me->GetGUID());
me->SetTarget(uther->GetGUID());
}
for (int i = 0; i < 3; ++i)
if (Creature* horse = me->SummonCreature(NPC_HORSE_ESCORT, EventPos[EVENT_SRC_HORSE1 + i], TEMPSUMMON_DEAD_DESPAWN, 180000))
- horse->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_HORSE1 + i], false);
+ horse->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_HORSE1 + i], FORCED_MOVEMENT_NONE, 0.f, false);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+1:
// Start Event
- Start(true, false);
+ me->SetWalk(true);
+ Start(true);
SetDespawnAtEnd(false);
SetDespawnAtFar(false);
- ScheduleNextEvent(currentEvent, 9000);
+ ScheduleNextEvent(currentEvent, 9s);
break;
// After waypoint 0
case EVENT_ACTION_PHASE1+2:
Talk(SAY_PHASE101);
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE1+3:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE102);
- ScheduleNextEvent(currentEvent, 8000);
+ ScheduleNextEvent(currentEvent, 8s);
break;
case EVENT_ACTION_PHASE1+4:
SetEscortPaused(false);
eventInRun = false;
Talk(SAY_PHASE103);
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
// After waypoint 1
case EVENT_ACTION_PHASE1+5:
@@ -719,92 +719,92 @@ public:
jaina->SetTarget(me->GetGUID());
Talk(SAY_PHASE104);
- ScheduleNextEvent(currentEvent, 10000);
+ ScheduleNextEvent(currentEvent, 10s);
break;
case EVENT_ACTION_PHASE1+6:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE105);
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE1+7:
Talk(SAY_PHASE106);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+8:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE107);
- ScheduleNextEvent(currentEvent, 6000);
+ ScheduleNextEvent(currentEvent, 6s);
break;
case EVENT_ACTION_PHASE1+9:
Talk(SAY_PHASE108);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+10:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE109);
- ScheduleNextEvent(currentEvent, 8000);
+ ScheduleNextEvent(currentEvent, 8s);
break;
case EVENT_ACTION_PHASE1+11:
Talk(SAY_PHASE110);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+12:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE111);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+13:
Talk(SAY_PHASE112);
- ScheduleNextEvent(currentEvent, 11000);
+ ScheduleNextEvent(currentEvent, 11s);
break;
case EVENT_ACTION_PHASE1+14:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
jaina->AI()->Talk(SAY_PHASE113);
- ScheduleNextEvent(currentEvent, 2500);
+ ScheduleNextEvent(currentEvent, 2500ms);
break;
case EVENT_ACTION_PHASE1+15:
Talk(SAY_PHASE114);
- ScheduleNextEvent(currentEvent, 9000);
+ ScheduleNextEvent(currentEvent, 9s);
break;
case EVENT_ACTION_PHASE1+16:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE115);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+17:
for (SummonList::const_iterator i = summons.begin(); i != summons.end(); ++i)
{
Creature* summon = ObjectAccessor::GetCreature(*me, *i);
if (summon && summon->GetEntry() == NPC_HORSE_ESCORT)
- summon->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
+ summon->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
}
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE1+18:
if (Creature* uther = GetEventNpc(NPC_UTHER))
{
uther->SetTarget();
uther->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
- uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
+ uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
}
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE1+19:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
{
jaina->SetTarget();
jaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
- jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
+ jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
}
Talk(SAY_PHASE116);
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE1+20:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
@@ -813,16 +813,16 @@ public:
jaina->AI()->Talk(SAY_PHASE117);
}
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE1+21:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
{
jaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
- jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
+ jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
}
summons.DespawnEntry(NPC_HORSE_ESCORT);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE1+22:
SetEscortPaused(false);
@@ -836,7 +836,7 @@ public:
me->SetTarget();
SetEscortPaused(false);
eventInRun = false;
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
// After waypoint 9
case EVENT_ACTION_PHASE2+1:
@@ -848,23 +848,23 @@ public:
cityman->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_CITYMAN]);
}
- ScheduleNextEvent(currentEvent, 9000);
+ ScheduleNextEvent(currentEvent, 9s);
break;
case EVENT_ACTION_PHASE2+2:
Talk(SAY_PHASE203);
SetEscortPaused(false);
eventInRun = false;
- ScheduleNextEvent(currentEvent, 1500);
+ ScheduleNextEvent(currentEvent, 1500ms);
break;
// After waypoint 11
case EVENT_ACTION_PHASE2+3:
if (Creature* stalker = me->SummonCreature(NPC_INVIS_TARGET, 2081.447f, 1287.770f, 141.3241f, 1.37f, TEMPSUMMON_TIMED_DESPAWN, 10000))
{
me->SetFacingToObject(stalker);
- stalker->DespawnOrUnsummon(500);
+ stalker->DespawnOrUnsummon(500ms);
}
Talk(SAY_PHASE205);
- ScheduleNextEvent(currentEvent, 4000);
+ ScheduleNextEvent(currentEvent, 4s);
break;
case EVENT_ACTION_PHASE2+4:
if (Creature* malganis = me->SummonCreature(NPC_MAL_GANIS, EventPos[EVENT_SRC_MALGANIS], TEMPSUMMON_TIMED_DESPAWN, 60000))
@@ -889,13 +889,13 @@ public:
unitList.clear();
}
- ScheduleNextEvent(currentEvent, 12000);
+ ScheduleNextEvent(currentEvent, 12s);
break;
case EVENT_ACTION_PHASE2+5:
if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
malganis->AI()->Talk(SAY_PHASE207);
- ScheduleNextEvent(currentEvent, 15000);
+ ScheduleNextEvent(currentEvent, 15s);
break;
case EVENT_ACTION_PHASE2+6:
if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
@@ -906,7 +906,7 @@ public:
}
Talk(SAY_PHASE208);
- ScheduleNextEvent(currentEvent, 11000);
+ ScheduleNextEvent(currentEvent, 11s);
break;
case EVENT_ACTION_PHASE2+7:
summons.DespawnEntry(NPC_MAL_GANIS);
@@ -914,7 +914,7 @@ public:
summons.DespawnEntry(NPC_CITY_MAN2);
Talk(SAY_PHASE209);
me->SetReactState(REACT_DEFENSIVE);
- ScheduleNextEvent(currentEvent, 20000);
+ ScheduleNextEvent(currentEvent, 20s);
if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED_CITY_INTRO);
break;
@@ -941,36 +941,36 @@ public:
cr->SetTarget(me->GetGUID());
if (Creature* cr = GetEventNpc(NPC_CITY_MAN))
cr->SetTarget(me->GetGUID());
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE3+1:
me->SetReactState(REACT_AGGRESSIVE);
if (Creature* cr = GetEventNpc(NPC_CITY_MAN3))
cr->AI()->Talk(SAY_PHASE302);
- ScheduleNextEvent(currentEvent, 7000);
+ ScheduleNextEvent(currentEvent, 7s);
break;
case EVENT_ACTION_PHASE3+2:
Talk(SAY_PHASE303);
SetEscortPaused(false);
eventInRun = false;
- ScheduleNextEvent(currentEvent, 0);
+ ScheduleNextEvent(currentEvent, 0ms);
break;
// After waypoint 23
case EVENT_ACTION_PHASE3+3:
- SetRun(true);
+ me->SetWalk(false);
if (Creature* cr = GetEventNpc(NPC_CITY_MAN3))
me->CastSpell(cr, SPELL_ARTHAS_CRUSADER_STRIKE, true);
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE3+4:
Talk(SAY_PHASE304);
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE3+5:
if (Creature* cr = GetEventNpc(NPC_CITY_MAN3))
cr->AI()->Talk(SAY_PHASE305);
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
// Trio citizen transformation right as we enter Town Hall
case EVENT_ACTION_PHASE3+6:
@@ -981,7 +981,7 @@ public:
cr->SetImmuneToAll(true);
cr->SetReactState(REACT_PASSIVE);
}
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE3+7:
if (Creature* cr = GetEventNpc(NPC_CITY_MAN4))
@@ -991,7 +991,7 @@ public:
cr->SetImmuneToAll(true);
cr->SetReactState(REACT_PASSIVE);
}
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE3+8:
if (Creature* cr = GetEventNpc(NPC_CITY_MAN3))
@@ -1016,35 +1016,35 @@ public:
cr->SetInCombatWithZone();
cr->AddThreat(me, 0.0f);
}
- ScheduleNextEvent(currentEvent, 2000);
+ ScheduleNextEvent(currentEvent, 2s);
break;
case EVENT_ACTION_PHASE3+9:
// Arthas is fighting infinites in town hall
if (me->IsInCombat())
{
- actionEvents.RepeatEvent(1000);
+ actionEvents.Repeat(1s);
return;
}
summons.DespawnAll();
Talk(SAY_PHASE305_1);
me->SetFacingTo(0.0f);
- ScheduleNextEvent(currentEvent, 5000);
+ ScheduleNextEvent(currentEvent, 5s);
break;
case EVENT_ACTION_PHASE3+10:
Talk(SAY_PHASE306);
- ScheduleNextEvent(currentEvent, 5000);
+ ScheduleNextEvent(currentEvent, 5s);
break;
case EVENT_ACTION_PHASE3+11:
SetEscortPaused(false);
eventInRun = false;
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE3+12:
// Arthas is fighting first chronos
if (me->IsInCombat())
{
- actionEvents.RepeatEvent(1000);
+ actionEvents.Repeat(1s);
return;
}
@@ -1052,13 +1052,13 @@ public:
SetEscortPaused(false);
Talk(SAY_PHASE308);
me->SetFacingTo(M_PI);
- ScheduleNextEvent(currentEvent, 0);
+ ScheduleNextEvent(currentEvent, 0ms);
break;
case EVENT_ACTION_PHASE3+13:
// Arthas is fighting second chronos
if (me->IsInCombat())
{
- actionEvents.RepeatEvent(1000);
+ actionEvents.Repeat(1s);
return;
}
@@ -1066,18 +1066,18 @@ public:
SetEscortPaused(false);
Talk(SAY_PHASE311);
me->SetFacingTo(M_PI * 3 / 2);
- ScheduleNextEvent(currentEvent, 0);
+ ScheduleNextEvent(currentEvent, 0ms);
break;
case EVENT_ACTION_PHASE3+14:
// Arthas is fighting third chronos
if (me->IsInCombat())
{
- actionEvents.RepeatEvent(1000);
+ actionEvents.Repeat(1s);
return;
}
me->SetFacingTo(M_PI / 2);
- ScheduleNextEvent(currentEvent, 8000);
+ ScheduleNextEvent(currentEvent, 8s);
break;
case EVENT_ACTION_PHASE3+15:
Talk(SAY_PHASE313);
@@ -1090,17 +1090,17 @@ public:
cr->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_EPOCH]);
}
- ScheduleNextEvent(currentEvent, 3000);
+ ScheduleNextEvent(currentEvent, 3s);
break;
case EVENT_ACTION_PHASE3+16:
if (Creature* cr = GetEventNpc(NPC_EPOCH))
cr->AI()->Talk(SAY_PHASE314);
- ScheduleNextEvent(currentEvent, 14000);
+ ScheduleNextEvent(currentEvent, 14s);
break;
case EVENT_ACTION_PHASE3+17:
Talk(SAY_PHASE315);
- ScheduleNextEvent(currentEvent, 7000);
+ ScheduleNextEvent(currentEvent, 7s);
break;
case EVENT_ACTION_PHASE3+18:
if (Creature* cr = GetEventNpc(NPC_EPOCH))
@@ -1111,13 +1111,13 @@ public:
cr->AddThreat(me, 0.0f);
cr->SetInCombatWithZone();
}
- ScheduleNextEvent(currentEvent, 1000);
+ ScheduleNextEvent(currentEvent, 1s);
break;
case EVENT_ACTION_PHASE3+19:
// Arthas is fighting epoch chronos
if (me->IsInCombat())
{
- actionEvents.RepeatEvent(1000);
+ actionEvents.Repeat(1s);
return;
}
@@ -1143,7 +1143,7 @@ public:
Talk(SAY_PHASE503);
SetEscortPaused(false);
eventInRun = false;
- ScheduleNextEvent(currentEvent, 5000);
+ ScheduleNextEvent(currentEvent, 5s);
break;
case EVENT_ACTION_PHASE5+2:
me->SetFacingTo(5.28f);
@@ -1154,18 +1154,9 @@ public:
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetGuidData(DATA_EXIT_GATE)))
go->SetGoState(GO_STATE_ACTIVE);
- if (!me->GetMap()->GetPlayers().IsEmpty())
- {
- if (Player* player = me->GetMap()->GetPlayers().getFirst()->GetSource())
- {
- if (GameObject* chest = player->SummonGameObject(DUNGEON_MODE(GO_MALGANIS_CHEST_N, GO_MALGANIS_CHEST_H), 2288.35f, 1498.73f, 128.414f, -0.994837f, 0, 0, 0, 0, 0))
- {
- chest->SetLootRecipient(me->GetMap());
- }
- }
- }
+ pInstance->instance->SummonGameObject(DUNGEON_MODE(GO_MALGANIS_CHEST_N, GO_MALGANIS_CHEST_H), 2288.35f, 1498.73f, 128.414f, -0.994837f, 0, 0, 0, 0, 7 * DAY * IN_MILLISECONDS);
}
- ScheduleNextEvent(currentEvent, 10000);
+ ScheduleNextEvent(currentEvent, 10s);
break;
case EVENT_ACTION_PHASE5+3:
eventInRun = false;
@@ -1186,15 +1177,15 @@ public:
{
case EVENT_COMBAT_EXORCISM:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(target, DUNGEON_MODE(SPELL_ARTHAS_EXORCISM_N, SPELL_ARTHAS_EXORCISM_H), false);
+ me->CastSpell(target, SPELL_ARTHAS_EXORCISM, false);
- combatEvents.RepeatEvent(7300);
+ combatEvents.Repeat(7300ms);
break;
case EVENT_COMBAT_HEALTH_CHECK:
if (HealthBelowPct(40))
me->CastSpell(me, SPELL_ARTHAS_HOLY_LIGHT, false);
- combatEvents.RepeatEvent(1000);
+ combatEvents.Repeat(1s);
break;
}
@@ -1219,7 +1210,7 @@ Creature* npc_arthas::npc_arthasAI::GetEventNpc(uint32 entry)
return nullptr;
}
-void npc_arthas::npc_arthasAI::ScheduleNextEvent(uint32 currentEvent, uint32 time)
+void npc_arthas::npc_arthasAI::ScheduleNextEvent(uint32 currentEvent, Milliseconds time)
{
actionEvents.ScheduleEvent(currentEvent + 1, time);
}
@@ -1245,13 +1236,14 @@ void npc_arthas::npc_arthasAI::JustEngagedWith(Unit* /*who*/)
DoCast(me, SPELL_ARTHAS_AURA);
// Fight
- combatEvents.ScheduleEvent(EVENT_COMBAT_EXORCISM, 2000);
- combatEvents.ScheduleEvent(EVENT_COMBAT_HEALTH_CHECK, 2000);
+ combatEvents.ScheduleEvent(EVENT_COMBAT_EXORCISM, 2s);
+ combatEvents.ScheduleEvent(EVENT_COMBAT_HEALTH_CHECK, 2s);
}
void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
{
- Start(true, true);
+ me->SetWalk(false);
+ Start(true);
SetEscortPaused(true);
SetDespawnAtEnd(false);
@@ -1270,7 +1262,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
if (data == COS_PROGRESS_FINISHED_CITY_INTRO)
{
eventInRun = true;
- actionEvents.RescheduleEvent(EVENT_ACTION_PHASE2 + 8, 10000);
+ actionEvents.RescheduleEvent(EVENT_ACTION_PHASE2 + 8, 10s);
}
else if (data == COS_PROGRESS_KILLED_MEATHOOK)
{
@@ -1352,7 +1344,7 @@ void npc_arthas::npc_arthasAI::SpawnTimeRift()
if (Creature* cr = me->SummonCreature(/*entry*/(uint32)RiftAndSpawnsLocations[timeRiftId][i][0], RiftAndSpawnsLocations[timeRiftId][0][1], RiftAndSpawnsLocations[timeRiftId][0][2], RiftAndSpawnsLocations[timeRiftId][0][3], RiftAndSpawnsLocations[timeRiftId][0][4]))
{
if (cr->GetEntry() == NPC_TIME_RIFT)
- cr->DespawnOrUnsummon(10000);
+ cr->DespawnOrUnsummon(10s);
else // x, y, z (0 is entry)
{
// first infinite
@@ -1547,7 +1539,7 @@ public:
if (me->GetDistance(2400, 1200, 135) > 20.0f && data >= COS_PROGRESS_FINISHED_CITY_INTRO)
{
if (data >= COS_PROGRESS_KILLED_SALRAMM)
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
else
InfectMe(3000);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
index 961ec2c7b9..dbb18cf283 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
@@ -307,7 +307,7 @@ public:
if (Creature* cr = instance->SummonCreature(NPC_CHROMIE_MIDDLE, pos))
{
cr->SetVisible(false);
- cr->DespawnOrUnsummon(1000);
+ cr->DespawnOrUnsummon(1s);
sCreatureTextMgr->SendChat(cr, textId, player, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP);
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp
index 16ad3de36f..98b15dd76b 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp
@@ -48,7 +48,7 @@ struct boss_lieutenant_drake : public BossAI
{
runSecondPath = false;
pathId = me->GetEntry() * 10;
- me->GetMotionMaster()->MovePath(pathId, false);
+ me->GetMotionMaster()->MoveWaypoint(pathId, false);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -114,10 +114,10 @@ struct boss_lieutenant_drake : public BossAI
{
switch (point)
{
- case 7:
+ case 8:
Talk(SAY_ENTER);
break;
- case 10:
+ case 11:
pathId = (me->GetEntry() * 10) + 1;
runSecondPath = true;
break;
@@ -132,7 +132,7 @@ struct boss_lieutenant_drake : public BossAI
if (runSecondPath)
{
runSecondPath = false;
- me->GetMotionMaster()->MovePath(pathId, true);
+ me->GetMotionMaster()->MoveWaypoint(pathId, true);
}
if (!UpdateVictim())
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
index 6cb2b46da7..0afbb1e500 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
@@ -79,11 +79,11 @@ public:
if (_encounterProgress == ENCOUNTER_PROGRESS_NONE)
return;
- _events.ScheduleEvent(EVENT_INITIAL_BARRELS_FLAME, 0);
- _events.ScheduleEvent(EVENT_FINAL_BARRELS_FLAME, 0);
+ _events.ScheduleEvent(EVENT_INITIAL_BARRELS_FLAME, 0ms);
+ _events.ScheduleEvent(EVENT_FINAL_BARRELS_FLAME, 0ms);
if (_encounterProgress == ENCOUNTER_PROGRESS_BARRELS)
- _events.ScheduleEvent(EVENT_SUMMON_LIEUTENANT, 0);
+ _events.ScheduleEvent(EVENT_SUMMON_LIEUTENANT, 0ms);
else
SetData(DATA_THRALL_REPOSITION, 2);
}
@@ -138,7 +138,7 @@ public:
{
case DATA_THRALL_REPOSITION:
if (data > 1)
- _events.ScheduleEvent(EVENT_THRALL_REPOSITION, data == 2 ? 0 : 10000);
+ _events.ScheduleEvent(EVENT_THRALL_REPOSITION, data == 2 ? 0ms : 10s);
else if (Creature* thrall = instance->GetCreature(_thrallGUID))
Reposition(thrall);
return;
@@ -157,9 +157,9 @@ public:
DoUpdateWorldState(WORLD_STATE_OLD_HILLSBRAD_BARRELS_PLANTED, ++_barrelCount);
if (_barrelCount == 5)
{
- _events.ScheduleEvent(EVENT_INITIAL_BARRELS_FLAME, 4000);
- _events.ScheduleEvent(EVENT_FINAL_BARRELS_FLAME, 12000);
- _events.ScheduleEvent(EVENT_SUMMON_LIEUTENANT, 18000);
+ _events.ScheduleEvent(EVENT_INITIAL_BARRELS_FLAME, 4s);
+ _events.ScheduleEvent(EVENT_FINAL_BARRELS_FLAME, 12s);
+ _events.ScheduleEvent(EVENT_SUMMON_LIEUTENANT, 18s);
}
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
index 8745dc128c..1f15ef140b 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
@@ -258,8 +258,8 @@ public:
switch (param)
{
case ENCOUNTER_PROGRESS_BARRELS:
- events.ScheduleEvent(EVENT_OPEN_DOORS, 0);
- events.ScheduleEvent(EVENT_START_WP, 3000);
+ events.ScheduleEvent(EVENT_OPEN_DOORS, 0ms);
+ events.ScheduleEvent(EVENT_START_WP, 3s);
break;
case ENCOUNTER_PROGRESS_THRALL_ARMORED:
case ENCOUNTER_PROGRESS_AMBUSHES_1:
@@ -268,27 +268,27 @@ public:
SetEscortPaused(false);
break;
case ENCOUNTER_PROGRESS_TARETHA_MEET:
- events.ScheduleEvent(EVENT_SUMMON_CHRONO, 0);
- events.ScheduleEvent(EVENT_THRALL_TALK_2, 6000);
- events.ScheduleEvent(EVENT_TARETHA_FALL, 11000);
- events.ScheduleEvent(EVENT_THRALL_TALK_3, 15000);
- events.ScheduleEvent(EVENT_THRALL_MOVE_DOWN, 17000);
+ events.ScheduleEvent(EVENT_SUMMON_CHRONO, 0ms);
+ events.ScheduleEvent(EVENT_THRALL_TALK_2, 6s);
+ events.ScheduleEvent(EVENT_TARETHA_FALL, 11s);
+ events.ScheduleEvent(EVENT_THRALL_TALK_3, 15s);
+ events.ScheduleEvent(EVENT_THRALL_MOVE_DOWN, 17s);
break;
case NPC_TARETHA:
- events.ScheduleEvent(EVENT_THRALL_FACE_TARETHA, 0);
- events.ScheduleEvent(EVENT_THRALL_TALK_4, 4000);
- events.ScheduleEvent(EVENT_TARETHA_TALK_1, 13000);
- events.ScheduleEvent(EVENT_THRALL_TALK_5, 17000);
- events.ScheduleEvent(EVENT_SUMMON_EROZION, 17500);
- events.ScheduleEvent(EVENT_EROZION_TALK_1, 18000);
- events.ScheduleEvent(EVENT_EROZION_ACTION_1, 24000);
- events.ScheduleEvent(EVENT_EROZION_TALK_2, 29000);
- events.ScheduleEvent(EVENT_EROZION_TALK_3, 40000);
- events.ScheduleEvent(EVENT_EROZION_ACTION_2, 46000);
- events.ScheduleEvent(EVENT_THRALL_TALK_6, 48000);
- events.ScheduleEvent(EVENT_THRALL_RUN_AWAY, 51000);
- events.ScheduleEvent(EVENT_TARETHA_TALK_2, 53000);
- events.ScheduleEvent(EVENT_EROZION_FLAGS, 56000);
+ events.ScheduleEvent(EVENT_THRALL_FACE_TARETHA, 0ms);
+ events.ScheduleEvent(EVENT_THRALL_TALK_4, 4s);
+ events.ScheduleEvent(EVENT_TARETHA_TALK_1, 13s);
+ events.ScheduleEvent(EVENT_THRALL_TALK_5, 17s);
+ events.ScheduleEvent(EVENT_SUMMON_EROZION, 17500ms);
+ events.ScheduleEvent(EVENT_EROZION_TALK_1, 18s);
+ events.ScheduleEvent(EVENT_EROZION_ACTION_1, 24s);
+ events.ScheduleEvent(EVENT_EROZION_TALK_2, 29s);
+ events.ScheduleEvent(EVENT_EROZION_TALK_3, 40s);
+ events.ScheduleEvent(EVENT_EROZION_ACTION_2, 46s);
+ events.ScheduleEvent(EVENT_THRALL_TALK_6, 48s);
+ events.ScheduleEvent(EVENT_THRALL_RUN_AWAY, 51s);
+ events.ScheduleEvent(EVENT_TARETHA_TALK_2, 53s);
+ events.ScheduleEvent(EVENT_EROZION_FLAGS, 56s);
break;
}
}
@@ -311,23 +311,23 @@ public:
Talk(SAY_START_EVENT_PART1);
break;
case 8:
- events.ScheduleEvent(EVENT_SET_FACING, 500);
- events.ScheduleEvent(EVENT_ARMORER_SAY, 700);
- events.ScheduleEvent(EVENT_THRALL_EMOTE, 1300);
+ events.ScheduleEvent(EVENT_SET_FACING, 500ms);
+ events.ScheduleEvent(EVENT_ARMORER_SAY, 700ms);
+ events.ScheduleEvent(EVENT_THRALL_EMOTE, 1300ms);
break;
case 9:
- SetRun(false);
- events.ScheduleEvent(EVENT_KILL_ARMORER, 500);
- events.ScheduleEvent(EVENT_TALK_KILL_ARMORER, 3000);
+ me->SetWalk(true);
+ events.ScheduleEvent(EVENT_KILL_ARMORER, 500ms);
+ events.ScheduleEvent(EVENT_TALK_KILL_ARMORER, 3s);
break;
case 10:
- SetRun(true);
- events.ScheduleEvent(EVENT_DRESSING_KNEEL, 500);
- events.ScheduleEvent(EVENT_DRESSING_ARMOR, 3000);
- events.ScheduleEvent(EVENT_DRESSING_STAND, 4000);
- events.ScheduleEvent(EVENT_DRESSING_AXE, 7000);
- events.ScheduleEvent(EVENT_DRESSING_SHIELD, 9000);
- events.ScheduleEvent(EVENT_DRESSING_TALK, 12000);
+ me->SetWalk(false);
+ events.ScheduleEvent(EVENT_DRESSING_KNEEL, 500ms);
+ events.ScheduleEvent(EVENT_DRESSING_ARMOR, 3s);
+ events.ScheduleEvent(EVENT_DRESSING_STAND, 4s);
+ events.ScheduleEvent(EVENT_DRESSING_AXE, 7s);
+ events.ScheduleEvent(EVENT_DRESSING_SHIELD, 9s);
+ events.ScheduleEvent(EVENT_DRESSING_TALK, 12s);
break;
case 18:
if (Creature* warden = me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2149.4634f, 104.97559f, 73.632385f, 1.9065f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
@@ -362,8 +362,8 @@ public:
Talk(SAY_SKARLOC_MEET);
break;
case 30:
- events.ScheduleEvent(EVENT_ENTER_MOUNT, 3000);
- events.ScheduleEvent(EVENT_TALK_START_RIDE, 7000);
+ events.ScheduleEvent(EVENT_ENTER_MOUNT, 3s);
+ events.ScheduleEvent(EVENT_TALK_START_RIDE, 7s);
break;
case 59:
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_TARREN_MILL);
@@ -374,7 +374,7 @@ public:
}
UnMountSelf();
_mounted = false;
- SetRun(false);
+ me->SetWalk(true);
me->SetFacingTo(6.0388f);
break;
case 60:
@@ -382,32 +382,32 @@ public:
if (Creature* horse = me->FindNearestCreature(NPC_SKARLOC_MOUNT, 10.0f))
{
horse->GetMotionMaster()->MovePoint(0, 2501.15f, 572.14f, 54.13f);
- horse->DespawnOrUnsummon(30 * IN_MILLISECONDS);
+ horse->DespawnOrUnsummon(30s);
}
Talk(SAY_EMOTE_HORSE);
SetEscortPaused(true);
- SetRun(true);
+ me->SetWalk(false);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetFacingTo(4.1364f);
break;
case 64:
- SetRun(false);
+ me->SetWalk(true);
break;
case 67:
- events.ScheduleEvent(EVENT_LOOK_1, 1200);
- events.ScheduleEvent(EVENT_MOVE_AROUND, 3500);
- events.ScheduleEvent(EVENT_LOOK_2, 5000);
- events.ScheduleEvent(EVENT_SUMMON_GUARDS, 5100);
- events.ScheduleEvent(EVENT_LOOK_3, 7000);
- events.ScheduleEvent(EVENT_SUMMON_TALK1, 12000);
- events.ScheduleEvent(EVENT_LOOK_4, 17000);
- events.ScheduleEvent(EVENT_SUMMON_TALK2, 19000);
- events.ScheduleEvent(EVENT_GUARDS_MOVING, 21000);
+ events.ScheduleEvent(EVENT_LOOK_1, 1200ms);
+ events.ScheduleEvent(EVENT_MOVE_AROUND, 3500ms);
+ events.ScheduleEvent(EVENT_LOOK_2, 5s);
+ events.ScheduleEvent(EVENT_SUMMON_GUARDS, 5100ms);
+ events.ScheduleEvent(EVENT_LOOK_3, 7s);
+ events.ScheduleEvent(EVENT_SUMMON_TALK1, 12s);
+ events.ScheduleEvent(EVENT_LOOK_4, 17s);
+ events.ScheduleEvent(EVENT_SUMMON_TALK2, 19s);
+ events.ScheduleEvent(EVENT_GUARDS_MOVING, 21s);
break;
case 82:
- events.ScheduleEvent(EVENT_LOOK_5, 500);
- events.ScheduleEvent(EVENT_SUMMON_GUARDS_2, 1000);
- events.ScheduleEvent(EVENT_SUMMON_TALK3, 1500);
+ events.ScheduleEvent(EVENT_LOOK_5, 500ms);
+ events.ScheduleEvent(EVENT_SUMMON_GUARDS_2, 1s);
+ events.ScheduleEvent(EVENT_SUMMON_TALK3, 1500ms);
break;
case 91:
me->SummonCreature(NPC_TM_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_MANUAL_DESPAWN);
@@ -418,26 +418,26 @@ public:
summon->AI()->Talk(SAY_LOOKOUT_INN);
break;
case 92:
- SetRun(false);
+ me->SetWalk(true);
break;
case 94:
summons.DespawnAll();
SetEscortPaused(true);
- SetRun(true);
+ me->SetWalk(false);
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_TARETHA_MEET);
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
{
Taretha->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
Taretha->AI()->Talk(SAY_TARETHA_ESCAPED);
}
- events.ScheduleEvent(EVENT_THRALL_TALK, 4000);
+ events.ScheduleEvent(EVENT_THRALL_TALK, 4s);
break;
case 101:
SetEscortPaused(true);
- events.ScheduleEvent(EVENT_EPOCH_INTRO, 500);
- events.ScheduleEvent(EVENT_SUMMON_INFINITES, 1500);
- events.ScheduleEvent(EVENT_TRANSFORM, 8000);
- events.ScheduleEvent(EVENT_START_WAVE_1, 25000);
+ events.ScheduleEvent(EVENT_EPOCH_INTRO, 500ms);
+ events.ScheduleEvent(EVENT_SUMMON_INFINITES, 1500ms);
+ events.ScheduleEvent(EVENT_TRANSFORM, 8s);
+ events.ScheduleEvent(EVENT_START_WAVE_1, 25s);
break;
case 103:
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_FINISHED);
@@ -473,9 +473,9 @@ public:
void JustEngagedWith(Unit*) override
{
combatEvents.Reset();
- combatEvents.ScheduleEvent(EVENT_CHECK_HEALTH, 500);
- combatEvents.ScheduleEvent(EVENT_SPELL_SHIELD_BLOCK, 8000);
- combatEvents.ScheduleEvent(EVENT_SPELL_STRIKE, 2000);
+ combatEvents.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
+ combatEvents.ScheduleEvent(EVENT_SPELL_SHIELD_BLOCK, 8s);
+ combatEvents.ScheduleEvent(EVENT_SPELL_STRIKE, 2s);
if (roll_chance_i(50))
Talk(SAY_RANDOM_AGGRO);
@@ -566,7 +566,8 @@ public:
me->SummonCreature(NPC_DURNHOLDE_MAGE, 2108.4856f, 189.93457f, 66.30494f, 2.6878f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
break;
case EVENT_START_WP:
- Start(true, true);
+ me->SetWalk(false);
+ Start(true);
SetDespawnAtEnd(false);
break;
case EVENT_SET_FACING:
@@ -663,7 +664,7 @@ public:
me->SetFacingTo(2.0071f);
break;
case EVENT_SUMMON_GUARDS:
- SetRun(true);
+ me->SetWalk(false);
me->SummonCreature(NPC_TM_PROTECTOR, 2501.5708f, 699.38086f, 55.64138f, 3.8571f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
me->SummonCreature(NPC_TM_LOOKOUT, 2500.7002f, 698.26746f, 55.618248f, 3.7350f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
if (Creature* guardsman = me->SummonCreature(NPC_TM_GUARDSMAN, 2500.0908f, 699.9389f, 55.629555f, 4.2935f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
@@ -766,7 +767,7 @@ public:
summons.DoAction(ACTION_SET_IMMUNE_FLAG);
break;
case EVENT_START_WAVE_1:
- events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500ms);
summons.DoAction(ACTION_REMOVE_IMMUNE_FLAG);
summons.DoAction(ACTION_START_COMBAT);
break;
@@ -777,10 +778,10 @@ public:
me->SummonCreature(NPC_INFINITE_SLAYER, 2599.57f, 677.0f, 55.975f, 0.05f, TEMPSUMMON_MANUAL_DESPAWN);
me->SummonCreature(NPC_INFINITE_DEFILER, 2592.57f, 680.0f, 55.975f, 0.05f, TEMPSUMMON_MANUAL_DESPAWN);
summons.DoAction(ACTION_START_COMBAT);
- events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500ms);
break;
}
- events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500ms);
break;
case EVENT_CHECK_WAVE_2:
if (summons.size() == 1)
@@ -790,26 +791,26 @@ public:
me->SummonCreature(NPC_INFINITE_SABOTEUR, 2638.62f, 705.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
me->SummonCreature(NPC_INFINITE_DEFILER, 2642.62f, 705.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
summons.DoAction(ACTION_START_COMBAT);
- events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500ms);
break;
}
- events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500ms);
break;
case EVENT_CHECK_WAVE_3:
if (summons.size() == 1)
{
me->SetHomePosition(2634.79f, 672.964f, 54.8577f, 1.33f);
me->GetMotionMaster()->MoveTargetedHome();
- events.ScheduleEvent(EVENT_CALL_EPOCH, 8000);
+ events.ScheduleEvent(EVENT_CALL_EPOCH, 8s);
break;
}
- events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500);
+ events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500ms);
break;
case EVENT_CALL_EPOCH:
if (Creature* epoch = summons.GetCreatureWithEntry(NPC_EPOCH_HUNTER))
{
epoch->SetImmuneToAll(false);
- epoch->GetMotionMaster()->MovePoint(0, *me, false, true);
+ epoch->GetMotionMaster()->MovePoint(0, *me, FORCED_MOVEMENT_NONE, 0.f, false, true);
}
break;
case EVENT_THRALL_FACE_TARETHA:
@@ -905,15 +906,15 @@ public:
Talk(SAY_RANDOM_LOW_HP);
break;
}
- events.ScheduleEvent(EVENT_CHECK_HEALTH, 500);
+ events.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
break;
case EVENT_SPELL_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_STRIKE, false);
- events.ScheduleEvent(EVENT_SPELL_STRIKE, 6000);
+ events.ScheduleEvent(EVENT_SPELL_STRIKE, 6s);
break;
case EVENT_SPELL_SHIELD_BLOCK:
me->CastSpell(me, SPELL_SHIELD_BLOCK, false);
- events.ScheduleEvent(EVENT_SPELL_SHIELD_BLOCK, 6000);
+ events.ScheduleEvent(EVENT_SPELL_SHIELD_BLOCK, 6s);
break;
}
@@ -922,7 +923,8 @@ public:
void ReorderInstance(uint32 data)
{
- Start(true, true);
+ me->SetWalk(false);
+ Start(true);
SetEscortPaused(true);
SetDespawnAtEnd(false);
@@ -1008,14 +1010,15 @@ public:
{
me->SetStandState(UNIT_STAND_STATE_STAND);
me->RemoveAllAuras();
- Start(false, true);
+ me->SetWalk(false);
+ Start(false);
}
void WaypointReached(uint32 waypointId) override
{
if (waypointId == 7)
{
- SetRun(false);
+ me->SetWalk(true);
Talk(SAY_TARETHA_FREE);
me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
if (Creature* thrall = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THRALL_GUID)))
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
index 21f51ca788..bde93d5144 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
@@ -143,7 +143,7 @@ public:
case NPC_INFINITE_EXECUTIONER_2:
case NPC_INFINITE_VANQUISHER:
case NPC_INFINITE_VANQUISHER_2:
- creature->DespawnOrUnsummon(1);
+ creature->DespawnOrUnsummon(1ms);
break;
default:
break;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
index f80ed1b288..a513a41b74 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
@@ -109,7 +109,7 @@ struct npc_medivh_bm : public ScriptedAI
{
if (summon->GetEntry() == NPC_DP_CRYSTAL_STALKER)
{
- summon->DespawnOrUnsummon(25000);
+ summon->DespawnOrUnsummon(25s);
summon->CastSpell(summon, RAND(SPELL_BANISH_PURPLE, SPELL_BANISH_GREEN), true);
summon->GetMotionMaster()->MoveSplinePath(&_airArray);
}
@@ -118,7 +118,7 @@ struct npc_medivh_bm : public ScriptedAI
summon->CastSpell(summon, SPELL_BLACK_CRYSTAL, true);
Movement::MoveSplineInit init(summon);
init.MovebyPath(_groundArray);
- init.SetCyclic();
+ init.SetCyclic(); // TODO: Add support for cyclic paths in motion master
init.Launch();
}
}
@@ -137,13 +137,13 @@ struct npc_medivh_bm : public ScriptedAI
me->CastSpell(me, SPELL_MEDIVH_CHANNEL, false);
- events.ScheduleEvent(EVENT_CHECK_HEALTH_75, 500);
- events.ScheduleEvent(EVENT_CHECK_HEALTH_50, 500);
- events.ScheduleEvent(EVENT_CHECK_HEALTH_25, 500);
- events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 2000);
- events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 4000);
- events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 6000);
- events.ScheduleEvent(EVENT_SUMMON_FLYING_CRYSTAL, 8000);
+ events.ScheduleEvent(EVENT_CHECK_HEALTH_75, 500ms);
+ events.ScheduleEvent(EVENT_CHECK_HEALTH_50, 500ms);
+ events.ScheduleEvent(EVENT_CHECK_HEALTH_25, 500ms);
+ events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 2s);
+ events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 4s);
+ events.ScheduleEvent(EVENT_SUMMON_CRYSTAL, 6s);
+ events.ScheduleEvent(EVENT_SUMMON_FLYING_CRYSTAL, 8s);
}
}
@@ -154,7 +154,7 @@ struct npc_medivh_bm : public ScriptedAI
if (param == ACTION_OUTRO)
{
events.Reset();
- events.ScheduleEvent(EVENT_OUTRO_1, 4000);
+ events.ScheduleEvent(EVENT_OUTRO_1, 4s);
me->InterruptNonMeleeSpells(true);
me->SummonGameObject(GO_DARK_PORTAL, -2086.0f, 7125.6215f, 30.5f, 6.148f, 0.0f, 0.0f, 0.0f, 0.0f, 0);
@@ -180,43 +180,43 @@ struct npc_medivh_bm : public ScriptedAI
Talk(eventId + 1);
break;
}
- events.ScheduleEvent(eventId, 500);
+ events.ScheduleEvent(eventId, 500ms);
break;
case EVENT_SUMMON_CRYSTAL:
me->SummonCreature(NPC_DP_EMITTER_STALKER, me->GetPositionX() + 8.0f, me->GetPositionY(), me->GetPositionZ());
break;
case EVENT_SUMMON_FLYING_CRYSTAL:
me->CastSpell(me, SPELL_PORTAL_CRYSTALS, true);
- events.ScheduleEvent(EVENT_SUMMON_FLYING_CRYSTAL, 1000);
+ events.ScheduleEvent(EVENT_SUMMON_FLYING_CRYSTAL, 1s);
break;
case EVENT_OUTRO_1:
me->SetFacingTo(6.21f);
Talk(SAY_MEDIVH_WIN);
- events.ScheduleEvent(EVENT_OUTRO_2, 17000);
+ events.ScheduleEvent(EVENT_OUTRO_2, 17s);
break;
case EVENT_OUTRO_2:
me->SetFacingTo(3.07f);
- events.ScheduleEvent(EVENT_OUTRO_3, 2000);
+ events.ScheduleEvent(EVENT_OUTRO_3, 2s);
break;
case EVENT_OUTRO_3:
- SummonOrcs(-2046.158f, -3.0f, 37000, 30000, true);
- events.ScheduleEvent(EVENT_OUTRO_4, 2000);
+ SummonOrcs(-2046.158f, -3.0f, 37s, 30s, true);
+ events.ScheduleEvent(EVENT_OUTRO_4, 2s);
break;
case EVENT_OUTRO_4:
- SummonOrcs(-2055.97f, -2.0f, 33000, 28000, false);
- events.ScheduleEvent(EVENT_OUTRO_5, 2000);
+ SummonOrcs(-2055.97f, -2.0f, 33s, 28s, false);
+ events.ScheduleEvent(EVENT_OUTRO_5, 2s);
break;
case EVENT_OUTRO_5:
- SummonOrcs(-2064.0f, -1.5f, 29000, 26000, false);
- events.ScheduleEvent(EVENT_OUTRO_6, 2000);
+ SummonOrcs(-2064.0f, -1.5f, 29s, 26s, false);
+ events.ScheduleEvent(EVENT_OUTRO_6, 2s);
break;
case EVENT_OUTRO_6:
- SummonOrcs(-2074.35f, -0.1f, 26000, 24000, false);
- events.ScheduleEvent(EVENT_OUTRO_7, 7000);
+ SummonOrcs(-2074.35f, -0.1f, 26s, 24s, false);
+ events.ScheduleEvent(EVENT_OUTRO_7, 7s);
break;
case EVENT_OUTRO_7:
Talk(SAY_MEDIVH_ORCS_ENTER);
- events.ScheduleEvent(EVENT_OUTRO_8, 7000);
+ events.ScheduleEvent(EVENT_OUTRO_8, 7s);
break;
case EVENT_OUTRO_8:
if (Creature* cr = me->FindNearestCreature(NPC_SHADOW_COUNCIL_ENFORCER, 20.0f))
@@ -228,15 +228,15 @@ struct npc_medivh_bm : public ScriptedAI
}
}
- void SummonOrcs(float x, float y, uint32 duration, uint32 homeTime, bool first)
+ void SummonOrcs(float x, float y, Milliseconds duration, Milliseconds homeTime, bool first)
{
for (uint8 i = 0; i < 6; ++i)
{
if (Creature* cr = me->SummonCreature(NPC_SHADOW_COUNCIL_ENFORCER, -2091.731f, 7133.083f - 3.0f * i, 34.589f, 0.0f))
{
cr->GetMotionMaster()->MovePoint(0, (first && i == 3) ? x + 2.0f : x, cr->GetPositionY() + y, cr->GetMapHeight(x, cr->GetPositionY() + y, cr->GetPositionZ(), true));
- cr->m_Events.AddEvent(new NpcRunToHome(*cr), cr->m_Events.CalculateTime(homeTime + urand(0, 2000)));
- cr->DespawnOrUnsummon(duration + urand(0, 2000));
+ cr->m_Events.AddEventAtOffset(new NpcRunToHome(*cr), homeTime + randtime(0ms, 2s));
+ cr->DespawnOrUnsummon(duration + randtime(0ms, 2s));
}
}
}
@@ -355,7 +355,7 @@ struct npc_time_rift : public NullCreatureAI
{
if (creature->GetGUID() == _riftKeeperGUID)
{
- me->DespawnOrUnsummon(0);
+ me->DespawnOrUnsummon(0ms);
}
}
@@ -368,7 +368,7 @@ struct npc_time_rift : public NullCreatureAI
if (!_instance->GetCreature(DATA_AEONUS))
{
DoSelectSummon();
- events.ScheduleEvent(EVENT_SUMMON_AT_RIFT, 15000);
+ events.ScheduleEvent(EVENT_SUMMON_AT_RIFT, 15s);
}
break;
case EVENT_SUMMON_BOSS:
diff --git a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp
index 398bc8764d..bd741c2486 100644
--- a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp
+++ b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp
@@ -58,7 +58,7 @@ public:
case NPC_HIGHBORNE_SUMMONER:
if (_pylonsState == ALL_PYLONS_OFF)
{
- creature->DespawnOrUnsummon(5000);
+ creature->DespawnOrUnsummon(5s);
}
else
{
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index 3564bc8804..f51446e467 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -138,16 +138,16 @@ public:
switch (ph)
{
case PHASE_GROUNDED:
- events.ScheduleEvent(EVENT_SPELL_WINGBUFFET, urand(10000, 20000));
- events.ScheduleEvent(EVENT_SPELL_FLAMEBREATH, urand(10000, 20000));
- events.ScheduleEvent(EVENT_SPELL_TAILSWEEP, urand(15000, 20000));
- events.ScheduleEvent(EVENT_SPELL_CLEAVE, urand(2000, 5000));
+ events.ScheduleEvent(EVENT_SPELL_WINGBUFFET, 10s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_FLAMEBREATH, 10s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_TAILSWEEP, 15s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_CLEAVE, 2s, 5s);
break;
case PHASE_AIRPHASE:
- events.ScheduleEvent(EVENT_START_PHASE_2, 0);
+ events.ScheduleEvent(EVENT_START_PHASE_2, 0ms);
break;
case PHASE_LANDED:
- events.ScheduleEvent(EVENT_START_PHASE_3, 5000);
+ events.ScheduleEvent(EVENT_START_PHASE_3, 5s);
break;
}
}
@@ -237,7 +237,7 @@ public:
me->SetFacingTo(OnyxiaMoveData[id].o);
me->SetSpeed(MOVE_RUN, 1.6f, false);
CurrentWP = id;
- events.ScheduleEvent(EVENT_SPELL_FIREBALL_FIRST, 1000);
+ events.ScheduleEvent(EVENT_SPELL_FIREBALL_FIRST, 1s);
}
}
else
@@ -246,21 +246,21 @@ public:
{
case 10:
me->SetFacingTo(OnyxiaMoveData[0].o);
- events.ScheduleEvent(EVENT_LIFTOFF, 0);
+ events.ScheduleEvent(EVENT_LIFTOFF, 0ms);
break;
case 11:
me->SetFacingTo(OnyxiaMoveData[1].o);
- events.ScheduleEvent(EVENT_FLY_S_TO_N, 0);
+ events.ScheduleEvent(EVENT_FLY_S_TO_N, 0ms);
break;
case 12:
me->SetFacingTo(OnyxiaMoveData[1].o);
- events.ScheduleEvent(EVENT_LAND, 0);
+ events.ScheduleEvent(EVENT_LAND, 0ms);
break;
case 13:
me->SetCanFly(false);
me->SetDisableGravity(false);
me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run, false);
- events.ScheduleEvent(EVENT_PHASE_3_ATTACK, 0);
+ events.ScheduleEvent(EVENT_PHASE_3_ATTACK, 0ms);
break;
}
}
@@ -326,25 +326,25 @@ public:
case EVENT_SPELL_WINGBUFFET:
{
DoCastAOE(SPELL_WINGBUFFET);
- events.RepeatEvent(urand(15000, 30000));
+ events.Repeat(15s, 30s);
break;
}
case EVENT_SPELL_FLAMEBREATH:
{
DoCastAOE(SPELL_FLAMEBREATH);
- events.RepeatEvent(urand(10000, 20000));
+ events.Repeat(10s, 20s);
break;
}
case EVENT_SPELL_TAILSWEEP:
{
DoCastAOE(SPELL_TAILSWEEP);
- events.RepeatEvent(urand(15000, 20000));
+ events.Repeat(15s, 20s);
break;
}
case EVENT_SPELL_CLEAVE:
{
DoCastVictim(SPELL_CLEAVE);
- events.RepeatEvent(urand(2000, 5000));
+ events.Repeat(2s, 5s);
break;
}
case EVENT_START_PHASE_2:
@@ -369,7 +369,7 @@ public:
me->GetMotionMaster()->MoveTakeoff(11, OnyxiaMoveData[1].x + 1.0f, OnyxiaMoveData[1].y, OnyxiaMoveData[1].z, 12.0f);
bManyWhelpsAvailable = true;
- events.RescheduleEvent(EVENT_END_MANY_WHELPS_TIME, 10000);
+ events.RescheduleEvent(EVENT_END_MANY_WHELPS_TIME, 10s);
break;
}
case EVENT_END_MANY_WHELPS_TIME:
@@ -381,20 +381,20 @@ public:
me->GetMotionMaster()->MovePoint(5, OnyxiaMoveData[5].x, OnyxiaMoveData[5].y, OnyxiaMoveData[5].z);
whelpSpam = true;
- events.ScheduleEvent(EVENT_WHELP_SPAM, 90000);
- events.ScheduleEvent(EVENT_SUMMON_LAIR_GUARD, 30000);
+ events.ScheduleEvent(EVENT_WHELP_SPAM, 90s);
+ events.ScheduleEvent(EVENT_SUMMON_LAIR_GUARD, 30s);
break;
}
case EVENT_SUMMON_LAIR_GUARD:
{
me->CastSpell(-101.654f, -214.491f, -80.70f, SPELL_SUMMON_LAIR_GUARD, true);
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
case EVENT_WHELP_SPAM:
{
whelpSpam = true;
- events.RepeatEvent(90000);
+ events.Repeat(90s);
break;
}
case EVENT_LAND:
@@ -413,7 +413,7 @@ public:
DoCast(v, SPELL_FIREBALL);
}
- events.ScheduleEvent(EVENT_SPELL_FIREBALL_SECOND, 4000);
+ events.ScheduleEvent(EVENT_SPELL_FIREBALL_SECOND, 4s);
break;
}
case EVENT_SPELL_FIREBALL_SECOND:
@@ -427,15 +427,15 @@ public:
uint8 rand = urand(0, 99);
if (rand < 33)
{
- events.ScheduleEvent(EVENT_PHASE_2_STEP_CW, 4000);
+ events.ScheduleEvent(EVENT_PHASE_2_STEP_CW, 4s);
}
else if (rand < 66)
{
- events.ScheduleEvent(EVENT_PHASE_2_STEP_ACW, 4000);
+ events.ScheduleEvent(EVENT_PHASE_2_STEP_ACW, 4s);
}
else
{
- events.ScheduleEvent(EVENT_PHASE_2_STEP_ACROSS, 4000);
+ events.ScheduleEvent(EVENT_PHASE_2_STEP_ACROSS, 4s);
}
break;
}
@@ -464,7 +464,7 @@ public:
Talk(EMOTE_BREATH);
me->SetFacingTo(OnyxiaMoveData[CurrentWP].o);
DoCastAOE(OnyxiaMoveData[CurrentWP].spellId);
- events.ScheduleEvent(EVENT_SPELL_BREATH, 8250);
+ events.ScheduleEvent(EVENT_SPELL_BREATH, 8250ms);
break;
}
case EVENT_SPELL_BREATH:
@@ -491,20 +491,20 @@ public:
DoCastAOE(SPELL_BELLOWINGROAR);
- events.ScheduleEvent(EVENT_ERUPTION, 0);
- events.ScheduleEvent(EVENT_SPELL_WINGBUFFET, urand(10000, 20000));
- events.ScheduleEvent(EVENT_SPELL_FLAMEBREATH, urand(10000, 20000));
- events.ScheduleEvent(EVENT_SPELL_TAILSWEEP, urand(15000, 20000));
- events.ScheduleEvent(EVENT_SPELL_CLEAVE, urand(2000, 5000));
- events.ScheduleEvent(EVENT_SPELL_BELLOWINGROAR, 15000);
- events.ScheduleEvent(EVENT_SUMMON_WHELP, 10000);
+ events.ScheduleEvent(EVENT_ERUPTION, 0ms);
+ events.ScheduleEvent(EVENT_SPELL_WINGBUFFET, 10s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_FLAMEBREATH, 10s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_TAILSWEEP, 15s, 20s);
+ events.ScheduleEvent(EVENT_SPELL_CLEAVE, 2s, 5s);
+ events.ScheduleEvent(EVENT_SPELL_BELLOWINGROAR, 15s);
+ events.ScheduleEvent(EVENT_SUMMON_WHELP, 10s);
break;
}
case EVENT_SPELL_BELLOWINGROAR:
{
DoCastAOE(SPELL_BELLOWINGROAR);
- events.RepeatEvent(22000);
- events.ScheduleEvent(EVENT_ERUPTION, 0);
+ events.Repeat(22s);
+ events.ScheduleEvent(EVENT_ERUPTION, 0ms);
break;
}
case EVENT_ERUPTION:
@@ -521,7 +521,7 @@ public:
float dist = rand_norm() * 4.0f;
me->CastSpell(-33.18f + cos(angle) * dist, -258.80f + std::sin(angle) * dist, -89.0f, 17646, true);
me->CastSpell(-32.535f + cos(angle) * dist, -170.190f + std::sin(angle) * dist, -89.0f, 17646, true);
- events.RepeatEvent(30000);
+ events.Repeat(30s);
break;
}
}
@@ -555,8 +555,8 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
events.Reset();
- events.ScheduleEvent(EVENT_OLG_SPELL_BLASTNOVA, 15000);
- events.ScheduleEvent(EVENT_OLG_SPELL_IGNITEWEAPON, 10000);
+ events.ScheduleEvent(EVENT_OLG_SPELL_BLASTNOVA, 15s);
+ events.ScheduleEvent(EVENT_OLG_SPELL_IGNITEWEAPON, 10s);
}
void UpdateAI(uint32 diff) override
@@ -577,17 +577,17 @@ public:
{
case EVENT_OLG_SPELL_BLASTNOVA:
DoCastAOE(SPELL_OLG_BLASTNOVA);
- events.RepeatEvent(15000);
+ events.Repeat(15s);
break;
case EVENT_OLG_SPELL_IGNITEWEAPON:
if (me->HasUnitFlag(UNIT_FLAG_DISARMED))
{
- events.RepeatEvent(5000);
+ events.Repeat(5s);
}
else
{
DoCastSelf(SPELL_OLG_IGNITEWEAPON);
- events.RepeatEvent(urand(18000, 21000));
+ events.Repeat(18s, 21s);
}
break;
}
diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp
index 2dfebf46b5..5506a4595b 100644
--- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp
@@ -51,7 +51,7 @@ enum Belnistrasz
EVENT_FROST_NOVA = 6,
PATH_ESCORT = 871710,
- POINT_REACH_IDOL = 17,
+ POINT_REACH_IDOL = 18,
QUEST_EXTINGUISHING_THE_IDOL = 3525,
@@ -115,7 +115,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
}
void sQuestAccept(Player* /*player*/, Quest const* quest) override
@@ -126,7 +126,7 @@ public:
Talk(SAY_QUEST_ACCEPTED);
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
- me->GetMotionMaster()->MovePath(PATH_ESCORT, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_ESCORT, false);
}
}
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
index d36cf4718b..6d9e71f56d 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
@@ -70,7 +70,7 @@ enum Emotes
enum Points
{
POINT_AIR = 0,
- POINT_GROUND = 2,
+ POINT_GROUND = 3,
POINT_PARALYZE = 2
};
@@ -92,7 +92,7 @@ struct boss_ayamiss : public BossAI
me->SetReactState(REACT_PASSIVE);
me->SetCanFly(false);
me->SetDisableGravity(false);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
DoResetThreatList();
scheduler.CancelGroup(GROUP_AIR);
});
@@ -291,7 +291,7 @@ class spell_ayamiss_swarmer_teleport_trigger : public SpellScript
uint32 pathId = data.pathId;
caster->m_Events.AddEventAtOffset([caster, pathId]()
{
- caster->GetMotionMaster()->MovePath(pathId, false);
+ caster->GetMotionMaster()->MoveWaypoint(pathId, false);
}, 1s);
}
@@ -361,7 +361,7 @@ public:
void HandleScript(SpellEffIndex /*effIndex*/)
{
GetCaster()->ToCreature()->GetMotionMaster()->Clear();
- GetCaster()->ToCreature()->GetMotionMaster()->MovePath(_pathId, false);
+ GetCaster()->ToCreature()->GetMotionMaster()->MoveWaypoint(_pathId, false);
}
void Register() override
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
index fa7c560488..9c5669d50e 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
@@ -231,7 +231,7 @@ struct npc_buru_egg : public ScriptedAI
}
}
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
}
void UpdateAI(uint32 /*diff*/) override { }
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
index 7b56c464d1..083b9895f3 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
@@ -154,7 +154,7 @@ struct boss_ossirian : public BossAI
}
}
- void SetGUID(ObjectGuid guid, int32 action) override
+ void SetGUID(ObjectGuid const& guid, int32 action) override
{
if (action == ACTION_TRIGGER_WEAKNESS && guid != _firstCrystalGUID)
{
@@ -188,7 +188,7 @@ struct boss_ossirian : public BossAI
{
if (Creature* vortex = me->SummonCreature(NPC_SAND_VORTEX, pos))
{
- vortex->GetMotionMaster()->MovePath(pathIds.front(), true);
+ vortex->GetMotionMaster()->MoveWaypoint(pathIds.front(), true);
pathIds.reverse();
}
}
@@ -317,7 +317,7 @@ public:
{
go_ossirian_crystalAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == GUID_TRIGGER_PAIR)
{
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
index 319bb5e2ac..fb921d71e4 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
@@ -209,7 +209,7 @@ struct npc_general_andorov : public npc_escortAI
_initialAttackTimer = 5 * IN_MILLISECONDS;
_paused = false;
- Start(false, true);
+ Start(false);
me->SetImmuneToNPC(true);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
index f7ec9c8380..241a049397 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
@@ -204,7 +204,7 @@ public:
if (me->GetEntry() == NPC_VEM)
{
- me->GetMotionMaster()->MovePath(VEM_WAYPOINT_PATH, true);
+ me->GetMotionMaster()->MoveWaypoint(VEM_WAYPOINT_PATH, true);
}
}
@@ -310,7 +310,7 @@ public:
me->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
DoFinalSpell();
Talk(EMOTE_DEVOURED);
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
return;
}
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
index 43d7411743..40019ccc03 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
@@ -170,7 +170,7 @@ struct boss_ouro : public BossAI
}
}
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
void CastGroundRupture()
@@ -273,7 +273,7 @@ struct boss_ouro : public BossAI
if (me->GetThreatMgr().GetThreatList().empty())
{
DoCastSelf(SPELL_OURO_SUBMERGE_VISUAL);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
instance->SetBossState(DATA_OURO, FAIL);
if (GameObject* base = me->FindNearestGameObject(GO_SANDWORM_BASE, 200.f))
base->DespawnOrUnsummon();
@@ -334,7 +334,7 @@ struct npc_dirt_mound : ScriptedAI
scheduler.Schedule(30s, [this](TaskContext /*context*/)
{
DoCastSelf(SPELL_SUMMON_SCARABS, true);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
})
.Schedule(100ms, [this](TaskContext context)
{
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
index eab24db58e..cdad23d67c 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -418,7 +418,7 @@ public:
if (Creature* mastersEye = instance->GetCreature(DATA_MASTERS_EYE))
{
mastersEye->AI()->Talk(EMOTE_MASTERS_EYE_AT, player);
- mastersEye->DespawnOrUnsummon(11000);
+ mastersEye->DespawnOrUnsummon(11s);
mastersEye->m_Events.AddEventAtOffset([mastersEye, player]()
{
mastersEye->SetFacingToObject(player);
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
index a254356892..6f642d152c 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
@@ -175,7 +175,7 @@ struct boss_viscidus : public BossAI
{
DoCastSelf(SPELL_EXPLODE_TRIGGER, true);
})
- .Schedule(3000ms, [this](TaskContext /*context*/)
+ .Schedule(3s, [this](TaskContext /*context*/)
{
DoCastSelf(SPELL_INVIS_SELF, true);
me->SetAuraStack(SPELL_VISCIDUS_SHRINKS, me, 20);
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp
index 2cc53521d4..ca26d56cc8 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp
@@ -393,10 +393,10 @@ struct npc_obsidian_nullifier : public ScriptedAI
context.Repeat(6s);
})
- .Schedule(6000ms, 8400ms, [this](TaskContext context)
+ .Schedule(6s, 8400ms, [this](TaskContext context)
{
DoCastVictim(SPELL_CLEAVE, true);
- context.Repeat(6000ms, 8400ms);
+ context.Repeat(6s, 8400ms);
});
}
@@ -447,7 +447,7 @@ struct npc_ahnqiraji_critter : public ScriptedAI
}
}
- context.Repeat(3500ms, 4000ms);
+ context.Repeat(3500ms, 4s);
});
}
@@ -474,7 +474,7 @@ struct npc_ahnqiraji_critter : public ScriptedAI
{
if (me->GetEntry() == NPC_QIRAJI_SCORPION)
{
- me->DespawnOrUnsummon(5 * IN_MILLISECONDS);
+ me->DespawnOrUnsummon(5s);
}
}
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
index 397e7b611e..0ec6a82de6 100644
--- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
+++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
@@ -437,7 +437,7 @@ public:
{
if (Creature* add = instance->GetCreature(*addsAtBase.begin()))
{
- add->GetMotionMaster()->MovePath(PATH_ADDS, false);
+ add->GetMotionMaster()->MoveWaypoint(PATH_ADDS, false);
movedadds.push_back(add->GetGUID());
}
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp
index bd6543ffbe..f24a4592bd 100644
--- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp
+++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp
@@ -176,25 +176,25 @@ public:
if (Creature* weegli = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_WEEGLI)))
{
weegli->CastSpell(weegli, SPELL_BLYS_BAND_ESCAPE);
- weegli->DespawnOrUnsummon(10000);
+ weegli->DespawnOrUnsummon(10s);
}
if (Creature* raven = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_RAVEN)))
{
raven->CastSpell(raven, SPELL_BLYS_BAND_ESCAPE);
- raven->DespawnOrUnsummon(10000);
+ raven->DespawnOrUnsummon(10s);
}
if (Creature* oro = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ORO)))
{
oro->CastSpell(oro, SPELL_BLYS_BAND_ESCAPE);
- oro->DespawnOrUnsummon(10000);
+ oro->DespawnOrUnsummon(10s);
}
if (Creature* murta = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_MURTA)))
{
murta->CastSpell(murta, SPELL_BLYS_BAND_ESCAPE);
- murta->DespawnOrUnsummon(10000);
+ murta->DespawnOrUnsummon(10s);
}
DoCastSelf(SPELL_BLYS_BAND_ESCAPE);
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
Porthome_Timer = 156000; //set timer back so that the event doesn't keep triggering
}
else
@@ -436,7 +436,7 @@ public:
case 1:
me->GetMotionMaster()->MovePoint(2, 1871.18f, 1100.f, 8.88f);
Talk(SAY_WEEGLI_OUT_OF_HERE);
- me->DespawnOrUnsummon(8000);
+ me->DespawnOrUnsummon(8s);
instance->SetData(DATA_PYRAMID, PYRAMID_GATES_DESTROYED);
destroyingDoor = false;
break;
diff --git a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
index 1e80e0982f..8186c7f364 100644
--- a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
+++ b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
@@ -74,7 +74,6 @@ void AddSC_instance_wailing_caverns(); //Wailing caverns
void AddSC_zulfarrak();
void AddSC_instance_zulfarrak(); //Zul'Farrak instance script
void AddSC_ashenvale();
-void AddSC_azshara();
void AddSC_azuremyst_isle();
void AddSC_bloodmyst_isle();
void AddSC_boss_azuregos();
@@ -157,7 +156,6 @@ void AddKalimdorScripts()
AddSC_zulfarrak();
AddSC_instance_zulfarrak(); //Zul'Farrak instance script
AddSC_ashenvale();
- AddSC_azshara();
AddSC_azuremyst_isle();
AddSC_bloodmyst_isle();
AddSC_boss_azuregos();
diff --git a/src/server/scripts/Kalimdor/zone_ashenvale.cpp b/src/server/scripts/Kalimdor/zone_ashenvale.cpp
index e7131c5fd8..d11c837787 100644
--- a/src/server/scripts/Kalimdor/zone_ashenvale.cpp
+++ b/src/server/scripts/Kalimdor/zone_ashenvale.cpp
@@ -121,7 +121,8 @@ public:
{
Talk(SAY_MUG_START1);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
- npc_escortAI::Start(true, false, player->GetGUID());
+ me->SetWalk(true);
+ Start(true, player->GetGUID());
}
}
diff --git a/src/server/scripts/Kalimdor/zone_azshara.cpp b/src/server/scripts/Kalimdor/zone_azshara.cpp
deleted file mode 100644
index 1a10cec1db..0000000000
--- a/src/server/scripts/Kalimdor/zone_azshara.cpp
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License as published by the
- * Free Software Foundation; either version 3 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 Affero General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "CreatureScript.h"
-#include "Player.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
-
-/*####
-# npc_rizzle_sprysprocket
-####*/
-
-enum RizzleSprysprocketData
-{
- QUEST_CHASING_THE_MOONSTONE = 10994,
-
- NPC_DEPTH_CHARGE = 23025,
-
- SPELL_RIZZLE_BLACKJACK = 39865,
- SPELL_RIZZLE_ESCAPE = 39871,
- SPELL_RIZZLE_FROST_GRENADE = 40525,
- SPELL_DEPTH_CHARGE_TRAP = 38576,
- SPELL_PERIODIC_DEPTH_CHARGE = 39912,
- SPELL_GIVE_SOUTHFURY_MOONSTONE = 39886,
-
- SAY_RIZZLE_START = 0,
- SAY_RIZZLE_GRENADE = 1,
- SAY_RIZZLE_FINAL = 2,
- MSG_ESCAPE_NOTICE = 3,
- GOSSIP_GET_MOONSTONE = 21893
-
-};
-
-Position const WPs[58] =
-{
- {3691.97f, -3962.41f, 35.9118f, 3.67f},
- {3675.02f, -3960.49f, 35.9118f, 3.67f},
- {3653.19f, -3958.33f, 33.9118f, 3.59f},
- {3621.12f, -3958.51f, 29.9118f, 3.48f},
- {3604.86f, -3963, 29.9118f, 3.48f},
- {3569.94f, -3970.25f, 29.9118f, 3.44f},
- {3541.03f, -3975.64f, 29.9118f, 3.41f},
- {3510.84f, -3978.71f, 29.9118f, 3.41f},
- {3472.7f, -3997.07f, 29.9118f, 3.35f},
- {3439.15f, -4014.55f, 29.9118f, 3.29f},
- {3412.8f, -4025.87f, 29.9118f, 3.25f},
- {3384.95f, -4038.04f, 29.9118f, 3.24f},
- {3346.77f, -4052.93f, 29.9118f, 3.22f},
- {3299.56f, -4071.59f, 29.9118f, 3.20f},
- {3261.22f, -4080.38f, 30.9118f, 3.19f},
- {3220.68f, -4083.09f, 31.9118f, 3.18f},
- {3187.11f, -4070.45f, 33.9118f, 3.16f},
- {3162.78f, -4062.75f, 33.9118f, 3.15f},
- {3136.09f, -4050.32f, 33.9118f, 3.07f},
- {3119.47f, -4044.51f, 36.0363f, 3.07f},
- {3098.95f, -4019.8f, 33.9118f, 3.07f},
- {3073.07f, -4011.42f, 33.9118f, 3.07f},
- {3051.71f, -3993.37f, 33.9118f, 3.02f},
- {3027.52f, -3978.6f, 33.9118f, 3.00f},
- {3003.78f, -3960.14f, 33.9118f, 2.98f},
- {2977.99f, -3941.98f, 31.9118f, 2.96f},
- {2964.57f, -3932.07f, 30.9118f, 2.96f},
- {2947.9f, -3921.31f, 29.9118f, 2.96f},
- {2924.91f, -3910.8f, 29.9118f, 2.94f},
- {2903.04f, -3896.42f, 29.9118f, 2.93f},
- {2884.75f, -3874.03f, 29.9118f, 2.90f},
- {2868.19f, -3851.48f, 29.9118f, 2.82f},
- {2854.62f, -3819.72f, 29.9118f, 2.80f},
- {2825.53f, -3790.4f, 29.9118f, 2.744f},
- {2804.31f, -3773.05f, 29.9118f, 2.71f},
- {2769.78f, -3763.57f, 29.9118f, 2.70f},
- {2727.23f, -3745.92f, 30.9118f, 2.69f},
- {2680.12f, -3737.49f, 30.9118f, 2.67f},
- {2647.62f, -3739.94f, 30.9118f, 2.66f},
- {2616.6f, -3745.75f, 30.9118f, 2.64f},
- {2589.38f, -3731.97f, 30.9118f, 2.61f},
- {2562.94f, -3722.35f, 31.9118f, 2.56f},
- {2521.05f, -3716.6f, 31.9118f, 2.55f},
- {2485.26f, -3706.67f, 31.9118f, 2.51f},
- {2458.93f, -3696.67f, 31.9118f, 2.51f},
- {2432, -3692.03f, 31.9118f, 2.46f},
- {2399.59f, -3681.97f, 31.9118f, 2.45f},
- {2357.75f, -3666.6f, 31.9118f, 2.44f},
- {2311.99f, -3656.88f, 31.9118f, 2.94f},
- {2263.41f, -3649.55f, 31.9118f, 3.02f},
- {2209.05f, -3641.76f, 31.9118f, 2.99f},
- {2164.83f, -3637.64f, 31.9118f, 3.15f},
- {2122.42f, -3639, 31.9118f, 3.21f},
- {2075.73f, -3643.59f, 31.9118f, 3.22f},
- {2033.59f, -3649.52f, 31.9118f, 3.42f},
- {1985.22f, -3662.99f, 31.9118f, 3.42f},
- {1927.09f, -3679.56f, 33.9118f, 3.42f},
- {1873.57f, -3695.32f, 33.9118f, 3.44f}
-};
-
-class npc_rizzle_sprysprocket : public CreatureScript
-{
-public:
- npc_rizzle_sprysprocket() : CreatureScript("npc_rizzle_sprysprocket") { }
-
- struct npc_rizzle_sprysprocketAI : public ScriptedAI
- {
- npc_rizzle_sprysprocketAI(Creature* creature) : ScriptedAI(creature) { }
-
- void Reset() override
- {
- SpellEscapeTimer = 1300;
- TeleportTimer = 3500;
- CheckTimer = 10000;
- GrenadeTimer = 30000;
- MustDieTimer = 3000;
- CurrWP = 0;
-
- PlayerGUID.Clear();
-
- MustDie = false;
- Escape = false;
- ContinueWP = false;
- Reached = false;
- }
-
- void JustEngagedWith(Unit* /*who*/) override { }
-
- void AttackStart(Unit* who) override
- {
- if (!who || PlayerGUID)
- return;
-
- Player* player = who->ToPlayer();
-
- if (player && player->GetQuestStatus(QUEST_CHASING_THE_MOONSTONE) == QUEST_STATUS_INCOMPLETE)
- {
- PlayerGUID = who->GetGUID();
- Talk(SAY_RIZZLE_START);
- DoCast(who, SPELL_RIZZLE_BLACKJACK, false);
- return;
- }
- }
-
- void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/) override
- {
- CloseGossipMenuFor(player);
- me->CastSpell(player, SPELL_GIVE_SOUTHFURY_MOONSTONE, true);
- MustDieTimer = 3000;
- MustDie = true;
- }
-
- void MovementInform(uint32 type, uint32 id) override
- {
- if (type != POINT_MOTION_TYPE)
- return;
-
- if (id == 57)
- {
- me->DespawnOrUnsummon();
- return;
- }
-
- ++CurrWP;
- ContinueWP = true;
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (MustDie)
- {
- if (MustDieTimer <= diff)
- {
- me->DespawnOrUnsummon();
- return;
- }
- else MustDieTimer -= diff;
- }
-
- if (!Escape)
- {
- if (!PlayerGUID)
- return;
-
- if (SpellEscapeTimer <= diff)
- {
- DoCast(me, SPELL_RIZZLE_ESCAPE, false);
- SpellEscapeTimer = 10000;
- }
- else SpellEscapeTimer -= diff;
-
- if (TeleportTimer <= diff)
- {
- // temp solution - unit can't be teleported by core using spelleffect 5, only players
- me->NearTeleportTo(3706.39f, -3969.15f, 35.9118f, me->GetOrientation());
-
- //begin swimming and summon depth charges
- Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
- if (!player)
- return;
-
- Talk(MSG_ESCAPE_NOTICE, player);
- DoCast(me, SPELL_PERIODIC_DEPTH_CHARGE);
- me->SetHover(true);
- me->SetSwim(true);
- me->SetSpeed(MOVE_RUN, 0.85f, true);
- me->GetMotionMaster()->MovementExpired();
- me->GetMotionMaster()->MovePoint(CurrWP, WPs[CurrWP]);
- Escape = true;
- }
- else TeleportTimer -= diff;
-
- return;
- }
-
- if (ContinueWP)
- {
- me->GetMotionMaster()->MovePoint(CurrWP, WPs[CurrWP]);
- ContinueWP = false;
- }
-
- if (GrenadeTimer <= diff)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
- {
- Talk(SAY_RIZZLE_GRENADE, player);
- DoCast(player, SPELL_RIZZLE_FROST_GRENADE, true);
- }
- GrenadeTimer = 30000;
- }
- else GrenadeTimer -= diff;
-
- if (CheckTimer <= diff)
- {
- Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
- if (!player)
- {
- me->DespawnOrUnsummon();
- return;
- }
-
- if (me->IsWithinDist(player, 10) && me->GetPositionX() > player->GetPositionX() && !Reached)
- {
- Talk(SAY_RIZZLE_FINAL);
- me->ReplaceAllNpcFlags(NPCFlags(1));
- me->SetFaction(FACTION_FRIENDLY);
- me->GetMotionMaster()->MoveIdle();
- me->RemoveAurasDueToSpell(SPELL_PERIODIC_DEPTH_CHARGE);
- Reached = true;
- }
-
- CheckTimer = 1000;
- }
- else CheckTimer -= diff;
- }
-
- private:
- ObjectGuid PlayerGUID;
- uint32 SpellEscapeTimer;
- uint32 TeleportTimer;
- uint32 CheckTimer;
- uint32 GrenadeTimer;
- uint32 MustDieTimer;
- uint32 CurrWP;
- bool MustDie;
- bool Escape;
- bool ContinueWP;
- bool Reached;
- };
-
- bool OnGossipHello(Player* player, Creature* creature) override
- {
- if (player->GetQuestStatus(QUEST_CHASING_THE_MOONSTONE) != QUEST_STATUS_INCOMPLETE)
- return true;
-
- AddGossipItemFor(player, GOSSIP_GET_MOONSTONE, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- SendGossipMenuFor(player, 10811, creature->GetGUID());
-
- return true;
- }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_rizzle_sprysprocketAI(creature);
- }
-};
-
-/*####
-# npc_depth_charge
-####*/
-class npc_depth_charge : public CreatureScript
-{
-public:
- npc_depth_charge() : CreatureScript("npc_depth_charge") { }
-
- struct npc_depth_chargeAI : public ScriptedAI
- {
- npc_depth_chargeAI(Creature* creature) : ScriptedAI(creature) { }
-
- bool WeMustDie;
- uint32 WeMustDieTimer;
-
- void Reset() override
- {
- me->SetHover(true);
- me->SetSwim(true);
- me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- WeMustDie = false;
- WeMustDieTimer = 1000;
- }
-
- void JustEngagedWith(Unit* /*who*/) override { }
-
- void AttackStart(Unit* /*who*/) override { }
-
- void MoveInLineOfSight(Unit* who) override
- {
- if (!who)
- return;
-
- if (who->IsPlayer() && me->IsWithinDistInMap(who, 5))
- {
- DoCast(who, SPELL_DEPTH_CHARGE_TRAP);
- WeMustDie = true;
- return;
- }
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (WeMustDie)
- {
- if (WeMustDieTimer <= diff)
- me->DespawnOrUnsummon();
- else
- WeMustDieTimer -= diff;
- }
- return;
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_depth_chargeAI(creature);
- }
-};
-
-void AddSC_azshara()
-{
- new npc_rizzle_sprysprocket();
- new npc_depth_charge();
-}
diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
index 7069cd3815..41c22086eb 100644
--- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
@@ -258,7 +258,7 @@ public:
case 28:
player->GroupEventHappens(QUEST_A_CRY_FOR_HELP, me);
_events.ScheduleEvent(EVENT_TALK_END, 2s);
- SetRun(true);
+ me->SetWalk(false);
break;
case 29:
if (Creature* cowlen = me->FindNearestCreature(NPC_COWLEN, 50.0f, true))
@@ -289,7 +289,8 @@ public:
case EVENT_START_ESCORT:
if (Player* player = ObjectAccessor::GetPlayer(*me, _player))
{
- npc_escortAI::Start(true, false, player->GetGUID());
+ me->SetWalk(true);
+ Start(true, player->GetGUID());
}
_events.ScheduleEvent(EVENT_STAND, 2s);
break;
diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
index 359a18c575..01761599ec 100644
--- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
@@ -24,7 +24,7 @@
######*/
//possible creatures to be spawned
-uint32 const possibleSpawns[32] = {17322, 17661, 17496, 17522, 17340, 17352, 17333, 17524, 17654, 17348, 17339, 17345, 17359, 17353, 17336, 17550, 17330, 17701, 17321, 17325, 17320, 17683, 17342, 17715, 17334, 17341, 17338, 17337, 17346, 17344, 17327};
+uint32 const possibleSpawns[32] = {17322, 17661, 17496, 17522, 17340, 17352, 17333, 17524, 17654, 17348, 17339, 17345, 17353, 17336, 17550, 17330, 17701, 17321, 17325, 17320, 17683, 17342, 17715, 17334, 17341, 17338, 17337, 17346, 17344, 17327};
enum WebbedCreature
{
diff --git a/src/server/scripts/Kalimdor/zone_darkshore.cpp b/src/server/scripts/Kalimdor/zone_darkshore.cpp
index c3a76fc638..a9e76721e2 100644
--- a/src/server/scripts/Kalimdor/zone_darkshore.cpp
+++ b/src/server/scripts/Kalimdor/zone_darkshore.cpp
@@ -397,7 +397,10 @@ public:
if (quest->GetQuestId() == QUEST_ABSENT_MINDED_PT2)
{
if (npc_escortAI* pEscortAI = CAST_AI(npc_prospector_remtravel::npc_prospector_remtravelAI, creature->AI()))
- pEscortAI->Start(false, false, player->GetGUID());
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID());
+ }
creature->SetFaction(FACTION_ESCORTEE_A_NEUTRAL_PASSIVE);
}
@@ -463,7 +466,7 @@ public:
_events.Reset();
_events.ScheduleEvent(EVENT_CHECK_FOLLOWING, 1s);
player->KilledMonsterCredit(NPC_CAPTURED_RABID_THISTLE_BEAR);
- me->DespawnOrUnsummon(240000);
+ me->DespawnOrUnsummon(240s);
}
}
}
@@ -552,7 +555,7 @@ public:
}
}
- void SetGUID(ObjectGuid /*guid*/, int32 type) override
+ void SetGUID(ObjectGuid const& /*guid*/, int32 type) override
{
if (type == GUID_SCRIPT_INVOKER && _scriptRunning == false)
{
diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp
index 396ee22955..3b65c2aa14 100644
--- a/src/server/scripts/Kalimdor/zone_desolace.cpp
+++ b/src/server/scripts/Kalimdor/zone_desolace.cpp
@@ -42,9 +42,6 @@ enum Caravan
MAX_CARAVAN_SUMMONS = 3,
- TIME_SHOP_STOP = 10 * MINUTE * IN_MILLISECONDS,
- TIME_HIRE_STOP = 4 * MINUTE * IN_MILLISECONDS,
-
// Ambush
NPC_KOLKAR_WAYLAYER = 12976,
NPC_KOLKAR_AMBUSHER = 12977,
@@ -53,6 +50,9 @@ enum Caravan
NPC_NETHER = 4684,
};
+constexpr Milliseconds TIME_SHOP_STOP = 600s;
+constexpr Milliseconds TIME_HIRE_STOP = 240s;
+
class npc_cork_gizelton : public CreatureScript
{
public:
@@ -129,7 +129,7 @@ public:
ImmuneFlagSet(false, _faction);
}
- void SetGUID(ObjectGuid playerGUID, int32 faction) override
+ void SetGUID(ObjectGuid const& playerGUID, int32 faction) override
{
_playerGUID = playerGUID;
_faction = faction;
@@ -264,14 +264,14 @@ public:
{
// Finished north path
case 52:
- me->SummonCreature(NPC_VENDOR_TRON, -694.61f, 1460.7f, 90.794f, 2.4f, TEMPSUMMON_TIMED_DESPAWN, TIME_SHOP_STOP + 15 * IN_MILLISECONDS);
+ me->SummonCreature(NPC_VENDOR_TRON, -694.61f, 1460.7f, 90.794f, 2.4f, TEMPSUMMON_TIMED_DESPAWN, 600000 + 15 * IN_MILLISECONDS);
SetEscortPaused(true);
events.ScheduleEvent(EVENT_RESUME_PATH, TIME_SHOP_STOP);
CheckCaravan();
break;
// Finished south path
case 193:
- me->SummonCreature(NPC_SUPER_SELLER, -1905.5f, 2463.3f, 61.52f, 5.87f, TEMPSUMMON_TIMED_DESPAWN, TIME_SHOP_STOP + 15 * IN_MILLISECONDS);
+ me->SummonCreature(NPC_SUPER_SELLER, -1905.5f, 2463.3f, 61.52f, 5.87f, TEMPSUMMON_TIMED_DESPAWN, 600000 + 15 * IN_MILLISECONDS);
SetEscortPaused(true);
events.ScheduleEvent(EVENT_RESUME_PATH, TIME_SHOP_STOP);
CheckCaravan();
@@ -396,7 +396,7 @@ public:
case EVENT_RESTART_ESCORT:
CheckCaravan();
SetDespawnAtEnd(false);
- Start(true, true, ObjectGuid::Empty, 0, false, false, true);
+ Start(true, ObjectGuid::Empty, 0, false, false, true);
break;
}
@@ -474,7 +474,7 @@ public:
else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP)
{
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- me->DespawnOrUnsummon(60000);
+ me->DespawnOrUnsummon(60s);
}
}
};
diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp
index 2bf7903188..a91261929b 100644
--- a/src/server/scripts/Kalimdor/zone_moonglade.cpp
+++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp
@@ -384,7 +384,8 @@ public:
AddWaypoint(i, Clintar_spirit_WP[i][0], Clintar_spirit_WP[i][1], Clintar_spirit_WP[i][2], (uint32)Clintar_spirit_WP[i][4]);
}
PlayerGUID = player->GetGUID();
- Start(true, false, PlayerGUID);
+ me->SetWalk(true);
+ Start(true, PlayerGUID);
}
return;
}
diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp
index 9a06054bbc..7bfd005ebd 100644
--- a/src/server/scripts/Kalimdor/zone_silithus.cpp
+++ b/src/server/scripts/Kalimdor/zone_silithus.cpp
@@ -1145,7 +1145,7 @@ public:
}
}
- me->DespawnOrUnsummon(5000ms, respawnTimer); // Despawn in 5 Seconds for respawnTimer value
+ me->DespawnOrUnsummon(5s, respawnTimer); // Despawn in 5 Seconds for respawnTimer value
me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
CloseGossipMenuFor(player);
return false;
@@ -1174,7 +1174,7 @@ public:
summons->SetLootRecipient(player);
summons->CastSpell(summons, SPELL_SPAWN_IN, false);
summons->AI()->Talk(SAY_ON_SPAWN_IN, player);
- summons->m_Events.AddEvent(new DelayedWindstoneSummonEvent(summons, player->GetGUID()), summons->m_Events.CalculateTime(5200));
+ summons->m_Events.AddEventAtOffset(new DelayedWindstoneSummonEvent(summons, player->GetGUID()), 5200ms);
_creatureGuid = summons->GetGUID();
}
}
diff --git a/src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp b/src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
index 6f8323126f..238c12efef 100644
--- a/src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
+++ b/src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
@@ -137,7 +137,10 @@ public:
if (quest->GetQuestId() == QUEST_PROTECT_KAYA)
{
if (npc_escortAI* pEscortAI = CAST_AI(npc_kaya_flathoof::npc_kaya_flathoofAI, creature->AI()))
- pEscortAI->Start(true, false, player->GetGUID());
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(true, player->GetGUID());
+ }
creature->AI()->Talk(SAY_START);
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp
index 88c7eb7e4d..ec4912fb63 100644
--- a/src/server/scripts/Kalimdor/zone_tanaris.cpp
+++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp
@@ -260,7 +260,8 @@ public:
float Radius = 10.0f;
if (me->IsWithinDistInMap(who, Radius))
{
- Start(false, false, who->GetGUID());
+ me->SetWalk(true);
+ Start(false, who->GetGUID());
}
}
}
diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
index 2624709fc6..9ace889ba5 100644
--- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp
+++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
@@ -55,7 +55,10 @@ public:
creature->AI()->Talk(SAY_GIL_START, player);
if (npc_giltharesAI* pEscortAI = CAST_AI(npc_gilthares::npc_giltharesAI, creature->AI()))
- pEscortAI->Start(false, false, player->GetGUID(), quest);
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID(), quest);
+ }
}
return true;
}
@@ -300,11 +303,11 @@ public:
for (uint8 i = 0; i < 6; ++i) // unsummon challengers
if (AffrayChallenger[i])
if (Creature* creature = ObjectAccessor::GetCreature((*me), AffrayChallenger[i]))
- creature->DespawnOrUnsummon(1);
+ creature->DespawnOrUnsummon(1ms);
if (BigWill) // unsummon bigWill
if (Creature* creature = ObjectAccessor::GetCreature((*me), BigWill))
- creature->DespawnOrUnsummon(1);
+ creature->DespawnOrUnsummon(1ms);
}
void MoveInLineOfSight(Unit* who) override
@@ -499,7 +502,7 @@ public:
Talk(SAY_STARTUP1);
break;
case 9:
- SetRun(false);
+ me->SetWalk(true);
break;
case 17:
if (Creature* temp = me->SummonCreature(NPC_MERCENARY, 1128.489f, -3037.611f, 92.701f, 1.472f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000))
@@ -528,7 +531,7 @@ public:
break;
case 18:
Talk(SAY_PROGRESS_1, player);
- SetRun();
+ me->SetWalk(false);
break;
}
}
@@ -594,7 +597,10 @@ public:
creature->SetFaction(FACTION_RATCHET);
creature->AI()->Talk(SAY_START);
if (npc_escortAI* pEscortAI = CAST_AI(npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI, creature->AI()))
- pEscortAI->Start(true, false, player->GetGUID());
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(true, player->GetGUID());
+ }
}
return true;
}
diff --git a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp
index 2a80cd90ee..ee2efa9b60 100644
--- a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp
+++ b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp
@@ -66,7 +66,10 @@ public:
creature->SetFaction(FACTION_ESCORTEE_H_NEUTRAL_ACTIVE); //guessed
if (npc_lakota_windsongAI* pEscortAI = CAST_AI(npc_lakota_windsong::npc_lakota_windsongAI, creature->AI()))
- pEscortAI->Start(false, false, player->GetGUID(), quest);
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID(), quest);
+ }
}
return true;
}
@@ -148,7 +151,10 @@ public:
creature->SetFaction(FACTION_ESCORTEE_H_NEUTRAL_ACTIVE); // guessed
if (npc_paoka_swiftmountainAI* pEscortAI = CAST_AI(npc_paoka_swiftmountain::npc_paoka_swiftmountainAI, creature->AI()))
- pEscortAI->Start(false, false, player->GetGUID(), quest);
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID(), quest);
+ }
}
return true;
}
diff --git a/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp b/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp
index 131baf8686..83484446aa 100644
--- a/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp
+++ b/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp
@@ -48,7 +48,8 @@ public:
{
if (quest->GetQuestId() == QUEST_CHASING_AME)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(false, false, player->GetGUID());
+ creature->SetWalk(true);
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(false, player->GetGUID());
creature->AI()->Talk(SAY_READY, player);
creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
// Change faction so mobs attack
diff --git a/src/server/scripts/Kalimdor/zone_winterspring.cpp b/src/server/scripts/Kalimdor/zone_winterspring.cpp
index d1e516fe08..26d9d5737a 100644
--- a/src/server/scripts/Kalimdor/zone_winterspring.cpp
+++ b/src/server/scripts/Kalimdor/zone_winterspring.cpp
@@ -286,7 +286,10 @@ public:
creature->SetFaction(FACTION_ESCORT_A_NEUTRAL_PASSIVE);
if (npc_ranshallaAI* escortAI = dynamic_cast<npc_ranshallaAI*>(creature->AI()))
- escortAI->Start(false, false, player->GetGUID(), quest);
+ {
+ creature->SetWalk(true);
+ escortAI->Start(false, player->GetGUID(), quest);
+ }
return true;
}
@@ -486,7 +489,7 @@ public:
if (Creature* guard = me->GetMap()->GetCreature(_guardEluneGUID))
{
guard->GetMotionMaster()->MovePoint(0, wingThicketLocations[2].m_positionX, wingThicketLocations[2].m_positionY, wingThicketLocations[2].m_positionZ);
- guard->DespawnOrUnsummon(4000);
+ guard->DespawnOrUnsummon(4s);
}
break;
case SAY_PRIESTESS_ALTAR_20:
@@ -494,7 +497,7 @@ public:
if (Creature* priestess = me->GetMap()->GetCreature(_firstPriestessGUID))
{
priestess->GetMotionMaster()->MovePoint(0, wingThicketLocations[0].m_positionX, wingThicketLocations[0].m_positionY, wingThicketLocations[0].m_positionZ);
- priestess->DespawnOrUnsummon(4000);
+ priestess->DespawnOrUnsummon(4s);
}
break;
case SAY_PRIESTESS_ALTAR_21:
@@ -502,7 +505,7 @@ public:
if (Creature* priestess = me->GetMap()->GetCreature(_secondPriestessGUID))
{
priestess->GetMotionMaster()->MovePoint(0, wingThicketLocations[1].m_positionX, wingThicketLocations[1].m_positionY, wingThicketLocations[1].m_positionZ);
- priestess->DespawnOrUnsummon(4000);
+ priestess->DespawnOrUnsummon(4s);
}
break;
case DATA_EVENT_END:
@@ -526,7 +529,7 @@ public:
player->GroupEventHappens(QUEST_GUARDIANS_ALTAR, me);
Talk(SAY_RANSHALLA_END_2, player);
}
- me->DespawnOrUnsummon(4000);
+ me->DespawnOrUnsummon(4s);
break;
}
}
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
index 39f15f6ab6..90222743e4 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
@@ -28,7 +28,7 @@ enum ANData
{
DATA_KRIKTHIR = 0,
DATA_HADRONOX = 1,
- DATA_ANUBARAK_EVENT = 2,
+ DATA_ANUBARAK = 2,
MAX_ENCOUNTERS = 3
};
@@ -41,6 +41,8 @@ enum ANIds
NPC_SKITTERING_INFECTIOR = 28736,
NPC_KRIKTHIR_THE_GATEWATCHER = 28684,
NPC_HADRONOX = 28921,
+ NPC_ANUBARAK = 29120,
+
NPC_ANUB_AR_CHAMPION = 29062,
NPC_ANUB_AR_NECROMANCER = 29063,
NPC_ANUB_AR_CRYPTFIEND = 29064,
@@ -59,4 +61,6 @@ inline AI* GetAzjolNerubAI(T* obj)
return GetInstanceAI<AI>(obj, AzjolNerubScriptName);
}
+#define RegisterAzjolNerubCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetAzjolNerubAI)
+
#endif
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
index 3cdb5967fd..f840eb5342 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
@@ -55,223 +55,346 @@ enum Yells
enum Misc
{
ACHIEV_TIMED_START_EVENT = 20381,
+};
- EVENT_CARRION_BEETELS = 1,
+enum Events
+{
+ EVENT_CARRION_BEETLES = 1,
EVENT_LEECHING_SWARM = 2,
EVENT_IMPALE = 3,
EVENT_POUND = 4,
- EVENT_CLOSE_DOORS = 5,
- EVENT_EMERGE = 6,
- EVENT_SUMMON_VENOMANCER = 7,
- EVENT_SUMMON_DARTER = 8,
- EVENT_SUMMON_GUARDIAN = 9,
- EVENT_SUMMON_ASSASSINS = 10,
- EVENT_ENABLE_ROTATE = 11,
+ EVENT_ENABLE_ROTATE = 5,
+ EVENT_CLOSE_DOORS = 6,
+ EVENT_EMERGE = 7,
+ EVENT_SUMMON_GUARDIAN = 8,
+ EVENT_SUMMON_VENOMANCER = 9,
+ EVENT_SUMMON_DARTER = 10,
+ EVENT_SUMMON_ASSASSINS = 11,
EVENT_KILL_TALK = 12
};
-enum ANAnubarakNpcs
+enum CreatureIds
{
+ NPC_WORLD_TRIGGER = 22515,
NPC_ANUBAR_GUARDIAN = 29216,
- NPC_ANUBAR_VENOMANCER = 29217
+ NPC_ANUBAR_VENOMANCER = 29217,
+};
+
+enum Phases : uint8
+{
+ PHASE_EMERGED = 1,
+ PHASE_SUBMERGED
+};
+
+enum SubPhase : uint8
+{
+ SUBMERGE_NONE = 0,
+ SUBMERGE_75 = 1,
+ SUBMERGE_50 = 2,
+ SUBMERGE_25 = 3,
};
-class boss_anub_arak : public CreatureScript
+enum SummonGroups
{
- public:
- boss_anub_arak() : CreatureScript("boss_anub_arak") { }
+ SUMMON_GROUP_WORLD_TRIGGER_GUARDIAN = 1,
+ SUMMON_GROUP_WORLD_TRIGGER_BALCONY = 2
+};
- struct boss_anub_arakAI : public BossAI
+struct boss_anub_arak : public BossAI
+{
+ explicit boss_anub_arak(Creature* creature) : BossAI(creature, DATA_ANUBARAK), _intro(false),
+ _submergePhase(SUBMERGE_NONE), _remainingLargeSummonsBeforeEmerge(0), _balconySummons(me)
+ {
+ me->m_SightDistance = 120.0f;
+ }
+
+ void Reset() override
+ {
+ BossAI::Reset();
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
+ _remainingLargeSummonsBeforeEmerge = 0;
+ _submergePhase = SUBMERGE_NONE;
+
+ ScheduleHealthCheckEvent({ 75, 50, 25 }, [&]{
+ events.Reset();
+ Talk(SAY_SUBMERGE);
+ DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS, true);
+ DoCastSelf(SPELL_SUBMERGE, false);
+ }, false);
+ }
+
+ void SpellHitTarget(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Id == SPELL_SUBMERGE)
{
- boss_anub_arakAI(Creature* creature) : BossAI(creature, DATA_ANUBARAK_EVENT)
- {
- me->m_SightDistance = 120.0f;
- _intro = false;
- _summonedMinions = false;
- }
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ me->RemoveAurasDueToSpell(SPELL_LEECHING_SWARM);
+ DoCastSelf(SPELL_IMPALE_PERIODIC, true);
- void EnterEvadeMode(EvadeReason why) override
- {
- me->DisableRotate(false);
- BossAI::EnterEvadeMode(why);
- }
+ ++_submergePhase;
+ events.Reset();
+ ScheduleSubmerged();
+ }
+ }
- void MoveInLineOfSight(Unit* who) override
- {
- if (!_intro && who->IsPlayer())
- {
- _intro = true;
- Talk(SAY_INTRO);
- }
- BossAI::MoveInLineOfSight(who);
- }
+ void ScheduleEmerged()
+ {
+ events.SetPhase(PHASE_EMERGED);
+ events.ScheduleEvent(EVENT_CARRION_BEETLES, 6500ms, 0, PHASE_EMERGED);
+ events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s, 0, PHASE_EMERGED);
+ events.ScheduleEvent(EVENT_POUND, 15s, 0, PHASE_EMERGED);
+ };
- void JustDied(Unit* killer) override
- {
- Talk(SAY_DEATH);
- BossAI::JustDied(killer);
- }
+ void ScheduleSubmerged()
+ {
+ events.SetPhase(PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_EMERGE, 60s, 0, PHASE_SUBMERGED);
- void KilledUnit(Unit* /*victim*/) override
- {
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
- {
- Talk(SAY_SLAY);
- events.ScheduleEvent(EVENT_KILL_TALK, 6s);
- }
- }
+ switch (_submergePhase)
+ {
+ case SUBMERGE_75:
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 4s, 0, PHASE_SUBMERGED);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 7s, 0, PHASE_SUBMERGED);
+
+ _remainingLargeSummonsBeforeEmerge = IsHeroic() ? 2 : 1;
+
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 4s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 24s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 44s, 0, PHASE_SUBMERGED);
+ break;
+ case SUBMERGE_50:
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 4s, 0, PHASE_SUBMERGED);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 7s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_VENOMANCER, 24s, 0, PHASE_SUBMERGED);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_VENOMANCER, 29s, 0, PHASE_SUBMERGED);
+
+ _remainingLargeSummonsBeforeEmerge = IsHeroic() ? 4 : 2;
+
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 4s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 24s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 44s, 0, PHASE_SUBMERGED);
+ break;
+ case SUBMERGE_25:
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 4s, 0, PHASE_SUBMERGED);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 7s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_VENOMANCER, 24s, 0, PHASE_SUBMERGED);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SUMMON_VENOMANCER, 29s, 0, PHASE_SUBMERGED);
+
+ _remainingLargeSummonsBeforeEmerge = IsHeroic() ? 4 : 2;
+
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 4s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_DARTER, 4s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_DARTER, 12s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 24s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_DARTER, 26s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_DARTER, 32s, 0, PHASE_SUBMERGED);
+
+ events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 44s, 0, PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_SUMMON_DARTER, 45s, 0, PHASE_SUBMERGED);
+ break;
+ default:
+ break;
+ }
+ }
- void JustSummoned(Creature* summon) override
- {
- summons.Summon(summon);
- if (!summon->IsTrigger())
- summon->SetInCombatWithZone();
- }
+ void JustEngagedWith(Unit* /*who*/) override
+ {
+ Talk(SAY_AGGRO);
+ instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
- void Reset() override
- {
- BossAI::Reset();
- _summonedMinions = false;
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
- instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
-
- ScheduleHealthCheckEvent({ 75, 50, 25 }, [&]{
- Talk(SAY_SUBMERGE);
- _summonedMinions = false;
- DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS, true);
- DoCastSelf(SPELL_SUBMERGE, false);
-
- me->m_Events.AddEventAtOffset([this] {
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- DoCastSelf(SPELL_IMPALE_PERIODIC, true);
- }, 2s);
-
- events.Reset();
- events.ScheduleEvent(EVENT_EMERGE, 60s);
- events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 2s);
- events.ScheduleEvent(EVENT_SUMMON_GUARDIAN, 4s);
- events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 15s);
- events.ScheduleEvent(EVENT_SUMMON_VENOMANCER, 20s);
- events.ScheduleEvent(EVENT_SUMMON_DARTER, 30s);
- events.ScheduleEvent(EVENT_SUMMON_ASSASSINS, 35s);
- }, false);
- }
+ events.SetPhase(PHASE_EMERGED);
+ events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s, 0, PHASE_EMERGED);
+ ScheduleEmerged();
- void SummonedCreatureDies(Creature* /*summon*/, Unit* /*killer*/) override
- {
- if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
- return;
+ // set up world triggers
+ std::list<TempSummon*> summoned;
+ me->SummonCreatureGroup(SUMMON_GROUP_WORLD_TRIGGER_GUARDIAN, &summoned);
+ if (summoned.empty())
+ {
+ EnterEvadeMode(EVADE_REASON_OTHER);
+ return;
+ }
+ TempSummon* guardianTrigger = summoned.front();
+ _guardianTriggerGUID = guardianTrigger->GetGUID();
- if (_summonedMinions && !summons.IsAnyCreatureWithEntryAlive(NPC_ANUBAR_GUARDIAN) && !summons.IsAnyCreatureWithEntryAlive(NPC_ANUBAR_VENOMANCER))
- {
- events.Reset();
- events.ScheduleEvent(EVENT_EMERGE, 5s);
- }
- }
+ summoned.clear();
+ _balconySummons.clear();
+ me->SummonCreatureGroup(SUMMON_GROUP_WORLD_TRIGGER_BALCONY, &summoned);
+ if (summoned.empty())
+ {
+ EnterEvadeMode(EVADE_REASON_OTHER);
+ return;
+ }
+ for (auto const& summon : summoned)
+ _balconySummons.Summon(summon);
+ }
- void JustEngagedWith(Unit* ) override
- {
- Talk(SAY_AGGRO);
- instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
+ void EnterEvadeMode(EvadeReason why) override
+ {
+ me->DisableRotate(false);
+ BossAI::EnterEvadeMode(why);
+ summons.DespawnAll();
+ }
- events.ScheduleEvent(EVENT_CARRION_BEETELS, 6500ms);
- events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s);
- events.ScheduleEvent(EVENT_POUND, 15s);
- events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s);
- }
+ void MoveInLineOfSight(Unit* who) override
+ {
+ if (!_intro && who->IsPlayer())
+ {
+ _intro = true;
+ Talk(SAY_INTRO);
+ }
+ BossAI::MoveInLineOfSight(who);
+ }
+
+ void JustDied(Unit* killer) override
+ {
+ Talk(SAY_DEATH);
+ BossAI::JustDied(killer);
+ }
+
+ void KilledUnit(Unit* /*victim*/) override
+ {
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
+ {
+ Talk(SAY_SLAY);
+ events.ScheduleEvent(EVENT_KILL_TALK, 6s);
+ }
+ }
- void SummonHelpers(float x, float y, float z, uint32 spellId)
+ void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override
+ {
+ if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
+ return;
+
+ switch (summon->GetEntry())
+ {
+ case NPC_ANUBAR_GUARDIAN:
+ case NPC_ANUBAR_VENOMANCER:
{
- SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
- me->SummonCreature(spellInfo->Effects[EFFECT_0].MiscValue, x, y, z, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
+ --_remainingLargeSummonsBeforeEmerge;
+ if (_remainingLargeSummonsBeforeEmerge == 0)
+ {
+ events.Reset();
+ events.SetPhase(PHASE_SUBMERGED);
+ events.ScheduleEvent(EVENT_EMERGE, 5s, 0, PHASE_SUBMERGED);
+ }
+ break;
}
+ default:
+ break;
+ }
+ }
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ void SummonedCreatureEvade(Creature* /*summon*/) override
+ {
+ EnterEvadeMode(EVADE_REASON_OTHER);
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- events.Update(diff);
- scheduler.Update(diff);
+ events.Update(diff);
+ scheduler.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- switch (events.ExecuteEvent())
+ switch (events.ExecuteEvent())
+ {
+ case EVENT_CLOSE_DOORS:
+ BossAI::_JustEngagedWith();
+ break;
+ case EVENT_CARRION_BEETLES:
+ DoCastSelf(SPELL_CARRION_BEETLES);
+ events.ScheduleEvent(EVENT_CARRION_BEETLES, 25s, 0, PHASE_EMERGED);
+ break;
+ case EVENT_LEECHING_SWARM:
+ Talk(SAY_LOCUST);
+ DoCastSelf(SPELL_LEECHING_SWARM);
+ events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s, 0, PHASE_EMERGED);
+ break;
+ case EVENT_POUND:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 10.0f))
{
- case EVENT_CLOSE_DOORS:
- _JustEngagedWith();
- break;
- case EVENT_CARRION_BEETELS:
- me->CastSpell(me, SPELL_CARRION_BEETLES, false);
- events.ScheduleEvent(EVENT_CARRION_BEETELS, 25s);
- break;
- case EVENT_LEECHING_SWARM:
- Talk(SAY_LOCUST);
- me->CastSpell(me, SPELL_LEECHING_SWARM, false);
- events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s);
- break;
- case EVENT_POUND:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 10.0f))
- {
- me->CastSpell(me, SPELL_SELF_ROOT, true);
- me->DisableRotate(true);
- me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms);
- me->CastSpell(target, SPELL_POUND, false);
- }
- events.ScheduleEvent(EVENT_POUND, 18s);
- break;
- case EVENT_ENABLE_ROTATE:
- me->RemoveAurasDueToSpell(SPELL_SELF_ROOT);
- me->DisableRotate(false);
- break;
- case EVENT_EMERGE:
- me->CastSpell(me, SPELL_EMERGE, true);
- me->RemoveAura(SPELL_SUBMERGE);
- me->RemoveAura(SPELL_IMPALE_PERIODIC);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
- events.ScheduleEvent(EVENT_CARRION_BEETELS, 6500ms);
- events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s);
- events.ScheduleEvent(EVENT_POUND, 15s);
- break;
- case EVENT_SUMMON_ASSASSINS:
- SummonHelpers(509.32f, 247.42f, 239.48f, SPELL_SUMMON_ASSASSIN);
- SummonHelpers(589.51f, 240.19f, 236.0f, SPELL_SUMMON_ASSASSIN);
- break;
- case EVENT_SUMMON_DARTER:
- SummonHelpers(509.32f, 247.42f, 239.48f, SPELL_SUMMON_DARTER);
- SummonHelpers(589.51f, 240.19f, 236.0f, SPELL_SUMMON_DARTER);
- break;
- case EVENT_SUMMON_GUARDIAN:
- SummonHelpers(550.34f, 316.00f, 234.30f, SPELL_SUMMON_GUARDIAN);
- break;
- case EVENT_SUMMON_VENOMANCER:
- _summonedMinions = true;
- SummonHelpers(550.34f, 316.00f, 234.30f, SPELL_SUMMON_VENOMANCER);
- break;
+ DoCastSelf(SPELL_SELF_ROOT, true);
+ me->DisableRotate(true);
+ me->SendMovementFlagUpdate();
+ events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms, 0, PHASE_EMERGED);
+ DoCast(target, SPELL_POUND);
}
+ events.ScheduleEvent(EVENT_POUND, 18s, 0, PHASE_EMERGED);
+ break;
+ case EVENT_ENABLE_ROTATE:
+ me->RemoveAurasDueToSpell(SPELL_SELF_ROOT);
+ me->DisableRotate(false);
+ break;
+ case EVENT_EMERGE:
+ me->RemoveAurasDueToSpell(SPELL_SUBMERGE);
+ me->RemoveAurasDueToSpell(SPELL_IMPALE_PERIODIC);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ DoCastSelf(SPELL_EMERGE);
+ ScheduleEmerged();
+ break;
+ case EVENT_SUMMON_GUARDIAN:
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, _guardianTriggerGUID))
+ trigger->CastSpell(trigger, SPELL_SUMMON_GUARDIAN, true, nullptr, nullptr, me->GetGUID());
+ break;
+ case EVENT_SUMMON_VENOMANCER:
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, _guardianTriggerGUID))
+ trigger->CastSpell(trigger, SPELL_SUMMON_VENOMANCER, true, nullptr, nullptr, me->GetGUID());
+ break;
+ case EVENT_SUMMON_DARTER:
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, Acore::Containers::SelectRandomContainerElement(_balconySummons)))
+ trigger->CastSpell(trigger, SPELL_SUMMON_DARTER, true, nullptr, nullptr, me->GetGUID());
+ break;
+ case EVENT_SUMMON_ASSASSINS:
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, Acore::Containers::SelectRandomContainerElement(_balconySummons)))
+ trigger->CastSpell(trigger, SPELL_SUMMON_ASSASSIN, true, nullptr, nullptr, me->GetGUID());
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, Acore::Containers::SelectRandomContainerElement(_balconySummons)))
+ trigger->CastSpell(trigger, SPELL_SUMMON_ASSASSIN, true, nullptr, nullptr, me->GetGUID());
+ break;
+ default:
+ break;
+ }
- if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
- DoMeleeAttackIfReady();
- }
+ if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
+ DoMeleeAttackIfReady();
+ }
- private:
- bool _intro;
- bool _summonedMinions;
- };
+ void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override
+ {
+ if (me->HasAura(SPELL_SUBMERGE) && damage >= me->GetHealth())
+ damage = me->GetHealth() - 1;
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetAzjolNerubAI<boss_anub_arakAI>(creature);
- }
+ BossAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask);
+ }
+
+ private:
+ bool _intro;
+ uint8 _submergePhase;
+ uint8 _remainingLargeSummonsBeforeEmerge;
+ ObjectGuid _guardianTriggerGUID;
+ SummonList _balconySummons;
};
-class spell_azjol_nerub_carrion_beetels : public AuraScript
+class spell_azjol_nerub_carrion_beetles : public AuraScript
{
- PrepareAuraScript(spell_azjol_nerub_carrion_beetels)
+ PrepareAuraScript(spell_azjol_nerub_carrion_beetles)
- void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
+ void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
{
// Xinef: 2 each second
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_SUMMON_CARRION_BEETLES, true);
@@ -280,7 +403,7 @@ class spell_azjol_nerub_carrion_beetels : public AuraScript
void Register() override
{
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_azjol_nerub_carrion_beetels::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_azjol_nerub_carrion_beetles::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
@@ -288,7 +411,7 @@ class spell_azjol_nerub_pound : public SpellScript
{
PrepareSpellScript(spell_azjol_nerub_pound);
- void HandleApplyAura(SpellEffIndex /*effIndex*/)
+ void HandleApplyAura(SpellEffIndex /*effIndex*/)
{
if (Unit* unitTarget = GetHitUnit())
GetCaster()->CastSpell(unitTarget, SPELL_POUND_DAMAGE, true);
@@ -320,8 +443,8 @@ class spell_azjol_nerub_impale_summon : public SpellScript
void AddSC_boss_anub_arak()
{
- new boss_anub_arak();
- RegisterSpellScript(spell_azjol_nerub_carrion_beetels);
+ RegisterAzjolNerubCreatureAI(boss_anub_arak);
+ RegisterSpellScript(spell_azjol_nerub_carrion_beetles);
RegisterSpellScript(spell_azjol_nerub_pound);
RegisterSpellScript(spell_azjol_nerub_impale_summon);
}
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
index f3f9396ba0..37e2542a24 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
@@ -111,7 +111,7 @@ public:
uint32 GetData(uint32 data) const override
{
if (data == me->GetEntry())
- return !me->isActiveObject() || events.GetNextEventTime(EVENT_HADRONOX_MOVE4) != 0;
+ return !me->isActiveObject() || events.HasTimeUntilEvent(EVENT_HADRONOX_MOVE4) ? 1 : 0;
return 0;
}
@@ -121,11 +121,11 @@ public:
// Xinef: cannot use pathfinding...
if (summon->GetDistance(477.0f, 618.0f, 771.0f) < 5.0f)
- summon->GetMotionMaster()->MovePath(3000012, false);
+ summon->GetMotionMaster()->MoveWaypoint(3000012, false);
else if (summon->GetDistance(583.0f, 617.0f, 771.0f) < 5.0f)
- summon->GetMotionMaster()->MovePath(3000013, false);
+ summon->GetMotionMaster()->MoveWaypoint(3000013, false);
else if (summon->GetDistance(581.0f, 608.5f, 739.0f) < 5.0f)
- summon->GetMotionMaster()->MovePath(3000014, false);
+ summon->GetMotionMaster()->MoveWaypoint(3000014, false);
}
void KilledUnit(Unit* victim) override
@@ -258,7 +258,7 @@ public:
{
if (summon->GetEntry() != me->GetEntry())
{
- summon->GetMotionMaster()->MovePoint(0, *me, false);
+ summon->GetMotionMaster()->MovePoint(0, *me, FORCED_MOVEMENT_NONE, 0.f, false);
summon->GetMotionMaster()->MoveFollow(me, 0.1f, 0.0f + M_PI * 0.3f * summons.size());
}
summons.Summon(summon);
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
index 9d6616db97..ef6372c788 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
@@ -25,17 +25,18 @@
DoorData const doorData[] =
{
- { GO_KRIKTHIR_DOORS, DATA_KRIKTHIR, DOOR_TYPE_PASSAGE },
- { GO_ANUBARAK_DOORS1, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
- { GO_ANUBARAK_DOORS2, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
- { GO_ANUBARAK_DOORS3, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
- { 0, 0, DOOR_TYPE_ROOM }
+ { GO_KRIKTHIR_DOORS, DATA_KRIKTHIR, DOOR_TYPE_PASSAGE },
+ { GO_ANUBARAK_DOORS1, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { GO_ANUBARAK_DOORS2, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { GO_ANUBARAK_DOORS3, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { 0, 0, DOOR_TYPE_ROOM }
};
ObjectData const creatureData[] =
{
{ NPC_KRIKTHIR_THE_GATEWATCHER, DATA_KRIKTHIR },
{ NPC_HADRONOX, DATA_HADRONOX },
+ { NPC_ANUBARAK, DATA_ANUBARAK },
{ 0, 0 }
};
@@ -53,7 +54,7 @@ BossBoundaryData const boundaries =
{
{ DATA_KRIKTHIR, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) },
{ DATA_HADRONOX, new ZRangeBoundary(666.0f, 776.0f) },
- { DATA_ANUBARAK_EVENT, new CircleBoundary(Position(550.6178f, 253.5917f), 26.0f) }
+ { DATA_ANUBARAK, new CircleBoundary(Position(550.6178f, 253.5917f), 32.0f) }
};
class instance_azjol_nerub : public InstanceMapScript
diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp
index fa1a998b0d..e1b0018ef7 100644
--- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp
@@ -77,51 +77,52 @@ enum Misc
DATA_SET_INSANITY_PHASE = 1,
};
-enum Events
-{
- EVENT_HERALD_MIND_FLAY = 1,
- EVENT_HERALD_SHADOW,
- EVENT_HERALD_SHIVER,
-};
-
const std::array<uint32, MAX_INSANITY_TARGETS> InsanitySpells = { SPELL_INSANITY_PHASING_1, SPELL_INSANITY_PHASING_2, SPELL_INSANITY_PHASING_3, SPELL_INSANITY_PHASING_4, SPELL_INSANITY_PHASING_5 };
struct boss_volazj : public BossAI
{
boss_volazj(Creature* pCreature) : BossAI(pCreature, DATA_HERALD_VOLAZJ),
- insanityTimes(0),
insanityPhase(false)
{ }
- void InitializeAI() override
- {
- BossAI::InitializeAI();
- // Visible for all players in insanity
- me->SetPhaseMask((1 | 16 | 32 | 64 | 128 | 256), true);
- }
-
void Reset() override
{
_Reset();
- insanityTimes = 0;
insanityPhase = false;
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_STUNNED);
ResetPlayersPhaseMask();
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
+ me->SetPhaseMask((1 | 16 | 32 | 64 | 128 | 256), true);
+
+ ScheduleHealthCheckEvent({ 66, 33 }, [&]{
+ scheduler.CancelAll();
+ DoCastSelf(SPELL_INSANITY);
+ }, false);
+ }
+
+ void ScheduleTasks() override
+ {
+ ScheduleTimedEvent(8s, [&] {
+ DoCastVictim(SPELL_MIND_FLAY);
+ }, 20s);
+
+ ScheduleTimedEvent(5s, [&] {
+ DoCastVictim(SPELL_SHADOW_BOLT_VOLLEY);
+ }, 5s);
+
+ ScheduleTimedEvent(15s, [&] {
+ DoCastRandomTarget(SPELL_SHIVER);
+ }, 15s);
}
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
- events.ScheduleEvent(EVENT_HERALD_MIND_FLAY, 8s);
- events.ScheduleEvent(EVENT_HERALD_SHADOW, 5s);
- events.ScheduleEvent(EVENT_HERALD_SHIVER, 15s);
Talk(SAY_AGGRO);
DoCastSelf(SPELL_WHISPER_AGGRO);
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
- me->SetInCombatWithZone();
}
void JustDied(Unit* /*killer*/) override
@@ -184,36 +185,13 @@ struct boss_volazj : public BossAI
}
}
- void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override
- {
- // Do not perform insanity recast if boss is casting Insanity already
- if (me->FindCurrentSpellBySpellId(SPELL_INSANITY))
- {
- return;
- }
-
- // First insanity
- if (insanityTimes == 0 && me->HealthBelowPctDamaged(66, damage))
- {
- DoCastSelf(SPELL_INSANITY, false);
- ++insanityTimes;
- }
- // Second insanity
- else if (insanityTimes == 1 && me->HealthBelowPctDamaged(33, damage))
- {
- me->InterruptNonMeleeSpells(false);
- DoCastSelf(SPELL_INSANITY, false);
- ++insanityTimes;
- }
- }
-
void UpdateAI(uint32 diff) override
{
//Return since we have no target
if (!UpdateVictim())
- {
return;
- }
+
+ scheduler.Update(diff);
if (insanityPhase)
{
@@ -226,53 +204,13 @@ struct boss_volazj : public BossAI
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveAurasDueToSpell(INSANITY_VISUAL);
- }
-
- events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- {
- return;
- }
-
- while (uint32 const eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_HERALD_MIND_FLAY:
- {
- DoCastVictim(SPELL_MIND_FLAY, false);
- events.Repeat(20s);
- break;
- }
- case EVENT_HERALD_SHADOW:
- {
- DoCastVictim(SPELL_SHADOW_BOLT_VOLLEY, false);
- events.Repeat(5s);
- break;
- }
- case EVENT_HERALD_SHIVER:
- {
- if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
- {
- DoCast(pTarget, SPELL_SHIVER, false);
- }
-
- events.Repeat(15s);
- break;
- }
- }
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- {
- return;
- }
+ ScheduleTasks();
}
DoMeleeAttackIfReady();
}
private:
- uint8 insanityTimes;
bool insanityPhase; // Indicates if boss enter to insanity phase
uint32 GetPlrInsanityAuraId(uint32 phaseMask) const
@@ -312,6 +250,7 @@ private:
bool CheckPhaseMinions()
{
summons.RemoveNotExisting();
+
if (summons.empty())
{
ResetPlayersPhaseMask();
diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp
index 574db03388..e5444781df 100644
--- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp
@@ -54,12 +54,9 @@ enum Spells
// FIGHT
SPELL_GIFT_OF_THE_HERALD = 56219,
- SPELL_CYCLONE_STRIKE = 56855, // Self
- SPELL_CYCLONE_STRIKE_H = 60030,
- SPELL_LIGHTNING_BOLT = 56891, // 40Y
- SPELL_LIGHTNING_BOLT_H = 60032, // 40Y
- SPELL_THUNDERSHOCK = 56926, // 30Y
- SPELL_THUNDERSHOCK_H = 60029 // 30Y
+ SPELL_CYCLONE_STRIKE = 56855,
+ SPELL_LIGHTNING_BOLT = 56891,
+ SPELL_THUNDERSHOCK = 56926,
};
enum Events
@@ -173,7 +170,7 @@ struct boss_jedoga_shadowseeker : public BossAI
me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
me->SetDisableGravity(true);
me->SetHover(true);
- me->GetMotionMaster()->MovePoint(POINT_INITIAL, JedogaPosition[0], false);
+ me->GetMotionMaster()->MovePoint(POINT_INITIAL, JedogaPosition[0], FORCED_MOVEMENT_NONE, 0.f, false);
_Reset();
events.SetPhase(PHASE_NORMAL);
@@ -247,7 +244,7 @@ struct boss_jedoga_shadowseeker : public BossAI
DespawnOOCSummons();
DoCastSelf(SPELL_HOVER_FALL);
me->GetMotionMaster()->MoveIdle();
- me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], false);
+ me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], FORCED_MOVEMENT_NONE, 0.f, false);
if (!combatSummonsSummoned)
{
@@ -397,7 +394,7 @@ struct boss_jedoga_shadowseeker : public BossAI
volunteerWork = false;
me->GetMotionMaster()->Clear();
DoCastSelf(SPELL_HOVER_FALL);
- me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], false);
+ me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], FORCED_MOVEMENT_NONE, 0.f, false);
}
}
break;
@@ -461,7 +458,7 @@ struct boss_jedoga_shadowseeker : public BossAI
// Normal phase
case EVENT_JEDOGA_CYCLONE:
{
- DoCastSelf(DUNGEON_MODE(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
+ DoCastSelf(SPELL_CYCLONE_STRIKE, false);
events.Repeat(10s, 14s);
break;
}
@@ -469,7 +466,7 @@ struct boss_jedoga_shadowseeker : public BossAI
{
if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
- DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
+ DoCast(pTarget, SPELL_LIGHTNING_BOLT, false);
}
events.Repeat(11s, 15s);
break;
@@ -478,7 +475,7 @@ struct boss_jedoga_shadowseeker : public BossAI
{
if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
- DoCast(pTarget, DUNGEON_MODE(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
+ DoCast(pTarget, SPELL_THUNDERSHOCK, false);
}
events.Repeat(16s, 22s);
@@ -504,7 +501,7 @@ struct boss_jedoga_shadowseeker : public BossAI
summons.DespawnEntry(NPC_JEDOGA_CONTROLLER);
DoCastSelf(SPELL_HOVER_FALL);
me->GetMotionMaster()->Clear();
- me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], false);
+ me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], FORCED_MOVEMENT_NONE, 0.f, false);
break;
}
case EVENT_JEDGA_START_RITUAL:
@@ -663,7 +660,7 @@ struct npc_twilight_volunteer : public ScriptedAI
me->GetMotionMaster()->Clear();
me->SetHomePosition(JedogaPosition[2]);
me->SetWalk(true);
- me->GetMotionMaster()->MovePoint(POINT_RITUAL, JedogaPosition[2], false);
+ me->GetMotionMaster()->MovePoint(POINT_RITUAL, JedogaPosition[2], FORCED_MOVEMENT_NONE, 0.f, false);
if (Creature* jedoga = pInstance->GetCreature(DATA_JEDOGA_SHADOWSEEKER))
{
diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp
index de9d3e176e..46a330a74e 100644
--- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp
@@ -20,6 +20,7 @@
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "ahnkahet.h"
@@ -38,11 +39,10 @@ enum Spells
SPELL_BEAM_VISUAL = 60342,
SPELL_VANISH = 55964,
SPELL_SHADOWSTEP = 55966,
- SPELL_HOVER_FALL = 60425
+ SPELL_HOVER_FALL = 60425,
+ SPELL_EMBRACE_OF_THE_VAMPYR = 55959,
};
-#define SPELL_EMBRACE_OF_THE_VAMPYR DUNGEON_MODE(55959, 59513)
-
enum Spheres
{
NPC_FLAME_SPHERE_1 = 30106,
@@ -291,7 +291,7 @@ struct boss_taldaram : public BossAI
{
BossAI::DamageTaken(attacker, damage, damageType, school);
- if (me->FindCurrentSpellBySpellId(SPELL_EMBRACE_OF_THE_VAMPYR))
+ if (me->FindCurrentSpellBySpellId(sSpellMgr->GetSpellIdForDifficulty(SPELL_EMBRACE_OF_THE_VAMPYR, me)))
{
vanishDamage += damage;
if (vanishDamage >= DUNGEON_MODE<uint32>(MAX_EMBRACE_DMG, MAX_EMBRACE_DMG_H))
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
index e0c14e515f..8199369ad8 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
@@ -130,9 +130,9 @@ enum Misc
ACTION_DRAKE_DIED = 3,
// Movement points
- POINT_FINAL_TENEBRON = 8,
- POINT_FINAL_SHADRON = 4,
- POINT_FINAL_VESPERON = 4,
+ POINT_FINAL_TENEBRON = 9,
+ POINT_FINAL_SHADRON = 5,
+ POINT_FINAL_VESPERON = 5,
// Lava directions. Its used to identify to which side lava was moving by last time
LAVA_LEFT_SIDE = 0,
@@ -583,7 +583,7 @@ public:
}
}
- events.RepeatEvent((below11PctReached ? urand(1400, 2000) : urand(5000, 20000)));
+ events.Repeat((below11PctReached ? randtime(1400ms, 2s) : randtime(5s, 20s)));
break;
}
case EVENT_SARTHARION_BERSERK:
@@ -1071,7 +1071,7 @@ public:
Talk(SAY_TENEBRON_RESPOND);
me->SetCanFly(true);
me->SetSpeed(MOVE_FLIGHT, 3.0f);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
}
}
@@ -1086,7 +1086,7 @@ public:
Talk(SAY_TENEBRON_BREATH);
}
DoCastVictim(SPELL_SHADOW_BREATH, false);
- events.RepeatEvent(17500);
+ events.Repeat(17500ms);
break;
}
case EVENT_MINIBOSS_SHADOW_FISSURE:
@@ -1095,7 +1095,7 @@ public:
{
DoCast(target, SPELL_SHADOW_FISSURE, false);
}
- events.RepeatEvent(22500);
+ events.Repeat(22500ms);
break;
}
case EVENT_MINIBOSS_OPEN_PORTAL:
@@ -1254,7 +1254,7 @@ public:
Talk(SAY_SHADRON_RESPOND);
me->SetCanFly(true);
me->SetSpeed(MOVE_FLIGHT, 3.0f);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
}
}
@@ -1270,7 +1270,7 @@ public:
}
DoCastVictim(SPELL_SHADOW_BREATH, false);
- events.RepeatEvent(17500);
+ events.Repeat(17500ms);
break;
}
case EVENT_MINIBOSS_SHADOW_FISSURE:
@@ -1279,7 +1279,7 @@ public:
{
DoCast(target, SPELL_SHADOW_FISSURE, false);
}
- events.RepeatEvent(22500);
+ events.Repeat(22500ms);
break;
}
case EVENT_MINIBOSS_OPEN_PORTAL:
@@ -1370,7 +1370,7 @@ public:
Talk(SAY_SHADRON_RESPOND);
me->SetCanFly(true);
me->SetSpeed(MOVE_FLIGHT, 3.0f);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
}
}
@@ -1480,7 +1480,7 @@ public:
{
if (param == ACTION_SWITCH_PHASE)
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 1e693b33a5..6d18a16023 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -152,7 +152,7 @@ public:
if (action == ACTION_INTRO_BALTHARUS && !_introDone)
{
_introDone = true;
- me->m_Events.AddEvent(new DelayedTalk(me, SAY_BALTHARUS_INTRO), me->m_Events.CalculateTime(6000));
+ me->m_Events.AddEventAtOffset(new DelayedTalk(me, SAY_BALTHARUS_INTRO), 6s);
}
else if (action == ACTION_CLONE)
{
@@ -191,7 +191,7 @@ public:
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -204,7 +204,7 @@ public:
summon->SetHealth(me->GetHealth());
summon->CastSpell(summon, SPELL_SPAWN_EFFECT, true);
summon->SetReactState(REACT_PASSIVE);
- summon->m_Events.AddEvent(new RestoreFight(summon), summon->m_Events.CalculateTime(2000));
+ summon->m_Events.AddEventAtOffset(new RestoreFight(summon), 2s);
}
void UpdateAI(uint32 diff) override
@@ -379,7 +379,7 @@ public:
// Xinef: after soft reset npc is no longer present
if (me->GetInstanceScript()->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void DoAction(int32 action) override
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
index ac9a9d7343..1707433e6c 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
@@ -136,7 +136,7 @@ public:
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -210,7 +210,8 @@ public:
{
_lavaGoutCount = 0;
AddWaypoints();
- Start(true, true);
+ me->SetWalk(false);
+ Start(true);
}
void JustEngagedWith(Unit* /*who*/) override
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index 6ff00560d0..affbf1cb2c 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -199,7 +199,7 @@ public:
WorldPacket data(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, 4);
data << uint32(ENCOUNTER_FRAME_REFRESH_FRAMES);
- _owner->GetSession()->SendPacket(&data);
+ _owner->SendDirectMessage(&data);
return true;
}
@@ -310,7 +310,7 @@ public:
void KilledUnit(Unit* victim) override
{
- if (victim->IsPlayer() && events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (victim->IsPlayer() && !events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -335,7 +335,7 @@ public:
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
- if (events.GetNextEventTime(EVENT_CHECK_HEALTH) != 0)
+ if (events.HasTimeUntilEvent(EVENT_CHECK_HEALTH))
return;
if (!attacker || !me->InSamePhase(attacker))
@@ -477,7 +477,7 @@ public:
void KilledUnit(Unit* victim) override
{
- if (victim->IsPlayer() && _events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (victim->IsPlayer() && !_events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
_events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -598,7 +598,7 @@ public:
void SetData(uint32 id, uint32 value) override
{
- if (_events.GetNextEventTime(EVENT_CHECK_CORPOREALITY) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_CHECK_CORPOREALITY))
return;
if (id == DATA_MATERIAL_DAMAGE_TAKEN)
@@ -1120,7 +1120,7 @@ class spell_halion_twilight_realm_aura : public AuraScript
target->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
if (!GetTarget()->IsPlayer())
return;
- GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500));
+ GetTarget()->m_Events.AddEventAtOffset(new SendEncounterUnit(GetTarget()->ToPlayer()), 500ms);
}
void Register() override
@@ -1153,7 +1153,7 @@ class spell_halion_leave_twilight_realm_aura : public AuraScript
if (!GetTarget()->IsPlayer())
return;
- GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500));
+ GetTarget()->m_Events.AddEventAtOffset(new SendEncounterUnit(GetTarget()->ToPlayer()), 500ms);
}
void Register() override
@@ -1322,7 +1322,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
index 5396265952..7b6aa9e8f5 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
@@ -121,7 +121,7 @@ public:
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -144,7 +144,7 @@ public:
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->SetDisableGravity(true);
- me->GetMotionMaster()->MovePoint(POINT_TAKEOFF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 6.0f, false);
+ me->GetMotionMaster()->MovePoint(POINT_TAKEOFF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 6.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
events.ScheduleEvent(EVENT_FLIGHT, 50s);
events.DelayEvents(15s);
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 2s);
@@ -163,10 +163,10 @@ public:
events.ScheduleEvent(EVENT_FLAME_BREATH, 20s, 30s);
break;
case EVENT_AIR_MOVEMENT:
- me->GetMotionMaster()->MovePoint(POINT_FLIGHT, 3155.51f, 683.844f, 95.0f, false);
+ me->GetMotionMaster()->MovePoint(POINT_FLIGHT, 3155.51f, 683.844f, 95.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case EVENT_LAND_BACK:
- me->GetMotionMaster()->MovePoint(POINT_LAND, 3151.07f, 636.443f, 80.0f, false);
+ me->GetMotionMaster()->MovePoint(POINT_LAND, 3151.07f, 636.443f, 80.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
break;
case EVENT_LAND_GROUND:
me->SetReactState(REACT_AGGRESSIVE);
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 47f6266c65..f8fadd8faf 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -45,12 +45,9 @@ enum EadricEvents
enum PaletressSpells
{
- SPELL_SMITE_N = 66536,
- SPELL_SMITE_H = 67674,
- SPELL_HOLY_FIRE_N = 66538,
- SPELL_HOLY_FIRE_H = 67676,
- SPELL_RENEW_N = 66537,
- SPELL_RENEW_H = 67675,
+ SPELL_SMITE = 66536,
+ SPELL_HOLY_FIRE = 66538,
+ SPELL_RENEW = 66537,
SPELL_HOLY_NOVA = 66546,
SPELL_SHIELD = 66515,
@@ -58,21 +55,11 @@ enum PaletressSpells
SPELL_SUMMON_MEMORY = 66545,
//Memory
- SPELL_OLD_WOUNDS_N = 66620,
- SPELL_OLD_WOUNDS_H = 67679,
- SPELL_SHADOWS_PAST_N = 66619,
- SPELL_SHADOWS_PAST_H = 67678,
- SPELL_WAKING_NIGHTMARE_N = 66552,
- SPELL_WAKING_NIGHTMARE_H = 67677,
+ SPELL_OLD_WOUNDS = 66620,
+ SPELL_SHADOWS_PAST = 66619,
+ SPELL_WAKING_NIGHTMARE = 66552,
};
-#define SPELL_SMITE DUNGEON_MODE(SPELL_SMITE_N, SPELL_SMITE_H)
-#define SPELL_HOLY_FIRE DUNGEON_MODE(SPELL_HOLY_FIRE_N, SPELL_HOLY_FIRE_H)
-#define SPELL_RENEW DUNGEON_MODE(SPELL_RENEW_N, SPELL_RENEW_H)
-#define SPELL_OLD_WOUNDS DUNGEON_MODE(SPELL_OLD_WOUNDS_N, SPELL_OLD_WOUNDS_H)
-#define SPELL_SHADOWS_PAST DUNGEON_MODE(SPELL_SHADOWS_PAST_N, SPELL_SHADOWS_PAST_H)
-#define SPELL_WAKING_NIGHTMARE DUNGEON_MODE(SPELL_WAKING_NIGHTMARE_N, SPELL_WAKING_NIGHTMARE_H)
-
enum PaletressEvents
{
EVENT_SPELL_SMITE = 1,
@@ -125,8 +112,8 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
events.Reset();
- events.ScheduleEvent(EVENT_SPELL_RADIANCE, 16000);
- events.ScheduleEvent(EVENT_SPELL_HAMMER_RIGHTEOUS, 25000);
+ events.ScheduleEvent(EVENT_SPELL_RADIANCE, 16s);
+ events.ScheduleEvent(EVENT_SPELL_HAMMER_RIGHTEOUS, 25s);
Talk(SAY_EADRIC_AGGRO);
me->CastSpell(me, SPELL_VENGEANCE, false);
if (pInstance)
@@ -409,7 +396,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(20000);
+ me->DespawnOrUnsummon(20s);
if (pInstance)
if (Creature* paletress = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_PALETRESS)))
paletress->AI()->DoAction(1);
@@ -477,29 +464,22 @@ enum ArgentSoldierSpells
// monk
SPELL_FLURRY_OF_BLOWS = 67233,
SPELL_PUMMEL = 67235,
- SPELL_DIVINE_SHIELD_H = 67251,
- SPELL_FINAL_MEDITATION_H = 67255,
+ SPELL_DIVINE_SHIELD = 67251,
+ SPELL_FINAL_MEDITATION = 67255,
// priestess
- SPELL_HOLY_SMITE_N = 36176,
- SPELL_HOLY_SMITE_H = 67289,
+ SPELL_HOLY_SMITE = 36176,
SPELL_FOUNTAIN_OF_LIGHT = 67194,
NPC_FOUNTAIN_OF_LIGHT = 35311,
- SPELL_SHADOW_WORD_PAIN_N = 34941,
- SPELL_SHADOW_WORD_PAIN_H = 34942,
- SPELL_MIND_CONTROL_H = 67229,
+ SPELL_SHADOW_WORD_PAIN = 34941,
+ SPELL_MIND_CONTROL = 67229,
// lightwielder
- SPELL_BLAZING_LIGHT_N = 67247,
- SPELL_BLAZING_LIGHT_H = 67290,
+ SPELL_BLAZING_LIGHT = 67247,
SPELL_CLEAVE = 15284,
- SPELL_UNBALANCING_STRIKE_H = 67237,
+ SPELL_UNBALANCING_STRIKE = 67237,
};
-#define SPELL_HOLY_SMITE DUNGEON_MODE(SPELL_HOLY_SMITE_N, SPELL_HOLY_SMITE_H)
-#define SPELL_SHADOW_WORD_PAIN DUNGEON_MODE(SPELL_SHADOW_WORD_PAIN_N, SPELL_SHADOW_WORD_PAIN_H)
-#define SPELL_BLAZING_LIGHT DUNGEON_MODE(SPELL_BLAZING_LIGHT_N, SPELL_BLAZING_LIGHT_H)
-
enum ArgentSoldierEvents
{
EVENT_MONK_SPELL_FLURRY_OF_BLOWS = 1,
@@ -507,10 +487,10 @@ enum ArgentSoldierEvents
EVENT_PRIESTESS_SPELL_HOLY_SMITE,
EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN,
EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT,
- EVENT_PRIESTESS_SPELL_MIND_CONTROL_H,
+ EVENT_PRIESTESS_SPELL_MIND_CONTROL,
EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT,
EVENT_LIGHTWIELDER_SPELL_CLEAVE,
- EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H,
+ EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE,
};
class npc_argent_soldier : public CreatureScript
@@ -607,7 +587,8 @@ public:
break;
}
- Start(false, true);
+ me->SetWalk(false);
+ Start(false);
uiWaypoint = uiType;
}
@@ -618,8 +599,8 @@ public:
bCheck = false;
damage = me->GetHealth() - 1;
events.DelayEvents(10s);
- me->CastSpell(me, SPELL_DIVINE_SHIELD_H, true);
- me->CastSpell((Unit*)nullptr, SPELL_FINAL_MEDITATION_H, true);
+ me->CastSpell(me, SPELL_DIVINE_SHIELD, true);
+ me->CastSpell((Unit*)nullptr, SPELL_FINAL_MEDITATION, true);
}
}
@@ -638,13 +619,13 @@ public:
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN, 3s, 6s);
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT, 8s, 15s);
if (IsHeroic())
- events.RescheduleEvent(EVENT_PRIESTESS_SPELL_MIND_CONTROL_H, 12s);
+ events.RescheduleEvent(EVENT_PRIESTESS_SPELL_MIND_CONTROL, 12s);
break;
case NPC_ARGENT_LIGHTWIELDER:
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT, 12s, 15s);
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_CLEAVE, 3s, 5s);
if (IsHeroic())
- events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H, 8s, 12s);
+ events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE, 8s, 12s);
break;
}
}
@@ -690,9 +671,9 @@ public:
me->CastSpell((Unit*)nullptr, SPELL_FOUNTAIN_OF_LIGHT, false);
events.Repeat(35s, 45s);
break;
- case EVENT_PRIESTESS_SPELL_MIND_CONTROL_H:
+ case EVENT_PRIESTESS_SPELL_MIND_CONTROL:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
- me->CastSpell(target, SPELL_MIND_CONTROL_H, false);
+ me->CastSpell(target, SPELL_MIND_CONTROL, false);
events.Repeat(22s, 30s);
break;
@@ -710,9 +691,9 @@ public:
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
events.Repeat(6s, 8s);
break;
- case EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H:
+ case EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE:
if (me->GetVictim())
- me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE_H, false);
+ me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE, false);
events.Repeat(12s, 15s);
break;
}
@@ -722,7 +703,7 @@ public:
void JustDied(Unit* /*pKiller*/) override
{
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
if (pInstance)
pInstance->SetData(DATA_ARGENT_SOLDIER_DEFEATED, 0);
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
index 47b89b1624..e1178e6763 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
@@ -18,7 +18,11 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
+#include "SharedDefines.h"
+#include "Spell.h"
#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "SpellScriptLoader.h"
#include "trial_of_the_champion.h"
enum Spells
@@ -30,49 +34,29 @@ enum Spells
SPELL_BK_KILL_CREDIT = 68663,
// phase 1
- SPELL_PLAGUE_STRIKE_N = 67724,
- SPELL_PLAGUE_STRIKE_H = 67884,
- SPELL_ICY_TOUCH_N = 67718,
- SPELL_ICY_TOUCH_H = 67881,
- SPELL_DEATH_RESPITE_N = 67745,
- SPELL_DEATH_RESPITE_H = 68306,
+ SPELL_PLAGUE_STRIKE = 67724,
+ SPELL_ICY_TOUCH = 67718,
+ SPELL_DEATH_RESPITE = 67745,
SPELL_DEATH_RESPITE_DUMMY = 66798,
- SPELL_OBLITERATE_N = 67725,
- SPELL_OBLITERATE_H = 67883,
+ SPELL_OBLITERATE = 67725,
// phase 2 (+ abilities from phase 1 without death respite)
- SPELL_ARMY_DEAD_N = 67761,
- SPELL_ARMY_DEAD_H = 67874,
- SPELL_DESECRATION_N = 67778,
- SPELL_DESECRATION_H = 67877,
+ SPELL_ARMY_DEAD = 67761,
+ SPELL_DESECRATION = 67778,
SPELL_DESECRATION_SUMMON = 67779,
SPELL_BK_GHOUL_EXPLODE = 67751,
// phase 3
- SPELL_DEATH_BITE_N = 67808,
- SPELL_DEATH_BITE_H = 67875,
- SPELL_MARKED_DEATH_N = 67823,
- SPELL_MARKED_DEATH_H = 67882,
+ SPELL_DEATH_BITE = 67808,
+ SPELL_MARKED_DEATH = 67823,
// ghouls
- SPELL_CLAW_N = 67774,
+ SPELL_CLAW = 67774,
SPELL_CLAW_H = 67879,
- SPELL_EXPLODE_N = 67729,
- SPELL_EXPLODE_H = 67886,
- SPELL_LEAP_N = 67749,
- SPELL_LEAP_H = 67880,
+ SPELL_EXPLODE = 67729,
+ SPELL_EXPLODE_H = 67886,
+ SPELL_LEAP = 67749,
};
-#define SPELL_LEAP DUNGEON_MODE(SPELL_LEAP_N, SPELL_LEAP_H)
-#define SPELL_EXPLODE DUNGEON_MODE(SPELL_EXPLODE_N, SPELL_EXPLODE_H)
-
-#define SPELL_PLAGUE_STRIKE DUNGEON_MODE(SPELL_PLAGUE_STRIKE_N, SPELL_PLAGUE_STRIKE_H)
-#define SPELL_ICY_TOUCH DUNGEON_MODE(SPELL_ICY_TOUCH_N, SPELL_ICY_TOUCH_H)
-#define SPELL_DEATH_RESPITE DUNGEON_MODE(SPELL_DEATH_RESPITE_N, SPELL_DEATH_RESPITE_H)
-#define SPELL_OBLITERATE DUNGEON_MODE(SPELL_OBLITERATE_N, SPELL_OBLITERATE_H)
-#define SPELL_ARMY_DEAD DUNGEON_MODE(SPELL_ARMY_DEAD_N, SPELL_ARMY_DEAD_H)
-#define SPELL_DESECRATION DUNGEON_MODE(SPELL_DESECRATION_N, SPELL_DESECRATION_H)
-#define SPELL_DEATH_BITE DUNGEON_MODE(SPELL_DEATH_BITE_N, SPELL_DEATH_BITE_H)
-#define SPELL_MARKED_DEATH DUNGEON_MODE(SPELL_MARKED_DEATH_N, SPELL_MARKED_DEATH_H)
enum Events
{
@@ -131,7 +115,7 @@ public:
void EnterEvadeMode(EvadeReason why) override
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
ScriptedAI::EnterEvadeMode(why);
}
@@ -182,7 +166,7 @@ public:
events.Reset();
events.ScheduleEvent(EVENT_ANNOUNCER_SAY_ZOMBIE, 2500ms);
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, 7s, 9s);
- events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, 3500ms, 7000ms);
+ events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, 3500ms, 7s);
events.ScheduleEvent(EVENT_SPELL_DEATH_RESPITE, 13s, 15s);
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, 11s, 19s);
}
@@ -214,7 +198,7 @@ public:
events.Reset();
events.ScheduleEvent(EVENT_SPELL_PLAGUE_STRIKE, 7s, 9s);
- events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, 3500ms, 7000ms);
+ events.ScheduleEvent(EVENT_SPELL_ICY_TOUCH, 3500ms, 7s);
events.ScheduleEvent(EVENT_SPELL_OBLITERATE, 11s, 19s);
events.ScheduleEvent(EVENT_SPELL_DESECRATION, 2s, 3s);
break;
@@ -339,7 +323,7 @@ public:
void Reset() override
{
- Start(false, true, ObjectGuid::Empty, nullptr);
+ Start(false, ObjectGuid::Empty, nullptr);
SetDespawnAtEnd(true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToAll(true);
@@ -420,27 +404,6 @@ public:
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
- {
- switch (spell->Id)
- {
- case SPELL_CLAW_N:
- case SPELL_CLAW_H:
- DoResetThreatList();
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f))
- {
- me->AddThreat(target, 100.0f);
- AttackStart(target);
- }
- break;
- case SPELL_EXPLODE_H:
- if (target && target->IsPlayer())
- if (pInstance)
- pInstance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
- break;
- }
- }
-
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -467,7 +430,7 @@ public:
break;
case 2: // claw
if (Unit* target = me->GetVictim())
- me->CastSpell(target, SPELL_CLAW_N, false);
+ me->CastSpell(target, SPELL_CLAW, false);
events.Repeat(6s, 8s);
break;
}
@@ -482,9 +445,51 @@ public:
}
};
+//67774,67879
+class spell_black_knight_ghoul_claw : public SpellScript
+{
+ PrepareSpellScript(spell_black_knight_ghoul_claw);
+
+ void HandleSpellHit(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetCaster())
+ {
+ GetCaster()->GetThreatMgr().ResetAllThreat();
+ if (Unit* target = caster->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 30.0f))
+ {
+ caster->AddThreat(target, 100.0f);
+ caster->GetAI()->AttackStart(target);
+ }
+ }
+ }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_black_knight_ghoul_claw::HandleSpellHit, EFFECT_0, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
+ }
+};
+
+//67886
+class spell_black_knight_ghoul_explode : public SpellScript
+{
+ PrepareSpellScript(spell_black_knight_ghoul_explode);
+
+ void HandleSpellHit(SpellEffIndex /*effIndex*/)
+ {
+ if (GetHitUnit()->IsPlayer())
+ if (InstanceScript* instance = GetCaster()->GetInstanceScript())
+ instance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
+ }
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_black_knight_ghoul_explode::HandleSpellHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
void AddSC_boss_black_knight()
{
new boss_black_knight();
new npc_black_knight_skeletal_gryphon();
new npc_black_knight_ghoul();
+ RegisterSpellScript(spell_black_knight_ghoul_claw);
+ RegisterSpellScript(spell_black_knight_ghoul_explode);
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
index 649a60c6f2..93d599a7b4 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
@@ -56,38 +56,30 @@ enum MountSpells
enum ChampionSpells
{
// Mage (Ambrose Boltspark, Eressea Dawnsinger)
- SPELL_FIREBALL_N = 66042,
- SPELL_FIREBALL_H = 68310,
- SPELL_BLAST_WAVE_N = 66044,
- SPELL_BLAST_WAVE_H = 68312,
+ SPELL_FIREBALL = 66042,
+ SPELL_BLAST_WAVE = 66044,
SPELL_HASTE = 66045,
- SPELL_POLYMORPH_N = 66043,
- SPELL_POLYMORPH_H = 68311,
+ SPELL_POLYMORPH = 66043,
// Shaman (Colosos, Runok Wildmane)
- SPELL_CHAIN_LIGHTNING_N = 67529,
- SPELL_CHAIN_LIGHTNING_H = 68319,
+ SPELL_CHAIN_LIGHTNING = 67529,
SPELL_EARTH_SHIELD = 67530,
- SPELL_HEALING_WAVE_N = 67528,
- SPELL_HEALING_WAVE_H = 68318,
+ SPELL_HEALING_WAVE = 67528,
SPELL_HEX_OF_MENDING = 67534,
// Hunter (Jaelyne Evensong, Zul'tore)
SPELL_DISENGAGE = 68339,
SPELL_LIGHTNING_ARROWS = 66083,
SPELL_MULTI_SHOT = 66081,
- SPELL_SHOOT_N = 65868,
- SPELL_SHOOT_H = 67988,
+ SPELL_SHOOT = 65868,
// Rogue (Lana Stouthammer Evensong, Deathstalker Visceri)
- SPELL_EVISCERATE_N = 67709,
- SPELL_EVISCERATE_H = 68317,
+ SPELL_EVISCERATE = 67709,
SPELL_FAN_OF_KNIVES = 67706,
SPELL_POISON_BOTTLE = 67701,
// Warrior (Marshal Jacob Alerius, Mokra the Skullcrusher)
- SPELL_MORTAL_STRIKE_N = 68783,
- SPELL_MORTAL_STRIKE_H = 68784,
+ SPELL_MORTAL_STRIKE = 68783,
SPELL_BLADESTORM = 63784,
SPELL_INTERCEPT = 67540,
SPELL_ROLLING_THROW = 67546, // not implemented yet!
@@ -98,15 +90,6 @@ enum Texts
SAY_TRAMPLED = 0,
};
-#define SPELL_FIREBALL DUNGEON_MODE(SPELL_FIREBALL_N, SPELL_FIREBALL_H)
-#define SPELL_BLAST_WAVE DUNGEON_MODE(SPELL_BLAST_WAVE_N, SPELL_BLAST_WAVE_H)
-#define SPELL_POLYMORPH DUNGEON_MODE(SPELL_POLYMORPH_N, SPELL_POLYMORPH_H)
-#define SPELL_CHAIN_LIGHTNING DUNGEON_MODE(SPELL_CHAIN_LIGHTNING_N, SPELL_CHAIN_LIGHTNING_H)
-#define SPELL_HEALING_WAVE DUNGEON_MODE(SPELL_HEALING_WAVE_N, SPELL_HEALING_WAVE_H)
-#define SPELL_SHOOT DUNGEON_MODE(SPELL_SHOOT_N, SPELL_SHOOT_H)
-#define SPELL_EVISCERATE DUNGEON_MODE(SPELL_EVISCERATE_N, SPELL_EVISCERATE_H)
-#define SPELL_MORTAL_STRIKE DUNGEON_MODE(SPELL_MORTAL_STRIKE_N, SPELL_MORTAL_STRIKE_H)
-
enum MountEvents
{
EVENT_NONE = 0,
@@ -213,7 +196,7 @@ public:
data << uint32(VEHICLE_SPELL_RIDE_HARDCODED);
data << uint8(SPELL_FAILED_CUSTOM_ERROR);
data << uint32(SPELL_CUSTOM_ERROR_MUST_HAVE_LANCE_EQUIPPED);
- clicker->ToPlayer()->GetSession()->SendPacket(&data);
+ clicker->ToPlayer()->SendDirectMessage(&data);
return false;
}
};
@@ -246,10 +229,16 @@ public:
events.Reset();
}
+ void MoveInLineOfSight(Unit* who) override
+ {
+ if (pInstance && pInstance->GetData(DATA_INSTANCE_PROGRESS) >= INSTANCE_PROGRESS_GRAND_CHAMPIONS_REACHED_DEST)
+ ScriptedAI::MoveInLineOfSight(who);
+ }
+
void JustEngagedWith(Unit* /*who*/) override
{
events.Reset();
- events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4000ms);
+ events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4s);
events.ScheduleEvent(EVENT_SHIELD_BREAKER, 5s, 8s);
events.ScheduleEvent(EVENT_THRUST, 3s, 5s);
me->CastSpell(me, SPELL_TRAMPLE_AURA, true);
@@ -305,7 +294,7 @@ public:
me->CastSpell(target, SPELL_MINIONS_CHARGE, false);
}
}
- events.Repeat(4500ms, 6000ms);
+ events.Repeat(4500ms, 6s);
}
break;
case EVENT_SHIELD_BREAKER:
@@ -341,7 +330,7 @@ public:
void JustDied(Unit* /*pKiller*/) override
{
me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
if (pInstance)
pInstance->SetData(DATA_MOUNT_DIED, 0);
}
@@ -366,7 +355,7 @@ public:
me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true);
events.Reset();
- events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4000ms);
+ events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4s);
events.ScheduleEvent(EVENT_SHIELD_BREAKER, 5s, 8s);
events.ScheduleEvent(EVENT_THRUST, 3s, 5s);
@@ -410,6 +399,12 @@ public:
}
}
+ void MoveInLineOfSight(Unit* who) override
+ {
+ if (pInstance && pInstance->GetData(DATA_INSTANCE_PROGRESS) >= INSTANCE_PROGRESS_GRAND_CHAMPIONS_REACHED_DEST)
+ npc_escortAI::MoveInLineOfSight(who);
+ }
+
void JustEngagedWith(Unit* /*who*/) override
{
if (pInstance && pInstance->GetData(DATA_INSTANCE_PROGRESS) == INSTANCE_PROGRESS_CHAMPIONS_UNMOUNTED )
@@ -537,7 +532,7 @@ public:
return;
}
- Start(false, true);
+ Start(false);
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
@@ -628,7 +623,7 @@ public:
me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true);
me->SetRegeneratingHealth(true);
events.Reset();
- events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4000ms);
+ events.ScheduleEvent(EVENT_MOUNT_CHARGE, 2500ms, 4s);
events.ScheduleEvent(EVENT_SHIELD_BREAKER, 5s, 8s);
events.ScheduleEvent(EVENT_THRUST, 3s, 5s);
me->SetReactState(REACT_AGGRESSIVE);
@@ -754,7 +749,7 @@ public:
me->CastSpell(target, SPELL_MINIONS_CHARGE, false);
}
}
- events.Repeat(4500ms, 6000ms);
+ events.Repeat(4500ms, 6s);
}
break;
case EVENT_SHIELD_BREAKER:
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
index 195d626a73..1f3cc4eaf4 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
@@ -23,7 +23,6 @@
#include "trial_of_the_champion.h"
const Position SpawnPosition = {746.67f, 684.08f, 412.5f, 4.65f};
-#define CLEANUP_CHECK_INTERVAL 5000
/**
* @todo: Missing dialog/RP (already populated in DB) && spawns (can use ToC25 locations?) for:
@@ -88,7 +87,7 @@ public:
VehicleList.clear();
CLEANED = false;
events.Reset();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0ms);
Counter = 0;
temp1 = 0;
temp2 = 0;
@@ -268,7 +267,7 @@ public:
if (DoNeedCleanup(player))
InstanceCleanup();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
}
bool DoNeedCleanup(Player* ignoredPlayer = nullptr)
@@ -443,7 +442,7 @@ public:
Counter = 0;
SaveToDB();
events.Reset();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
CLEANED = true;
}
@@ -785,7 +784,7 @@ public:
{
InstanceCleanup();
}
- events.RepeatEvent(CLEANUP_CHECK_INTERVAL);
+ events.Repeat(5s);
}
break;
case EVENT_SUMMON_GRAND_CHAMPION_1:
@@ -812,7 +811,7 @@ public:
while( number == temp1 || number == temp2 );
DoSummonGrandChampion(number, 2);
HandleGameObject(GO_MainGateGUID, true);
- events.ScheduleEvent(EVENT_CLOSE_GATE, 6000);
+ events.ScheduleEvent(EVENT_CLOSE_GATE, 6s);
}
break;
case EVENT_CLOSE_GATE:
@@ -1129,7 +1128,7 @@ public:
if (Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID))
{
boss->GetMotionMaster()->MovePoint(0, SpawnPosition);
- boss->DespawnOrUnsummon(3000);
+ boss->DespawnOrUnsummon(3s);
}
}
break;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
index e7762a71be..87c8b3ae8b 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
@@ -19,6 +19,7 @@
#include "PassiveAI.h"
#include "Player.h"
#include "ScriptedCreature.h"
+#include "SharedDefines.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
@@ -161,7 +162,7 @@ public:
events.Reset();
bIntro = false;
bPhase3 = false;
- me->ApplySpellImmune(0, IMMUNITY_ID, RAID_MODE(66193, 67855, 67856, 67857), true);
+ me->ApplySpellImmune(0, IMMUNITY_ID, sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me), true);
me->m_SightDistance = 90.0f; // for MoveInLineOfSight distance
}
@@ -501,8 +502,8 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->CastSpell(me, RAID_MODE(SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25, SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25), true);
- me->m_Events.AddEvent(new HideNpcEvent(*me), me->m_Events.CalculateTime(5000));
+ me->CastSpell(me, SPELL_TRAITOR_KING, true);
+ me->m_Events.AddEventAtOffset(new HideNpcEvent(*me), 5s);
}
bool CanAIAttack(Unit const* target) const override
@@ -574,7 +575,7 @@ public:
if (spell->Id == SPELL_SPIKE_FAIL)
{
me->RemoveAllAuras();
- me->DespawnOrUnsummon(1500);
+ me->DespawnOrUnsummon(1500ms);
}
}
@@ -655,7 +656,7 @@ public:
me->NearTeleportTo(target->GetPositionX() + cos(o) * 5.0f, target->GetPositionY() + std::sin(o) * 5.0f, target->GetPositionZ() + 0.6f, target->GetOrientation());
AttackStart(target);
me->GetMotionMaster()->MoveChase(target);
- events.DelayEvents(3000);
+ events.DelayEvents(3s);
}
}
@@ -679,7 +680,7 @@ public:
events.Repeat(30s, 45s);
break;
case EVENT_SUBMERGE:
- if (HealthBelowPct(80) && !me->HasAura(RAID_MODE(66193, 67855, 67856, 67857))) // not having permafrost - allow submerge
+ if (HealthBelowPct(80) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me))) // not having permafrost - allow submerge
{
me->GetMotionMaster()->MoveIdle();
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
@@ -710,7 +711,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->m_Events.AddEvent(new HideNpcEvent(*me), me->m_Events.CalculateTime(5000));
+ me->m_Events.AddEventAtOffset(new HideNpcEvent(*me), 5s);
}
bool CanAIAttack(Unit const* target) const override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
index 0a44e0f9d1..4cc91611a8 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
@@ -119,7 +119,7 @@ struct boss_faction_championsAI : public ScriptedAI
}
/// @todo - Convert to std::chrono
- void EventMapGCD(EventMap& e, uint32 delay, uint32 gcd = 0)
+ void EventMapGCD(EventMap& e, Milliseconds delay, uint32 gcd = 0)
{
e.DelayEventsToMax(delay, gcd);
}
@@ -316,43 +316,43 @@ public:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_LIFEBLOOM, 40.0f))
me->CastSpell(target, SPELL_LIFEBLOOM, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_NOURISH:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_NOURISH, 40.0f))
me->CastSpell(target, SPELL_NOURISH, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_REGROWTH:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_REGROWTH, 40.0f))
me->CastSpell(target, SPELL_REGROWTH, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_REJUVENATION:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_REJUVENATION, 40.0f))
me->CastSpell(target, SPELL_REJUVENATION, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_THORNS:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_THORNS, 30.0f))
me->CastSpell(target, SPELL_THORNS, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_TRANQUILITY:
me->CastSpell(me, SPELL_TRANQUILITY, false);
events.Repeat(2min, 3min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_BARKSKIN:
if (HealthBelowPct(50))
{
me->CastSpell(me, SPELL_BARKSKIN, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -360,7 +360,7 @@ public:
case EVENT_SPELL_NATURE_GRASP:
me->CastSpell(me, SPELL_NATURE_GRASP, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -445,19 +445,19 @@ public:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_HEALING_WAVE, 40.0f))
me->CastSpell(target, SPELL_HEALING_WAVE, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_RIPTIDE:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_RIPTIDE, 40.0f))
me->CastSpell(target, SPELL_RIPTIDE, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SPIRIT_CLEANSE:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_SPIRIT_CLEANSE, 40.0f))
me->CastSpell(target, SPELL_SPIRIT_CLEANSE, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HEROISM_OR_BLOODLUST:
if (me->GetEntry() == NPC_ALLIANCE_SHAMAN_RESTORATION )
@@ -465,25 +465,25 @@ public:
else
me->CastSpell((Unit*)nullptr, SPELL_BLOODLUST, true);
events.Repeat(10min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HEX:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true))
me->CastSpell(target, SPELL_HEX, false);
events.Repeat(45s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_EARTH_SHIELD:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_EARTH_SHIELD, 40.0f))
me->CastSpell(target, SPELL_EARTH_SHIELD, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_EARTH_SHOCK:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_EARTH_SHOCK, false);
events.Repeat(5s, 10s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -568,14 +568,14 @@ public:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_HAND_OF_FREEDOM, 30.0f))
me->CastSpell(target, SPELL_HAND_OF_FREEDOM, false);
events.Repeat(25s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_BUBBLE:
if (HealthBelowPct(25))
{
me->CastSpell(me, SPELL_BUBBLE, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(10s);
@@ -584,32 +584,32 @@ public:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_CLEANSE, 40.0f))
me->CastSpell(target, SPELL_CLEANSE, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FLASH_OF_LIGHT:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_FLASH_OF_LIGHT, 40.0f))
me->CastSpell(target, SPELL_FLASH_OF_LIGHT, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HOLY_LIGHT:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_HOLY_LIGHT, 40.0f))
me->CastSpell(target, SPELL_HOLY_LIGHT, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HOLY_SHOCK:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_HOLY_SHOCK, 40.0f))
me->CastSpell(target, SPELL_HOLY_SHOCK, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HAND_OF_PROTECTION:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_HAND_OF_PROTECTION, 40.0f))
{
me->CastSpell(target, SPELL_HAND_OF_PROTECTION, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(10s);
@@ -619,7 +619,7 @@ public:
{
me->CastSpell(target, SPELL_HAMMER_OF_JUSTICE, false);
events.Repeat(40s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(10s);
@@ -701,32 +701,32 @@ public:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_RENEW, 40.0f))
me->CastSpell(target, SPELL_RENEW, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SHIELD:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_SHIELD, 40.0f))
me->CastSpell(target, SPELL_SHIELD, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FLASH_HEAL:
if (Creature* target = SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_FLASH_HEAL, 40.0f))
me->CastSpell(target, SPELL_FLASH_HEAL, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_DISPEL:
if (Unit* target = (urand(0, 1) ? SelectTarget(SelectTargetMethod::MaxThreat, 0, 30.0f, true) : SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_DISPEL, 40.0f)))
me->CastSpell(target, SPELL_DISPEL, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_MANA_BURN:
if (Unit* target = SelectEnemyCaster(false, 30.0f))
{
me->CastSpell(target, SPELL_MANA_BURN, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -736,7 +736,7 @@ public:
{
me->CastSpell((Unit*)nullptr, SPELL_PSYCHIC_SCREAM, false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -825,7 +825,7 @@ public:
{
me->CastSpell(target, SPELL_SILENCE, false);
events.Repeat(45s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
else
@@ -835,32 +835,32 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_VAMPIRIC_TOUCH, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SW_PAIN:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_SW_PAIN, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_MIND_FLAY:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_MIND_FLAY, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_MIND_BLAST:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_MIND_BLAST, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_HORROR:
if (me->GetVictim() && me->GetExactDist2d(me->GetVictim()) <= 30.0f )
{
me->CastSpell(me->GetVictim(), SPELL_HORROR, false);
events.Repeat(2min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(10s);
@@ -870,7 +870,7 @@ public:
{
me->CastSpell(me, SPELL_DISPERSION, false);
events.Repeat(3min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -879,14 +879,14 @@ public:
if (Unit* target = (urand(0, 1) ? SelectTarget(SelectTargetMethod::MaxThreat, 0, 30.0f, true) : SelectTarget_MostHPLostFriendlyMissingBuff(SPELL_DISPEL, 40.0f)))
me->CastSpell(target, SPELL_DISPEL, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_PSYCHIC_SCREAM:
if (EnemiesInRange(8.0f) >= 3 )
{
me->CastSpell((Unit*)nullptr, SPELL_PSYCHIC_SCREAM, false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -989,7 +989,7 @@ public:
{
me->CastSpell((Unit*)nullptr, SPELL_HELLFIRE, false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -998,43 +998,43 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_CORRUPTION, false);
events.Repeat(10s, 20s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_CURSE_OF_AGONY:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_CURSE_OF_AGONY, false);
events.Repeat(10s, 20s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_CURSE_OF_EXHAUSTION:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_CURSE_OF_EXHAUSTION, false);
events.Repeat(10s, 20s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FEAR:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true))
me->CastSpell(target, SPELL_FEAR, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SEARING_PAIN:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_SEARING_PAIN, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SHADOW_BOLT:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_UNSTABLE_AFFLICTION:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_UNSTABLE_AFFLICTION, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -1121,20 +1121,20 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_ARCANE_BARRAGE, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_ARCANE_BLAST:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_ARCANE_BLAST, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_ARCANE_EXPLOSION:
if (EnemiesInRange(9.0f) >= 3 )
{
me->CastSpell((Unit*)nullptr, SPELL_ARCANE_EXPLOSION, false);
events.Repeat(6s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1144,7 +1144,7 @@ public:
{
me->CastSpell((Unit*)nullptr, SPELL_FROST_NOVA, false);
events.Repeat(15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
// blink disabled, movement not working
}
else
@@ -1155,7 +1155,7 @@ public:
{
me->CastSpell(target, SPELL_COUNTERSPELL, false);
events.Repeat(24s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1164,14 +1164,14 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_FROSTBOLT, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_ICE_BLOCK:
if (HealthBelowPct(25))
{
me->CastSpell(me, SPELL_ICE_BLOCK, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1180,7 +1180,7 @@ public:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
me->CastSpell(target, SPELL_POLYMORPH, false);
events.Repeat(15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -1279,14 +1279,14 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_AIMED_SHOT, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_DETERRENCE:
if (HealthBelowPct(25))
{
me->CastSpell(me, SPELL_DETERRENCE, false);
events.Repeat(90s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1296,7 +1296,7 @@ public:
{
me->CastSpell(me, SPELL_DISENGAGE, false);
events.Repeat(20s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1305,31 +1305,31 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_EXPLOSIVE_SHOT, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FROST_TRAP:
me->CastSpell(me, SPELL_FROST_TRAP, false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_STEADY_SHOT:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_STEADY_SHOT, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_WING_CLIP:
if (me->GetVictim() && me->GetDistance2d(me->GetVictim()) <= 5.0f )
me->CastSpell(me->GetVictim(), SPELL_WING_CLIP, false);
events.Repeat(8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_WYVERN_STING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 35.0f, true))
{
me->CastSpell(target, SPELL_WYVERN_STING, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
events.Repeat(10s);
@@ -1429,7 +1429,7 @@ public:
{
me->CastSpell(me, SPELL_BARKSKIN, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1438,48 +1438,48 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_WRATH, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_MOONFIRE:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_MOONFIRE, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_STARFIRE:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_STARFIRE, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_INSECT_SWARM:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_INSECT_SWARM, false);
events.Repeat(5s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_ENTANGLING_ROOTS:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
me->CastSpell(target, SPELL_ENTANGLING_ROOTS, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FAERIE_FIRE:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_FAERIE_FIRE, false);
events.Repeat(15s, 20s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_CYCLONE:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxDistance, 0, 20.0f, true))
me->CastSpell(target, SPELL_CYCLONE, false);
events.Repeat(25s, 40s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_FORCE_OF_NATURE:
me->CastSpell((Unit*)nullptr, SPELL_FORCE_OF_NATURE, false);
events.Repeat(3min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -1583,7 +1583,7 @@ public:
{
me->CastSpell((Unit*)nullptr, SPELL_INTIMIDATING_SHOUT, false);
events.Repeat(2min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1597,14 +1597,14 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_MORTAL_STRIKE, false);
events.Repeat(6s, 8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_CHARGE:
if (me->GetVictim() && me->GetDistance2d(me->GetVictim()) > 8.0f && me->GetDistance2d(me->GetVictim()) < 25.0f )
{
me->CastSpell(me->GetVictim(), SPELL_CHARGE, false);
events.Repeat(10s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1614,7 +1614,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_DISARM, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1629,7 +1629,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_OVERPOWER, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1644,7 +1644,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_SUNDER_ARMOR, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1659,7 +1659,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_SHATTERING_THROW, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1674,7 +1674,7 @@ public:
{
me->CastSpell(me, SPELL_RETALIATION, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1760,7 +1760,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_CHAINS_OF_ICE, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1770,7 +1770,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_DEATH_COIL, false);
events.Repeat(5s, 8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1785,7 +1785,7 @@ public:
pos.Relocate(x, y, z);
me->GetVictim()->CastSpell(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), 49575, true);
events.Repeat(35s);
- EventMapGCD(events, 2000);
+ EventMapGCD(events, 2s);
}
else
events.Repeat(5s);
@@ -1800,7 +1800,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FROST_STRIKE, false);
events.Repeat(6s, 10s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1810,7 +1810,7 @@ public:
{
me->CastSpell(me, SPELL_ICEBOUND_FORTITUDE, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1820,7 +1820,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_ICY_TOUCH, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1830,7 +1830,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_STRANGULATE, false);
events.Repeat(2min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1922,7 +1922,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FAN_OF_KNIVES, false);
events.Repeat(6s, 10s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1932,7 +1932,7 @@ public:
{
me->CastSpell(target, SPELL_BLIND, false);
events.Repeat(2min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1942,7 +1942,7 @@ public:
{
me->CastSpell(me, SPELL_CLOAK, false);
events.Repeat(90s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(6s);
@@ -1954,7 +1954,7 @@ public:
{
me->CastSpell(me, SPELL_BLADE_FLURRY, false);
events.Repeat(2min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
break;
case EVENT_SPELL_SHADOWSTEP:
@@ -1962,7 +1962,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_SHADOWSTEP, false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1977,7 +1977,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_HEMORRHAGE, false);
events.Repeat(5s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -1992,7 +1992,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_EVISCERATE, false);
events.Repeat(15s, 25s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2080,7 +2080,7 @@ public:
{
me->CastSpell(target, SPELL_EARTH_SHOCK_ENH, false);
events.Repeat(6s, 8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2095,7 +2095,7 @@ public:
{
me->CastSpell(target, SPELL_LAVA_LASH, false);
events.Repeat(6s, 8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2110,7 +2110,7 @@ public:
{
me->CastSpell(target, SPELL_STORMSTRIKE, false);
events.Repeat(8s, 9s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2121,12 +2121,12 @@ public:
else
me->CastSpell((Unit*)nullptr, SPELL_BLOODLUST, true);
events.Repeat(10min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SUMMON_TOTEM:
me->CastSpell((Unit*)nullptr, RAND(SPELL_GROUNDING_TOTEM, SPELL_WINDFURY_TOTEM, SPELL_TREMOR_TOTEM), false);
events.Repeat(30s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
@@ -2211,7 +2211,7 @@ public:
case EVENT_SPELL_AVENGING_WRATH:
me->CastSpell(me, SPELL_AVENGING_WRATH, false);
events.Repeat(3min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_CRUSADER_STRIKE:
if (me->HasUnitFlag(UNIT_FLAG_DISARMED))
@@ -2223,7 +2223,7 @@ public:
{
me->CastSpell(target, SPELL_CRUSADER_STRIKE, false);
events.Repeat(6s, 8s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2233,7 +2233,7 @@ public:
{
me->CastSpell(me, SPELL_DIVINE_SHIELD, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2248,7 +2248,7 @@ public:
{
me->CastSpell((Unit*)nullptr, SPELL_DIVINE_STORM, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2258,7 +2258,7 @@ public:
{
me->CastSpell(target, SPELL_HAMMER_OF_JUSTICE_RET, false);
events.Repeat(40s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2268,7 +2268,7 @@ public:
{
me->CastSpell(target, SPELL_HAND_OF_PROTECTION_RET, false);
events.Repeat(5min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2278,7 +2278,7 @@ public:
{
me->CastSpell(target, SPELL_JUDGEMENT_OF_COMMAND, false);
events.Repeat(10s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2288,7 +2288,7 @@ public:
{
me->CastSpell(target, SPELL_REPENTANCE, false);
events.Repeat(1min);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
}
else
events.Repeat(5s);
@@ -2357,13 +2357,13 @@ public:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_DEVOUR_MAGIC, false);
events.Repeat(8s, 15s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
case EVENT_SPELL_SPELL_LOCK:
if (me->GetVictim())
me->CastSpell(me->GetVictim(), SPELL_SPELL_LOCK, false);
events.Repeat(24s);
- EventMapGCD(events, 1500);
+ EventMapGCD(events, 1500ms);
break;
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
index 67cd96d419..8e82e9cb49 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
@@ -353,7 +353,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
@@ -434,7 +434,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
index 9ad8b6230d..5e99f2353a 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
@@ -848,7 +848,7 @@ public:
me->CastSpell(me, SPELL_STAGGERED_DAZE, true);
me->CastSpell((Unit*)nullptr, SPELL_TRAMPLE, true);
Talk(EMOTE_TRAMPLE_CRASH);
- events.DelayEvents(15000);
+ events.DelayEvents(15s);
}
else
{
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
index 372081fe04..aa2028a222 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -384,7 +384,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
/*
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, essenceId))
me->CastSpell(target, me->GetEntry()==NPC_LIGHTBANE ? SPELL_LIGHT_TOUCH : SPELL_DARK_TOUCH, false);
- events.RepeatEvent(urand(45000,50000));
+ events.Repeat(45s,50s);
*/
GuidVector tList;
@@ -458,7 +458,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
if ((SpecialMask & 0xF) == 0xF )
SpecialMask = 0;
events.Repeat(45s);
- events.DelayEventsToMax(15000, 1); // no touch of light/darkness during special abilities!
+ events.DelayEventsToMax(15s, 1); // no touch of light/darkness during special abilities!
}
break;
case EVENT_REMOVE_DUAL_WIELD:
@@ -710,7 +710,7 @@ public:
return;
if (urand(0, 2))
- me->DespawnOrUnsummon(0);
+ me->DespawnOrUnsummon(0ms);
}
void MoveToNextPoint()
@@ -884,7 +884,7 @@ class spell_valkyr_ball_periodic_dummy_aura : public AuraScript
creature->GetMotionMaster()->MoveIdle();
creature->CastSpell((Unit*)nullptr, creature->GetEntry() == NPC_CONCENTRATED_LIGHT ? SPELL_UNLEASHED_LIGHT : SPELL_UNLEASHED_DARK, false);
creature->SetDisplayId(11686);
- creature->DespawnOrUnsummon(1500);
+ creature->DespawnOrUnsummon(1500ms);
}
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 7dc9c0c591..ad3c4cdb44 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -175,7 +175,7 @@ public:
bSwitcher = false;
bNooneDied = true;
events.Reset();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0ms);
NPC_ChampionGUIDs.clear();
}
@@ -295,22 +295,22 @@ public:
switch (InstanceProgress)
{
case INSTANCE_PROGRESS_INITIAL:
- events.RescheduleEvent(EVENT_SCENE_001, 0);
+ events.RescheduleEvent(EVENT_SCENE_001, 0ms);
break;
case INSTANCE_PROGRESS_INTRO_DONE:
- events.RescheduleEvent(EVENT_SCENE_004, 0);
+ events.RescheduleEvent(EVENT_SCENE_004, 0ms);
break;
case INSTANCE_PROGRESS_BEASTS_DEAD:
- events.RescheduleEvent(EVENT_SCENE_101, 0);
+ events.RescheduleEvent(EVENT_SCENE_101, 0ms);
break;
case INSTANCE_PROGRESS_JARAXXUS_DEAD:
- events.RescheduleEvent(EVENT_SCENE_201, 0);
+ events.RescheduleEvent(EVENT_SCENE_201, 0ms);
break;
case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD:
- events.RescheduleEvent(EVENT_SCENE_301, 0);
+ events.RescheduleEvent(EVENT_SCENE_301, 0ms);
break;
case INSTANCE_PROGRESS_VALKYR_DEAD:
- events.RescheduleEvent(EVENT_SCENE_401, 0);
+ events.RescheduleEvent(EVENT_SCENE_401, 0ms);
break;
}
break;
@@ -331,7 +331,7 @@ public:
if ((northrendBeastsMask & 7) == 7)
SetData(TYPE_NORTHREND_BEASTS_ALL, DONE);
else if ((northrendBeastsMask & 16) == 0)
- events.RescheduleEvent(EVENT_SCENE_005, 2500);
+ events.RescheduleEvent(EVENT_SCENE_005, 2500ms);
}
break;
case TYPE_JORMUNGAR:
@@ -348,9 +348,9 @@ public:
}
if (Creature* c = instance->GetCreature(NPC_AcidmawGUID))
- c->DespawnOrUnsummon(10000);
+ c->DespawnOrUnsummon(10s);
if (Creature* c = instance->GetCreature(NPC_DreadscaleGUID))
- c->DespawnOrUnsummon(10000);
+ c->DespawnOrUnsummon(10s);
if (AchievementTimer + 10 >= GameTime::GetGameTime().count())
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_JORMUNGAR_ACHIEV);
AchievementTimer = 0;
@@ -363,7 +363,7 @@ public:
else if ((northrendBeastsMask & 32) == 0)
{
Counter = 0;
- events.RescheduleEvent(EVENT_SCENE_006, 2500);
+ events.RescheduleEvent(EVENT_SCENE_006, 2500ms);
}
}
else // first one died, start timer for achievement
@@ -390,7 +390,7 @@ public:
InstanceProgress = INSTANCE_PROGRESS_BEASTS_DEAD;
HandleGameObject(GO_EnterGateGUID, true);
events.CancelEvent(EVENT_NORTHREND_BEASTS_ENRAGE);
- events.RescheduleEvent(EVENT_SCENE_BEASTS_DONE, 2500);
+ events.RescheduleEvent(EVENT_SCENE_BEASTS_DONE, 2500ms);
SaveToDB();
}
break;
@@ -402,7 +402,7 @@ public:
{
HandleGameObject(GO_EnterGateGUID, true);
InstanceProgress = INSTANCE_PROGRESS_JARAXXUS_DEAD;
- events.RescheduleEvent(EVENT_SCENE_110, 2500);
+ events.RescheduleEvent(EVENT_SCENE_110, 2500ms);
SaveToDB();
}
break;
@@ -416,11 +416,11 @@ public:
Counter = 0;
EncounterStatus = NOT_STARTED;
InstanceProgress = INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD;
- events.RescheduleEvent(EVENT_SCENE_FACTION_CHAMPIONS_DEAD, 2500);
+ events.RescheduleEvent(EVENT_SCENE_FACTION_CHAMPIONS_DEAD, 2500ms);
for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid))
- c->DespawnOrUnsummon(15000);
+ c->DespawnOrUnsummon(15s);
NPC_ChampionGUIDs.clear();
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
@@ -491,7 +491,7 @@ public:
InstanceProgress = INSTANCE_PROGRESS_VALKYR_DEAD;
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, 34497, 1); // Lightbane
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, 34496, 1); // Darkbane
- events.RescheduleEvent(EVENT_SCENE_VALKYR_DEAD, 2500);
+ events.RescheduleEvent(EVENT_SCENE_VALKYR_DEAD, 2500ms);
HandleGameObject(GO_EnterGateGUID, true);
SaveToDB();
}
@@ -516,7 +516,7 @@ public:
c->UpdatePosition(Locs[LOC_TIRION_FINAL], true);
c->StopMovingOnCurrentPos();
c->SetFacingTo(Locs[LOC_TIRION_FINAL].GetOrientation());
- events.RescheduleEvent(EVENT_SCENE_501, 20000);
+ events.RescheduleEvent(EVENT_SCENE_501, 20s);
}
if (GameObject* floor = instance->GetGameObject(GO_FloorGUID))
floor->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
@@ -591,7 +591,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_0_01);
- events.RescheduleEvent(EVENT_SCENE_002, 22000);
+ events.RescheduleEvent(EVENT_SCENE_002, 22s);
}
break;
case EVENT_SCENE_002:
@@ -599,7 +599,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_VarianGUID))
c->AI()->Talk(SAY_STAGE_0_03a);
- events.RescheduleEvent(EVENT_SCENE_003, 5000);
+ events.RescheduleEvent(EVENT_SCENE_003, 5s);
}
break;
case EVENT_SCENE_003:
@@ -607,7 +607,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_0_03h);
- events.RescheduleEvent(EVENT_SCENE_004, 8000);
+ events.RescheduleEvent(EVENT_SCENE_004, 8s);
}
break;
case EVENT_SCENE_004:
@@ -620,12 +620,12 @@ public:
HandleGameObject(GO_MainGateGUID, true);
HandleGameObject(GO_EnterGateGUID, false);
- events.RescheduleEvent(EVENT_SUMMON_GORMOK, 1000);
+ events.RescheduleEvent(EVENT_SUMMON_GORMOK, 1s);
if (instance->IsHeroic())
{
- events.RescheduleEvent(EVENT_SCENE_005, 150000);
- events.RescheduleEvent(EVENT_SCENE_006, 340000);
- events.RescheduleEvent(EVENT_NORTHREND_BEASTS_ENRAGE, 520000);
+ events.RescheduleEvent(EVENT_SCENE_005, 150s);
+ events.RescheduleEvent(EVENT_SCENE_006, 340s);
+ events.RescheduleEvent(EVENT_NORTHREND_BEASTS_ENRAGE, 520s);
}
}
break;
@@ -650,8 +650,8 @@ public:
if (Creature* gormok = c->SummonCreature(NPC_GORMOK, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY(), Locs[LOC_BEHIND_GATE].GetPositionZ(), Locs[LOC_BEHIND_GATE].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000))
gormok->GetMotionMaster()->MovePoint(0, Locs[LOC_GATE_FRONT].GetPositionX(), Locs[LOC_GATE_FRONT].GetPositionY(), Locs[LOC_GATE_FRONT].GetPositionZ());
- events.RescheduleEvent(EVENT_GORMOK_ATTACK, 10000);
- events.RescheduleEvent(EVENT_CLOSE_GATE, 6000);
+ events.RescheduleEvent(EVENT_GORMOK_ATTACK, 10s);
+ events.RescheduleEvent(EVENT_CLOSE_GATE, 6s);
}
break;
case EVENT_GORMOK_ATTACK:
@@ -676,8 +676,8 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_0_04);
- events.RescheduleEvent(EVENT_OPEN_GATE, 3000);
- events.RescheduleEvent(EVENT_SUMMON_ACIDMAW_AND_DREADSCALE, 4000);
+ events.RescheduleEvent(EVENT_OPEN_GATE, 3s);
+ events.RescheduleEvent(EVENT_SUMMON_ACIDMAW_AND_DREADSCALE, 4s);
break;
}
case EVENT_SUMMON_ACIDMAW_AND_DREADSCALE:
@@ -690,7 +690,7 @@ public:
acidmaw->AddAura(53421, acidmaw);
}
- events.RescheduleEvent(EVENT_SCENE_005_2, 4000);
+ events.RescheduleEvent(EVENT_SCENE_005_2, 4s);
break;
}
@@ -699,7 +699,7 @@ public:
if (Creature* dreadscale = instance->GetCreature(NPC_DreadscaleGUID))
dreadscale->GetMotionMaster()->MovePoint(0, Locs[LOC_DREADSCALE].GetPositionX(), Locs[LOC_DREADSCALE].GetPositionY(), Locs[LOC_DREADSCALE].GetPositionZ());
- events.RescheduleEvent(EVENT_ACIDMAW_AND_DREADSCALE_ATTACK, 7000);
+ events.RescheduleEvent(EVENT_ACIDMAW_AND_DREADSCALE_ATTACK, 7s);
break;
}
case EVENT_ACIDMAW_AND_DREADSCALE_ATTACK:
@@ -737,8 +737,8 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_0_05);
- events.RescheduleEvent(EVENT_OPEN_GATE, 2000);
- events.RescheduleEvent(EVENT_SUMMON_ICEHOWL, 3000);
+ events.RescheduleEvent(EVENT_OPEN_GATE, 2s);
+ events.RescheduleEvent(EVENT_SUMMON_ICEHOWL, 3s);
break;
}
case EVENT_SUMMON_ICEHOWL:
@@ -747,8 +747,8 @@ public:
if (Creature* icehowl = c->SummonCreature(NPC_ICEHOWL, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY(), Locs[LOC_BEHIND_GATE].GetPositionZ(), Locs[LOC_BEHIND_GATE].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 630000000))
icehowl->GetMotionMaster()->MovePoint(0, Locs[LOC_GATE_FRONT].GetPositionX(), Locs[LOC_GATE_FRONT].GetPositionY(), Locs[LOC_GATE_FRONT].GetPositionZ());
- events.RescheduleEvent(EVENT_ICEHOWL_ATTACK, 10000);
- events.RescheduleEvent(EVENT_CLOSE_GATE, 6000);
+ events.RescheduleEvent(EVENT_ICEHOWL_ATTACK, 10s);
+ events.RescheduleEvent(EVENT_CLOSE_GATE, 6s);
break;
}
case EVENT_ICEHOWL_ATTACK:
@@ -785,7 +785,7 @@ public:
fizzlebang->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
fizzlebang->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY() - 65.0f, Locs[LOC_BEHIND_GATE].GetPositionZ() - 1.0f);
}
- events.RescheduleEvent(EVENT_SCENE_102, 20000);
+ events.RescheduleEvent(EVENT_SCENE_102, 20s);
// move Icehowl to side, can't remove corpse because of loot!
if (Creature* icehowl = instance->GetCreature(NPC_IcehowlGUID))
@@ -803,7 +803,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_FizzlebangGUID))
c->AI()->Talk(SAY_STAGE_1_02);
- events.RescheduleEvent(EVENT_SCENE_103, 11000);
+ events.RescheduleEvent(EVENT_SCENE_103, 11s);
break;
}
case EVENT_SCENE_103:
@@ -816,7 +816,7 @@ public:
NPC_PurpleGroundGUID = trigger->GetGUID();
}
- events.RescheduleEvent(EVENT_SCENE_104, 5000);
+ events.RescheduleEvent(EVENT_SCENE_104, 5s);
break;
}
case EVENT_SCENE_104:
@@ -833,7 +833,7 @@ public:
c->HandleEmoteCommand(EMOTE_STATE_SPELL_PRECAST);
}
- events.RescheduleEvent(EVENT_SUMMON_JARAXXUS, 5000);
+ events.RescheduleEvent(EVENT_SUMMON_JARAXXUS, 5s);
break;
}
case EVENT_SUMMON_JARAXXUS:
@@ -846,7 +846,7 @@ public:
c->AI()->Talk(SAY_STAGE_1_04);
}
- events.RescheduleEvent(EVENT_SCENE_105, 3000);
+ events.RescheduleEvent(EVENT_SCENE_105, 3s);
break;
}
case EVENT_SCENE_105:
@@ -860,7 +860,7 @@ public:
c->DespawnOrUnsummon();
NPC_PortalGUID.Clear();
- events.RescheduleEvent(EVENT_SCENE_106, 10000);
+ events.RescheduleEvent(EVENT_SCENE_106, 10s);
break;
}
case EVENT_SCENE_106:
@@ -868,7 +868,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_JaraxxusGUID))
c->AI()->Talk(SAY_STAGE_1_05);
- events.RescheduleEvent(EVENT_SCENE_107, 5000);
+ events.RescheduleEvent(EVENT_SCENE_107, 5s);
break;
}
case EVENT_SCENE_107:
@@ -876,7 +876,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_FizzlebangGUID))
c->AI()->Talk(SAY_STAGE_1_06);
- events.RescheduleEvent(EVENT_SCENE_108, 800);
+ events.RescheduleEvent(EVENT_SCENE_108, 800ms);
break;
}
case EVENT_SCENE_108:
@@ -891,7 +891,7 @@ public:
}
}
- events.RescheduleEvent(EVENT_SCENE_109, 5000);
+ events.RescheduleEvent(EVENT_SCENE_109, 5s);
break;
}
case EVENT_SCENE_109:
@@ -901,7 +901,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_1_07);
- events.RescheduleEvent(EVENT_JARAXXUS_ATTACK, 6000);
+ events.RescheduleEvent(EVENT_JARAXXUS_ATTACK, 6s);
break;
}
case EVENT_JARAXXUS_ATTACK:
@@ -925,7 +925,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_1_08);
- events.RescheduleEvent(EVENT_SCENE_111, 18000);
+ events.RescheduleEvent(EVENT_SCENE_111, 18s);
break;
}
case EVENT_SCENE_111:
@@ -933,7 +933,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_1_09);
- events.RescheduleEvent(EVENT_SCENE_112, 9000);
+ events.RescheduleEvent(EVENT_SCENE_112, 9s);
break;
}
case EVENT_SCENE_112:
@@ -941,7 +941,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_VarianGUID))
c->AI()->Talk(SAY_STAGE_1_10);
- events.RescheduleEvent(EVENT_SCENE_113, 5000);
+ events.RescheduleEvent(EVENT_SCENE_113, 5s);
break;
}
case EVENT_SCENE_113:
@@ -965,7 +965,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_2_01);
- events.RescheduleEvent(EVENT_SCENE_202, 9000);
+ events.RescheduleEvent(EVENT_SCENE_202, 9s);
break;
}
case EVENT_SCENE_202:
@@ -974,13 +974,13 @@ public:
{
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_2_02h);
- events.RescheduleEvent(EVENT_SCENE_203, 15000);
+ events.RescheduleEvent(EVENT_SCENE_203, 15s);
}
else
{
if (Creature* c = instance->GetCreature(NPC_VarianGUID))
c->AI()->Talk(SAY_STAGE_2_02a);
- events.RescheduleEvent(EVENT_SCENE_203, 18000);
+ events.RescheduleEvent(EVENT_SCENE_203, 18s);
}
break;
}
@@ -989,7 +989,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_2_03);
- events.RescheduleEvent(EVENT_SCENE_204, 5000);
+ events.RescheduleEvent(EVENT_SCENE_204, 5s);
break;
}
case EVENT_SCENE_204:
@@ -998,16 +998,16 @@ public:
{
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_2_04h);
- events.RescheduleEvent(EVENT_SCENE_205, 6000);
+ events.RescheduleEvent(EVENT_SCENE_205, 6s);
}
else
{
if (Creature* c = instance->GetCreature(NPC_VarianGUID))
c->AI()->Talk(SAY_STAGE_2_04a);
- events.RescheduleEvent(EVENT_SCENE_205, 5000);
+ events.RescheduleEvent(EVENT_SCENE_205, 5s);
}
- events.RescheduleEvent(EVENT_SUMMON_CHAMPIONS, 2500);
+ events.RescheduleEvent(EVENT_SUMMON_CHAMPIONS, 2500ms);
break;
}
case EVENT_SCENE_205:
@@ -1089,7 +1089,7 @@ public:
}
HandleGameObject(GO_EnterGateGUID, false);
- events.RescheduleEvent(EVENT_CHAMPIONS_ATTACK, 4000);
+ events.RescheduleEvent(EVENT_CHAMPIONS_ATTACK, 4s);
break;
}
case EVENT_CHAMPIONS_ATTACK:
@@ -1122,7 +1122,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_3_01);
- events.RescheduleEvent(EVENT_SCENE_302, 13000);
+ events.RescheduleEvent(EVENT_SCENE_302, 13s);
break;
}
case EVENT_SCENE_302:
@@ -1130,7 +1130,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_3_02);
- events.RescheduleEvent(EVENT_SCENE_303, 3000);
+ events.RescheduleEvent(EVENT_SCENE_303, 3s);
break;
}
case EVENT_SCENE_303:
@@ -1145,7 +1145,7 @@ public:
t->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_LEFT].GetPositionX(), Locs[LOC_VALKYR_DEST_LEFT].GetPositionY(), Locs[LOC_VALKYR_DEST_LEFT].GetPositionZ());
}
- events.RescheduleEvent(EVENT_SCENE_304, 6250);
+ events.RescheduleEvent(EVENT_SCENE_304, 6250ms);
break;
}
case EVENT_SCENE_304:
@@ -1157,7 +1157,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_DarkbaneGUID))
c->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionX(), Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionY(), Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionZ());
- events.RescheduleEvent(EVENT_VALKYRIES_ATTACK, 3250);
+ events.RescheduleEvent(EVENT_VALKYRIES_ATTACK, 3250ms);
break;
}
case EVENT_VALKYRIES_ATTACK:
@@ -1189,7 +1189,7 @@ public:
if (Creature* c = instance->GetCreature(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_VarianGUID : NPC_GarroshGUID))
c->AI()->Talk((GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_STAGE_3_03a : SAY_STAGE_3_03h));
- events.RescheduleEvent(EVENT_SCENE_401, 60000);
+ events.RescheduleEvent(EVENT_SCENE_401, 60s);
break;
}
case EVENT_SCENE_401:
@@ -1197,7 +1197,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_4_01);
- events.RescheduleEvent(EVENT_SCENE_402, 20000);
+ events.RescheduleEvent(EVENT_SCENE_402, 20s);
break;
}
case EVENT_SCENE_402:
@@ -1214,7 +1214,7 @@ public:
t->SetVisible(false);
}
- events.RescheduleEvent(EVENT_SCENE_403, 2000);
+ events.RescheduleEvent(EVENT_SCENE_403, 2s);
break;
}
case EVENT_SCENE_403:
@@ -1226,7 +1226,7 @@ public:
t->CastSpell(t, 51807, true);
}
- events.RescheduleEvent(EVENT_SCENE_404, 2000);
+ events.RescheduleEvent(EVENT_SCENE_404, 2s);
break;
}
case EVENT_SCENE_404:
@@ -1238,7 +1238,7 @@ public:
c->GetMotionMaster()->MovePoint(0, Locs[LOC_ARTHAS]);
}
- events.RescheduleEvent(EVENT_SCENE_405, 3000);
+ events.RescheduleEvent(EVENT_SCENE_405, 3s);
break;
}
case EVENT_SCENE_405:
@@ -1246,7 +1246,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_TirionGUID))
c->AI()->Talk(SAY_STAGE_4_03);
- events.RescheduleEvent(EVENT_SCENE_406, 7000);
+ events.RescheduleEvent(EVENT_SCENE_406, 7s);
break;
}
case EVENT_SCENE_406:
@@ -1257,8 +1257,8 @@ public:
c->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
}
- events.RescheduleEvent(EVENT_SCENE_406_2, 2500);
- events.RescheduleEvent(EVENT_SCENE_407, 12000);
+ events.RescheduleEvent(EVENT_SCENE_406_2, 2500ms);
+ events.RescheduleEvent(EVENT_SCENE_407, 12s);
break;
}
case EVENT_SCENE_406_2:
@@ -1276,7 +1276,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_LichKingGUID))
c->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
- events.RescheduleEvent(EVENT_SCENE_408, 4000);
+ events.RescheduleEvent(EVENT_SCENE_408, 4s);
break;
}
case EVENT_SCENE_408:
@@ -1286,7 +1286,7 @@ public:
c->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
}
- events.RescheduleEvent(EVENT_SCENE_409, 1500);
+ events.RescheduleEvent(EVENT_SCENE_409, 1500ms);
break;
}
case EVENT_SCENE_409:
@@ -1305,7 +1305,7 @@ public:
SpawnAnubArak();
}
- events.RescheduleEvent(EVENT_SCENE_410, 2000);
+ events.RescheduleEvent(EVENT_SCENE_410, 2s);
break;
}
case EVENT_SCENE_410:
@@ -1314,7 +1314,7 @@ public:
{
c->SetVisible(true);
c->AI()->Talk(SAY_STAGE_4_05);
- c->DespawnOrUnsummon(0);
+ c->DespawnOrUnsummon(0ms);
}
break;
@@ -1328,7 +1328,7 @@ public:
c->SummonGameObject(195682, 668.15f, 134.57f, 142.12f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 630000000);
}
- events.RescheduleEvent(EVENT_SCENE_502, 20000);
+ events.RescheduleEvent(EVENT_SCENE_502, 20s);
break;
}
case EVENT_SCENE_502:
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
index edc742da4b..8b107342b6 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
@@ -351,8 +351,7 @@ enum EventSpells
SPELL_JORMUNGAR_ACHIEV = 68523,
SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184,
SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620,
- SPELL_TRAITOR_KING_10 = 68186,
- SPELL_TRAITOR_KING_25 = 68515,
+ SPELL_TRAITOR_KING = 68186,
SPELL_PORTAL_TO_DALARAN = 53142,
};
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
index b4bbcfc560..a1e01ee32b 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
@@ -167,7 +167,7 @@ public:
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index ac241e409e..b36e991d54 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -33,7 +33,6 @@ enum Yells
enum Spells
{
SPELL_CURSE_OF_LIFE = 49527,
- SPELL_RAIN_OF_FIRE = 49518,
SPELL_SHADOW_VOLLEY = 49528,
// flesh spells
@@ -56,7 +55,6 @@ enum Misc
ACTION_TURN_BONES = 1,
EVENT_SPELL_CURSE_OF_LIFE = 1,
- EVENT_SPELL_RAIN_OF_FIRE = 2,
EVENT_SPELL_SHADOW_VOLLEY = 3,
EVENT_SPELL_EYE_BEAM = 4,
EVENT_SPELL_LIGHTNING_BREATH = 5,
@@ -97,14 +95,13 @@ public:
Talk(SAY_AGGRO);
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 5s);
- events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 14s, 18s);
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s);
events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s);
}
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -146,17 +143,11 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_SPELL_CURSE_OF_LIFE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
- me->CastSpell(target, SPELL_CURSE_OF_LIFE, false);
+ DoCastRandomTarget(SPELL_CURSE_OF_LIFE, 0, 30.0f, false);
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 13s);
break;
- case EVENT_SPELL_RAIN_OF_FIRE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
- me->CastSpell(target, SPELL_RAIN_OF_FIRE, false);
- events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 16s);
- break;
case EVENT_SPELL_SHADOW_VOLLEY:
- me->CastSpell(me, SPELL_SHADOW_VOLLEY, false);
+ DoCastAOE(SPELL_SHADOW_VOLLEY);
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 9s);
break;
case EVENT_SPELL_TURN_FLESH:
@@ -173,9 +164,8 @@ public:
events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s);
break;
case EVENT_TURN_FLESH_REAL:
- me->CastSpell(me, SPELL_DUMMY, true);
-
- me->GetMotionMaster()->MoveChase(me->GetVictim());
+ DoCastSelf(SPELL_DUMMY, true);
+ me->ResumeChasingVictim();
events.ScheduleEvent(EVENT_SPELL_EYE_BEAM, 11s);
events.ScheduleEvent(EVENT_SPELL_LIGHTNING_BREATH, 3s);
events.ScheduleEvent(EVENT_SPELL_POISON_CLOUD, 6s);
@@ -199,7 +189,6 @@ public:
me->CastSpell(me, SPELL_CLEAR_GIFT, true);
events.Reset();
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 1s);
- events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 12s, 14s);
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s);
break;
}
@@ -249,7 +238,6 @@ class spell_tharon_ja_dummy_aura : public AuraScript
{
PreventDefaultAction();
GetUnitOwner()->GetThreatMgr().ResetAllThreat();
- GetUnitOwner()->GetMotionMaster()->Clear();
GetUnitOwner()->CastSpell((Unit*)nullptr, SPELL_TURN_BONES, false);
GetUnitOwner()->GetAI()->DoAction(ACTION_TURN_BONES);
}
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index 1de17ba57b..78defb7061 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -102,7 +102,7 @@ public:
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -214,7 +214,7 @@ class spell_trollgore_corpse_explode_aura : public AuraScript
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Creature* target = GetTarget()->ToCreature())
- target->DespawnOrUnsummon(1);
+ target->DespawnOrUnsummon(1ms);
}
void Register() override
diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
index a8f22adf87..e5190c5ed0 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
@@ -89,7 +89,7 @@ class spell_dtk_raise_dead_aura : public AuraScript
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetUnitOwner()->ToCreature()->DespawnOrUnsummon(1);
+ GetUnitOwner()->ToCreature()->DespawnOrUnsummon(1ms);
GetUnitOwner()->SummonCreature(NPC_RISEN_DRAKKARI_WARRIOR, *GetUnitOwner());
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index c8d14deaa9..80d04808df 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -115,7 +115,7 @@ public:
me->GetMotionMaster()->MoveIdle();
me->CastSpell(me, SPELL_TELEPORT, false);
events.CancelEvent(EVENT_SPELL_CORRUPT_SOUL);
- events.DelayEvents(6000);
+ events.DelayEvents(6s);
events.RescheduleEvent(EVENT_SPELL_FEAR, 8s, 14s);
}
}
@@ -242,7 +242,7 @@ public:
{
me->GetMotionMaster()->MoveIdle();
me->CastSpell(b, SPELL_CONSUME_SOUL, true);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index b848dd2850..c4160dd523 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -225,14 +225,14 @@ public:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
me->CastSpell(target, SPELL_WELL_OF_SOULS, false);
events.Repeat(25s, 30s);
- events.DelayEventsToMax(4000, 0);
+ events.DelayEventsToMax(4s, 0);
break;
case EVENT_SPELL_UNLEASHED_SOULS:
me->CastSpell(me, SPELL_UNLEASHED_SOULS, false);
Talk(SAY_FACE_UNLEASH_SOUL);
Talk(EMOTE_UNLEASH_SOUL);
events.Repeat(30s, 40s);
- events.DelayEventsToMax(5000, 0);
+ events.DelayEventsToMax(5s, 0);
me->setAttackTimer(BASE_ATTACK, 5500);
break;
case EVENT_SPELL_WAILING_SOULS:
@@ -241,7 +241,7 @@ public:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
me->CastCustomSpell(SPELL_WAILING_SOULS_TARGETING, SPELLVALUE_MAX_TARGETS, 1, target, false);
events.Repeat(80s);
- events.DelayEventsToMax(20000, 0);
+ events.DelayEventsToMax(20s, 0);
break;
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
index a3e7c184ad..c2eb0864b9 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
@@ -140,7 +140,7 @@ public:
{
for (int8 i = 0; outroPositions[i].entry[GetTeamIdInInstance()] != 0; ++i)
if (Creature* summon = instance->SummonCreature(outroPositions[i].entry[GetTeamIdInInstance()], outroPositions[i].startPosition))
- summon->GetMotionMaster()->MovePath(outroPositions[i].pathId, false);
+ summon->GetMotionMaster()->MoveWaypoint(outroPositions[i].pathId, false);
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
index d5e01c2da0..ba89cbbebf 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
@@ -18,6 +18,7 @@
#include "CreatureScript.h"
#include "halls_of_reflection.h"
#include "ScriptedCreature.h"
+#include "SpellMgr.h"
enum Yells
{
@@ -44,7 +45,7 @@ enum Events
EVENT_UNROOT,
};
-const uint32 hopelessnessId[3][2] = { {72395, 72390}, {72396, 72391}, {72397, 72393} };
+const uint32 hopelessnessId[3] = { 72395, 72396, 72397 };
class boss_falric : public CreatureScript
{
@@ -131,7 +132,7 @@ public:
Talk(SAY_DEFILING_HORROR);
me->CastSpell((Unit*)nullptr, SPELL_DEFILING_HORROR, false);
me->SetControlled(true, UNIT_STATE_ROOT);
- events.DelayEventsToMax(5000, 0);
+ events.DelayEventsToMax(5s, 0);
events.ScheduleEvent(EVENT_UNROOT, 4s);
events.ScheduleEvent(EVENT_DEFILING_HORROR, 20s);
break;
@@ -143,8 +144,9 @@ public:
if ((uiHopelessnessCount == 0 && HealthBelowPct(67)) || (uiHopelessnessCount == 1 && HealthBelowPct(34)) || (uiHopelessnessCount == 2 && HealthBelowPct(11)))
{
if (uiHopelessnessCount)
- me->RemoveOwnedAura(hopelessnessId[uiHopelessnessCount - 1][DUNGEON_MODE(0, 1)]);
- me->CastSpell((Unit*)nullptr, hopelessnessId[uiHopelessnessCount][DUNGEON_MODE(0, 1)], true);
+ me->RemoveOwnedAura(sSpellMgr->GetSpellIdForDifficulty(hopelessnessId[uiHopelessnessCount - 1], me));
+
+ me->CastSpell((Unit*)nullptr, hopelessnessId[uiHopelessnessCount], true);
++uiHopelessnessCount;
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index c4b0bdcc7d..db638f0a06 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -571,7 +571,7 @@ public:
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), true);
pLichKing->SetVisible(true);
- pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveMidlelThronePos, false);
+ pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveMidlelThronePos, FORCED_MOVEMENT_NONE, 0.f, false);
}
@@ -618,7 +618,7 @@ public:
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
{
pLichKing->SetVisible(true);
- pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos, false);
+ pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos, FORCED_MOVEMENT_NONE, 0.f, false);
}
events.ScheduleEvent(EVENT_INTRO_LK_2_1, 1s);
break;
@@ -658,7 +658,7 @@ public:
pLichKing->SendMovementFlagUpdate();
pLichKing->CastSpell(pLichKing, SPELL_FROSTMOURNE_EQUIP, false);
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), false);
- events.ScheduleEvent(EVENT_INTRO_LK_4_3, 1750);
+ events.ScheduleEvent(EVENT_INTRO_LK_4_3, 1750ms);
}
events.ScheduleEvent(EVENT_INTRO_LK_5, 6s);
break;
@@ -709,7 +709,7 @@ public:
case EVENT_INTRO_LK_5_2:
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
{
- pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
+ pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, FORCED_MOVEMENT_NONE, 0.f, false);
}
break;
@@ -763,11 +763,11 @@ public:
{
Talk(SAY_SYLVANAS_INTRO_END);
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
- me->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
+ me->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, FORCED_MOVEMENT_NONE, 0.f, false);
}
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
{
- pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk1, false);
+ pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk1, FORCED_MOVEMENT_NONE, 0.f, false);
}
events.ScheduleEvent(EVENT_INTRO_LK_10, 1s + 500ms);
break;
@@ -775,7 +775,7 @@ public:
case EVENT_INTRO_LK_10:
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
{
- pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk2, false);
+ pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk2, FORCED_MOVEMENT_NONE, 0.f, false);
}
events.ScheduleEvent(EVENT_INTRO_LK_11, 2s);
@@ -784,7 +784,7 @@ public:
case EVENT_INTRO_LK_11:
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
{
- pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk3, false);
+ pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLk3, FORCED_MOVEMENT_NONE, 0.f, false);
}
events.ScheduleEvent(EVENT_INTRO_LK_12, 5s + 500ms);
break;
@@ -796,7 +796,7 @@ public:
}
if (Creature* pLoralen = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
{
- pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLkFinal, false);
+ pLoralen->GetMotionMaster()->MovePoint(0, LoralenFollowLkFinal, FORCED_MOVEMENT_NONE, 0.f, false);
}
events.ScheduleEvent(EVENT_INTRO_LK_13, 2s);
break;
@@ -1153,7 +1153,7 @@ public:
ScriptedAI::EnterEvadeMode(why);
if (me->IsSummon())
- me->ToTempSummon()->DespawnOrUnsummon(1);
+ me->ToTempSummon()->DespawnOrUnsummon(1ms);
}
};
};
@@ -1732,7 +1732,7 @@ public:
{
++reqKillCount;
- if (events.GetNextEventTime(EVENT_DECREASE_REQ_COUNT_BY_100))
+ if (events.HasTimeUntilEvent(EVENT_DECREASE_REQ_COUNT_BY_100))
events.RescheduleEvent(EVENT_DECREASE_REQ_COUNT_BY_100, 10s);
summons.Summon(s);
s->SetHomePosition(PathWaypoints[WP_STOP[currentWall + 1]]);
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 5b1e99ab34..a22b42a61e 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -38,7 +38,7 @@ public:
_owner.GetMotionMaster()->Clear();
_owner.SetVisible(true);
_owner.NearTeleportTo(5300.53f, 1987.80f, 707.70f, 3.89f);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 2), _owner.m_Events.CalculateTime(1000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, 2), 1s);
break;
case 2:
_owner.AI()->Talk(SAY_BATTERED_HILT_HALT);
@@ -52,12 +52,12 @@ public:
{
quel->AI()->Talk(EMOTE_QUEL_SPAWN);
}
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 4), _owner.m_Events.CalculateTime(3500));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, 4), 3500ms);
break;
case 4:
_owner.SetWalk(false);
_owner.GetMotionMaster()->MovePoint(0, 5337.53f, 1981.21f, 709.32f);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 5), _owner.m_Events.CalculateTime(6000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, 5), 6s);
break;
case 5:
_owner.SetFacingTo(2.82f);
@@ -66,7 +66,7 @@ public:
case 6:
if (InstanceScript* instance = _owner.GetInstanceScript())
instance->SetData(DATA_BATTERED_HILT, 6);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 7), _owner.m_Events.CalculateTime(2000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, 7), 2s);
break;
case 7:
if (InstanceScript* instance = _owner.GetInstanceScript())
@@ -77,7 +77,7 @@ public:
{
quel->AI()->Talk(EMOTE_QUEL_PREPARE);
}
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, 8), _owner.m_Events.CalculateTime(4000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, 8), 4s);
break;
case 8:
_owner.SetReactState(REACT_AGGRESSIVE);
@@ -87,23 +87,23 @@ public:
break;
case 9:
_owner.AI()->Talk(SAY_BATTERED_HILT_OUTRO1);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, _eventId + 1), _owner.m_Events.CalculateTime(11000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, _eventId + 1), 11s);
break;
case 10:
_owner.AI()->Talk(SAY_BATTERED_HILT_OUTRO2);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, _eventId + 1), _owner.m_Events.CalculateTime(7500));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, _eventId + 1), 7500ms);
break;
case 11:
_owner.AI()->Talk(SAY_BATTERED_HILT_OUTRO3);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, _eventId + 1), _owner.m_Events.CalculateTime(8000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, _eventId + 1), 8s);
break;
case 12:
_owner.AI()->Talk(SAY_BATTERED_HILT_OUTRO4);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, _eventId + 1), _owner.m_Events.CalculateTime(5000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, _eventId + 1), 5s);
break;
case 13:
_owner.CastSpell((Unit*)nullptr, 73036, true);
- _owner.m_Events.AddEvent(new UtherBatteredHiltEvent(_owner, _eventId + 1), _owner.m_Events.CalculateTime(3000));
+ _owner.m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(_owner, _eventId + 1), 3s);
break;
case 14:
{
@@ -594,7 +594,7 @@ public:
if (Creature* c = instance->GetCreature(NPC_AltarBunnyGUID))
c->CastSpell(c, 70720, true);
if (Creature* c = instance->GetCreature(NPC_UtherGUID))
- c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 1), c->m_Events.CalculateTime(3000));
+ c->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*c, 1), 3s);
break;
case 3:
if ((BatteredHiltStatus & BHSF_STARTED) == 0 || (BatteredHiltStatus & BHSF_THROWN))
@@ -602,7 +602,7 @@ public:
BatteredHiltStatus |= BHSF_THROWN;
if (Creature* c = instance->GetCreature(NPC_UtherGUID))
{
- c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 3), c->m_Events.CalculateTime(5500));
+ c->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*c, 3), 5500ms);
}
break;
case 4:
@@ -614,7 +614,7 @@ public:
break;
case 5:
if (Creature* c = instance->GetCreature(NPC_UtherGUID))
- c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 6), c->m_Events.CalculateTime(3000));
+ c->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*c, 6), 3s);
break;
case 6:
if (Creature* c = instance->GetCreature(NPC_QuelDelarGUID))
@@ -726,7 +726,7 @@ public:
c->SetStandState(UNIT_STAND_STATE_STAND);
c->SetWalk(false);
c->GetMotionMaster()->MovePoint(0, 5313.92f, 1989.36f, 707.70f);
- c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 9), c->m_Events.CalculateTime(7000));
+ c->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*c, 9), 7s);
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index 8d60280251..3b145dc891 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -19,7 +19,9 @@
#include "CreatureScript.h"
#include "Player.h"
#include "ScriptedCreature.h"
+#include "SharedDefines.h"
#include "SpellAuras.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "pit_of_saron.h"
@@ -54,11 +56,11 @@ enum Spells
SPELL_CHILLING_WAVE = 68778,
SPELL_DEEP_FREEZE = 70381,
-};
-#define SPELL_FORGE_BLADE RAID_MODE(68774, 70334)
-#define SPELL_FORGE_MACE RAID_MODE(68785, 70335)
-#define SPELL_SARONITE_TRIGGERED RAID_MODE(68789, 70851)
+ SPELL_FORGE_BLADE = 68774,
+ SPELL_FORGE_MACE = 68785,
+ SPELL_SARONITE_TRIGGERED = 68789,
+};
enum Events
{
@@ -112,7 +114,7 @@ public:
Talk(SAY_AGGRO);
DoZoneInCombat();
- events.RescheduleEvent(EVENT_SPELL_THROW_SARONITE, 5000ms, 7500ms);
+ events.RescheduleEvent(EVENT_SPELL_THROW_SARONITE, 5s, 7500ms);
if (pInstance)
pInstance->SetData(DATA_GARFROST, IN_PROGRESS);
@@ -154,21 +156,45 @@ public:
if (phase == 1)
{
me->SetControlled(true, UNIT_STATE_ROOT);
- me->CastSpell(me, SPELL_FORGE_BLADE, false);
+ if (me->CastSpell(me, SPELL_FORGE_BLADE, false) == SPELL_CAST_OK)
+ {
+ events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10s);
+ SetEquipmentSlots(false, EQUIP_ID_SWORD);
+ me->SetReactState(REACT_AGGRESSIVE);
+ me->SetControlled(false, UNIT_STATE_ROOT);
+ me->DisableRotate(false);
+ if (me->GetVictim())
+ {
+ AttackStart(me->GetVictim());
+ me->SetTarget(me->GetVictim()->GetGUID());
+ }
+ }
Talk(SAY_HP_66);
}
else if (phase == 2)
{
me->SetControlled(true, UNIT_STATE_ROOT);
- me->RemoveAurasDueToSpell(SPELL_FORGE_BLADE);
- me->CastSpell(me, SPELL_FORGE_MACE, false);
+ me->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_FORGE_BLADE, me));
+ if (me->CastSpell(me, SPELL_FORGE_MACE, false) == SPELL_CAST_OK)
+ {
+ events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s);
+ SetEquipmentSlots(false, EQUIP_ID_MACE);
+ me->SetReactState(REACT_AGGRESSIVE);
+ me->SetControlled(false, UNIT_STATE_ROOT);
+ me->DisableRotate(false);
+ if (me->GetVictim())
+ {
+ AttackStart(me->GetVictim());
+ me->SetTarget(me->GetVictim()->GetGUID());
+ }
+ }
Talk(SAY_HP_33);
}
}
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{
- if (spell->Id == uint32(SPELL_SARONITE_TRIGGERED))
+ if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SARONITE_TRIGGERED, me))
{
if (bCanSayBoulderHit)
{
@@ -176,32 +202,6 @@ public:
Talk(SAY_BOULDER_HIT);
}
}
- if (spell->Id == uint32(SPELL_FORGE_BLADE))
- {
- events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10000);
- SetEquipmentSlots(false, EQUIP_ID_SWORD);
- me->SetReactState(REACT_AGGRESSIVE);
- me->SetControlled(false, UNIT_STATE_ROOT);
- me->DisableRotate(false);
- if (me->GetVictim())
- {
- AttackStart(me->GetVictim());
- me->SetTarget(me->GetVictim()->GetGUID());
- }
- }
- else if (spell->Id == uint32(SPELL_FORGE_MACE))
- {
- events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s);
- SetEquipmentSlots(false, EQUIP_ID_MACE);
- me->SetReactState(REACT_AGGRESSIVE);
- me->SetControlled(false, UNIT_STATE_ROOT);
- me->DisableRotate(false);
- if (me->GetVictim())
- {
- AttackStart(me->GetVictim());
- me->SetTarget(me->GetVictim()->GetGUID());
- }
- }
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
index c5d341dc9f..6bf24b4ab6 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
@@ -298,7 +298,7 @@ public:
if (a == 1)
{
me->setActive(true);
- events.RescheduleEvent(20, 0);
+ events.RescheduleEvent(20, 0ms);
}
}
@@ -369,7 +369,7 @@ public:
if (pInstance)
{
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
- c->GetMotionMaster()->MovePath(PATH_BEGIN_VALUE + 10, false);
+ c->GetMotionMaster()->MoveWaypoint(PATH_BEGIN_VALUE + 10, false);
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_2 : SAY_SYLVANAS_KRICK_2);
}
@@ -404,7 +404,7 @@ public:
case 8:
Talk(SAY_OUTRO_KRICK_4);
- events.RescheduleEvent(9, 1500);
+ events.RescheduleEvent(9, 1500ms);
break;
case 9:
if (pInstance)
@@ -430,7 +430,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
c->AI()->Talk(SAY_TYRANNUS_KRICK_2);
- events.RescheduleEvent(11, 9000);
+ events.RescheduleEvent(11, 9s);
break;
case 11:
if (pInstance)
@@ -440,7 +440,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
{
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_3 : SAY_SYLVANAS_KRICK_3);
- c->GetMotionMaster()->MovePath(PATH_BEGIN_VALUE + 11, false);
+ c->GetMotionMaster()->MoveWaypoint(PATH_BEGIN_VALUE + 11, false);
}
}
me->setActive(false);
@@ -506,7 +506,7 @@ class spell_exploding_orb_auto_grow_aura : public AuraScript
target->RemoveAurasDueToSpell(SPELL_AUTO_GROW);
target->RemoveAurasDueToSpell(SPELL_EXPLODING_ORB_VISUAL);
if (target->IsCreature())
- target->ToCreature()->DespawnOrUnsummon(2000);
+ target->ToCreature()->DespawnOrUnsummon(2s);
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 1ea12a8314..007e52c576 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -108,7 +108,7 @@ public:
{
c->RemoveAura(46598);
c->GetMotionMaster()->Clear();
- c->GetMotionMaster()->MovePath(PATH_BEGIN_VALUE + 18, true);
+ c->GetMotionMaster()->MoveWaypoint(PATH_BEGIN_VALUE + 18, true);
}
me->SetHomePosition(exitPos);
me->GetMotionMaster()->MoveJump(exitPos, 10.0f, 2.0f);
@@ -161,7 +161,7 @@ public:
events.RescheduleEvent(EVENT_SPELL_UNHOLY_POWER, 1s);
break;
}
- events.RepeatEvent(3000);
+ events.Repeat(3s);
break;
case EVENT_SPELL_UNHOLY_POWER:
Talk(SAY_DARK_MIGHT);
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
index a83777d45f..e8a2d9253a 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
@@ -341,7 +341,7 @@ public:
Unit::Kill(c, c, false);
}
- c->DespawnOrUnsummon(10000);
+ c->DespawnOrUnsummon(10s);
}
pInstance->SetData(DATA_INSTANCE_PROGRESS, INSTANCE_PROGRESS_FINISHED_INTRO);
}
@@ -551,7 +551,7 @@ public:
while (FBSData[i].entry)
{
if (Creature* c = me->SummonCreature(FBSData[i].entry, 688.69f + i * 1.8f, FBSSpawnPos.GetPositionY() + (float)irand(-2, 2), FBSSpawnPos.GetPositionZ(), 3 * M_PI / 2))
- c->GetMotionMaster()->MovePath(FBSData[i].pathId, false);
+ c->GetMotionMaster()->MoveWaypoint(FBSData[i].pathId, false);
++i;
}
events.RescheduleEvent(2, 3s);
@@ -674,14 +674,14 @@ public:
switch (events.ExecuteEvent())
{
case 1:
- me->GetMotionMaster()->MovePoint(2, PTSTyrannusWaitPos1, false);
+ me->GetMotionMaster()->MovePoint(2, PTSTyrannusWaitPos1, FORCED_MOVEMENT_NONE, 0.f, false);
break;
case 2:
me->SetFacingTo(PTSTyrannusWaitPos1.GetOrientation());
me->setActive(false);
break;
case 3:
- me->GetMotionMaster()->MovePoint(3, PTSTyrannusWaitPos2, false);
+ me->GetMotionMaster()->MovePoint(3, PTSTyrannusWaitPos2, FORCED_MOVEMENT_NONE, 0.f, false);
break;
case 4:
me->SetFacingTo(PTSTyrannusWaitPos2.GetOrientation());
@@ -690,7 +690,7 @@ public:
me->GetMotionMaster()->MoveTakeoff(10, me->GetPositionX() + 2.0f * cos(me->GetOrientation()), me->GetPositionY() + 2.0f * std::sin(me->GetOrientation()), me->GetPositionZ() + 30.0f, 7.0f);
break;
case 6:
- me->GetMotionMaster()->MovePoint(4, PTSTyrannusWaitPos3, false);
+ me->GetMotionMaster()->MovePoint(4, PTSTyrannusWaitPos3, FORCED_MOVEMENT_NONE, 0.f, false);
break;
case 30:
{
@@ -1082,7 +1082,7 @@ public:
s->AddThreat(c, 0.0f);
}
}
- events.RescheduleEvent(10, 3000);
+ events.RescheduleEvent(10, 3s);
break;
}
@@ -1200,16 +1200,16 @@ public:
switch (id)
{
- case 0:
+ case 1:
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_OUTRO_2 : SAY_SYLVANAS_OUTRO_2);
break;
- case 1:
+ case 2:
if (me->GetEntry() == NPC_JAINA_PART2)
{
Talk(SAY_JAINA_OUTRO_3);
}
break;
- case 6:
+ case 7:
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (GameObject* g = me->FindNearestGameObject(GO_HOR_PORTCULLIS, 50.0f))
g->SetGoState(GO_STATE_ACTIVE);
@@ -1284,7 +1284,7 @@ public:
events.RescheduleEvent(8, 2s);
break;
case 8:
- me->GetMotionMaster()->MovePath(me->GetEntry() == NPC_JAINA_PART2 ? PATH_BEGIN_VALUE + 16 : PATH_BEGIN_VALUE + 17, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() == NPC_JAINA_PART2 ? PATH_BEGIN_VALUE + 16 : PATH_BEGIN_VALUE + 17, false);
break;
case 10:
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
@@ -1355,7 +1355,7 @@ public:
}
}
if (minDist < 200.0f * 200.0f)
- _owner.GetMotionMaster()->MovePoint(0, slaveFreePos[pointId], true, false);
+ _owner.GetMotionMaster()->MovePoint(0, slaveFreePos[pointId], FORCED_MOVEMENT_NONE, 0.f, true, false);
return true;
}
@@ -1381,9 +1381,9 @@ class spell_pos_slave_trigger_closest : public SpellScript
target->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
if (Creature* c = target->ToCreature())
{
- c->DespawnOrUnsummon(7000);
+ c->DespawnOrUnsummon(7s);
c->AI()->Talk(0, p);
- c->m_Events.AddEvent(new SlaveRunEvent(*c), c->m_Events.CalculateTime(3000));
+ c->m_Events.AddEventAtOffset(new SlaveRunEvent(*c), 3s);
}
}
}
@@ -1406,7 +1406,7 @@ class spell_pos_rimefang_frost_nova : public SpellScript
{
Unit::Kill(caster, target);
if (target->IsCreature())
- target->ToCreature()->DespawnOrUnsummon(30000);
+ target->ToCreature()->DespawnOrUnsummon(30s);
}
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
index 18a30b7dbc..7e1a25d7d8 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
@@ -125,17 +125,18 @@ public:
void Reset() override
{
BossAI::Reset();
- for (uint8 i = 0; i < 5; i++)
- me->SummonCreature(NPC_LIVING_MOJO, mojoPosition[i].GetPositionX(), mojoPosition[i].GetPositionY(), mojoPosition[i].GetPositionZ(), 0, TEMPSUMMON_MANUAL_DESPAWN, 0);
-
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- }
-
- void InitializeAI() override
- {
- BossAI::InitializeAI();
- me->CastSpell(me, SPELL_FREEZE_ANIM, true);
+ if (!me->IsInEvadeMode())
+ {
+ me->CastSpell(me, SPELL_FREEZE_ANIM, true);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ for (const auto & i : mojoPosition)
+ me->SummonCreature(NPC_LIVING_MOJO, i.GetPositionX(), i.GetPositionY(), i.GetPositionZ(), 0, TEMPSUMMON_MANUAL_DESPAWN, 0);
+ }
+ else
+ {
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ }
}
void JustReachedHome() override
@@ -144,9 +145,9 @@ public:
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
}
- void JustEngagedWith(Unit* who) override
+ void ScheduleTasks() override
{
- BossAI::JustEngagedWith(who);
+ events.ScheduleEvent(EVENT_COLOSSUS_START_FIGHT, 1s);
events.ScheduleEvent(EVENT_COLOSSUS_MIGHTY_BLOW, 10s);
events.ScheduleEvent(EVENT_COLOSSUS_MORTAL_STRIKE, 7s);
events.ScheduleEvent(EVENT_COLOSSUS_HEALTH_1, 1s);
@@ -159,8 +160,8 @@ public:
{
summon->SetRegeneratingHealth(false);
summon->SetReactState(REACT_PASSIVE);
- summon->m_Events.AddEvent(new RestoreFight(summon), summon->m_Events.CalculateTime(3000));
- if (events.GetNextEventTime(EVENT_COLOSSUS_HEALTH_2) == 0)
+ summon->m_Events.AddEventAtOffset(new RestoreFight(summon), 3s);
+ if (!events.HasTimeUntilEvent(EVENT_COLOSSUS_HEALTH_2))
{
summon->SetHealth(summon->GetMaxHealth() / 2);
summon->LowerPlayerDamageReq(summon->GetMaxHealth() / 2);
@@ -183,6 +184,7 @@ public:
summons.Despawn(summon);
if (summon->GetEntry() == NPC_DRAKKARI_ELEMENTAL)
{
+ me->SetHealth(me->GetMaxHealth() / 2);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
if (me->GetVictim())
@@ -231,7 +233,7 @@ public:
events.ScheduleEvent(EVENT_COLOSSUS_HEALTH_1, 1s);
break;
case EVENT_COLOSSUS_HEALTH_2:
- if (me->HealthBelowPct(21))
+ if (me->HealthBelowPct(2))
{
me->CastSpell(me, SPELL_EMERGE, false);
me->CastSpell(me, SPELL_EMERGE_SUMMON, true);
@@ -301,12 +303,12 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_ELEMENTAL_HEALTH:
- if (me->HealthBelowPct(51))
+ if (me->HealthBelowPct(56))
{
me->CastSpell(me, SPELL_FACE_ME, true);
me->CastSpell(me, SPELL_SURGE_VISUAL, true);
me->CastSpell(me, SPELL_MERGE, false);
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
events.Reset();
break;
}
@@ -315,7 +317,7 @@ public:
case EVENT_ELEMENTAL_SURGE:
Talk(SAY_SURGE);
me->CastSpell(me, SPELL_SURGE_VISUAL, true);
- me->CastSpell(me->GetVictim(), SPELL_SURGE, false);
+ DoCastRandomTarget(SPELL_SURGE, 0, 40, true, false, true);
events.ScheduleEvent(EVENT_ELEMENTAL_SURGE, 15s);
break;
case EVENT_ELEMENTAL_VOLLEY:
@@ -380,7 +382,7 @@ public:
{
me->SetReactState(REACT_PASSIVE);
me->GetMotionMaster()->MoveCharge(1672.96f, 743.488f, 143.338f, 7.0f, POINT_MERGE);
- me->DespawnOrUnsummon(1200);
+ me->DespawnOrUnsummon(1200ms);
}
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp
index 5a4dbcd2cb..17d923c5e1 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp
@@ -17,6 +17,7 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "gundrak.h"
enum Spells
@@ -57,7 +58,7 @@ public:
void InitializeAI() override
{
BossAI::InitializeAI();
- me->GetMotionMaster()->MovePoint(POINT_START, 1638.55f, 919.76f, 104.95f, false);
+ me->GetMotionMaster()->MovePoint(POINT_START, 1638.55f, 919.76f, 104.95f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
me->SetHomePosition(1642.712f, 934.646f, 107.205f, 0.767f);
me->SetReactState(REACT_PASSIVE);
}
@@ -71,6 +72,15 @@ public:
}
}
+ void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ {
+ if (spell->Id == SPELL_ECK_SPRING)
+ {
+ me->GetThreatMgr().ResetAllThreat();
+ me->AddThreat(target, 1.0f);
+ }
+ }
+
void Reset() override
{
BossAI::Reset();
@@ -81,8 +91,8 @@ public:
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_ECK_BERSERK, 60s, 90s);
events.ScheduleEvent(EVENT_ECK_BITE, 5s);
- events.ScheduleEvent(EVENT_ECK_SPIT, 10s);
- events.ScheduleEvent(EVENT_ECK_SPRING, 8s);
+ events.ScheduleEvent(EVENT_ECK_SPIT, 10s, 37s);
+ events.ScheduleEvent(EVENT_ECK_SPRING, 10s, 24s);
}
void JustDied(Unit* killer) override
@@ -120,17 +130,14 @@ public:
break;
case EVENT_ECK_SPIT:
me->CastSpell(me->GetVictim(), SPELL_ECK_SPIT, false);
- events.ScheduleEvent(EVENT_ECK_SPIT, 10s);
+ events.ScheduleEvent(EVENT_ECK_SPIT, 11s, 24s);
break;
case EVENT_ECK_SPRING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true, false))
{
- me->GetThreatMgr().ResetAllThreat();
- me->AddThreat(target, 500.0f);
me->CastSpell(target, SPELL_ECK_SPRING, false);
}
-
- events.ScheduleEvent(EVENT_ECK_SPRING, 5s, 10s);
+ events.ScheduleEvent(EVENT_ECK_SPRING, 10s, 24s);
break;
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index 2a56ce8873..50f1e59198 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -49,175 +49,124 @@ enum Yells
enum Events
{
- EVENT_STAMPEDE = 1,
- EVENT_WHIRLING_SLASH = 2,
- EVENT_PUNCTURE = 3,
- EVENT_ENRAGE = 4,
- EVENT_IMPALING_CHARGE = 5,
- EVENT_UNSUMMON_RHINO = 6,
- EVENT_STOMP = 7,
- EVENT_KILL_TALK = 8
+ EVENT_KILL_TALK = 1
};
-class boss_gal_darah : public CreatureScript
+struct boss_gal_darah : public BossAI
{
-public:
- boss_gal_darah() : CreatureScript("boss_gal_darah") { }
+ boss_gal_darah(Creature* creature) : BossAI(creature, DATA_GAL_DARAH) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetGundrakAI<boss_gal_darahAI>(creature);
+ BossAI::Reset();
+ DoCastSelf(SPELL_START_VISUAL);
+ impaledList.clear();
+ _stampedeVictim.Clear();
}
- struct boss_gal_darahAI : public BossAI
+ void JustReachedHome() override
{
- boss_gal_darahAI(Creature* creature) : BossAI(creature, DATA_GAL_DARAH)
- {
- }
-
- uint8 phaseCounter;
- GuidSet impaledList;
-
- void Reset() override
- {
- BossAI::Reset();
- impaledList.clear();
- phaseCounter = 0;
- }
+ BossAI::JustReachedHome();
+ DoCastSelf(SPELL_START_VISUAL);
+ }
- void InitializeAI() override
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Id == SPELL_TRANSFORM_TO_RHINO)
{
- BossAI::InitializeAI();
- me->CastSpell(me, SPELL_START_VISUAL, false);
+ ScheduleTimedEvent(8s, 11s, [&] {
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true))
+ {
+ DoCast(target, SPELL_IMPALING_CHARGE);
+ impaledList.insert(target->GetGUID());
+ }
+ }, 16s, 17s);
+
+ ScheduleTimedEvent(6s, 8s, [&] {
+ DoCastSelf(SPELL_ENRAGE);
+ }, 16s, 17s);
+
+ ScheduleTimedEvent(7s, 10s, [&] {
+ DoCastAOE(SPELL_STOMP);
+ }, 10s, 12s);
+
+ me->m_Events.AddEventAtOffset([&] {
+ scheduler.CancelAll();
+ DoCastSelf(SPELL_TRANSFORM_TO_TROLL);
+ }, 32s);
}
-
- void JustReachedHome() override
+ else if (spellInfo->Id == SPELL_TRANSFORM_TO_TROLL)
{
- BossAI::JustReachedHome();
- me->CastSpell(me, SPELL_START_VISUAL, false);
+ ScheduleEvents();
}
+ }
- void ScheduleEvents(bool troll)
- {
- events.Reset();
- if (troll)
- {
- events.RescheduleEvent(EVENT_STAMPEDE, 10s);
- events.RescheduleEvent(EVENT_WHIRLING_SLASH, 21s);
- }
- else
+ void ScheduleEvents()
+ {
+ ScheduleTimedEvent(10s, [&] {
+ Talk(SAY_SUMMON_RHINO);
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f))
{
- events.RescheduleEvent(EVENT_PUNCTURE, 10s);
- events.RescheduleEvent(EVENT_ENRAGE, 15s);
- events.RescheduleEvent(EVENT_IMPALING_CHARGE, 21s);
- events.RescheduleEvent(EVENT_STOMP, 5s);
+ _stampedeVictim = target->GetGUID();
+ DoCast(target, SPELL_STAMPEDE);
}
- }
+ }, 15s);
- void JustEngagedWith(Unit* who) override
- {
- Talk(SAY_AGGRO);
- BossAI::JustEngagedWith(who);
-
- ScheduleEvents(true);
- me->RemoveAurasDueToSpell(SPELL_START_VISUAL);
- me->InterruptNonMeleeSpells(true);
- }
+ ScheduleTimedEvent(10s, 16s, [&] {
+ DoCastVictim(SPELL_PUNCTURE);
+ }, 15s, 18s);
- void JustSummoned(Creature* summon) override
- {
- uint32 despawnTime = 0;
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
- {
- summon->CastSpell(target, SPELL_STAMPEDE_DMG, true);
- despawnTime = (summon->GetDistance(target) / 40.0f * 1000) + 500;
- }
+ ScheduleTimedEvent(11s, 19s, [&] {
+ DoCastAOE(SPELL_WHIRLING_SLASH);
+ }, 17s, 19s);
- summon->DespawnOrUnsummon(despawnTime);
- }
+ me->m_Events.AddEventAtOffset([&] {
+ scheduler.CancelAll();
+ DoCastSelf(SPELL_TRANSFORM_TO_RHINO);
+ }, 32s);
+ }
- uint32 GetData(uint32 /*type*/) const override
- {
- return impaledList.size();
- }
+ void JustEngagedWith(Unit* who) override
+ {
+ Talk(SAY_AGGRO);
+ BossAI::JustEngagedWith(who);
- void JustDied(Unit* killer) override
- {
- Talk(SAY_DEATH);
- BossAI::JustDied(killer);
- }
+ ScheduleEvents();
+ me->RemoveAurasDueToSpell(SPELL_START_VISUAL);
+ me->InterruptNonMeleeSpells(true);
+ }
- void KilledUnit(Unit*) override
- {
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
- {
- Talk(SAY_SLAY);
- events.ScheduleEvent(EVENT_KILL_TALK, 6s);
- }
- }
+ void JustSummoned(Creature* summon) override
+ {
+ if (Unit* target = ObjectAccessor::GetUnit(*me, _stampedeVictim))
+ summon->CastSpell(target, SPELL_STAMPEDE_DMG, true);
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ summons.Summon(summon);
+ }
- events.Update(diff);
- if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_CHARGING))
- return;
+ uint32 GetData(uint32 /*type*/) const override
+ {
+ return impaledList.size();
+ }
- switch (events.ExecuteEvent())
- {
- case EVENT_STAMPEDE:
- Talk(SAY_SUMMON_RHINO);
- me->CastSpell(me->GetVictim(), SPELL_STAMPEDE, false);
- events.ScheduleEvent(EVENT_STAMPEDE, 15s);
- break;
- case EVENT_WHIRLING_SLASH:
- if (++phaseCounter >= 3)
- {
- ScheduleEvents(false);
- me->CastSpell(me, SPELL_TRANSFORM_TO_RHINO, false);
- Talk(SAY_TRANSFORM_1);
- phaseCounter = 0;
- return;
- }
- events.ScheduleEvent(EVENT_WHIRLING_SLASH, 21s);
- me->CastSpell(me, SPELL_WHIRLING_SLASH, false);
- break;
- case EVENT_PUNCTURE:
- me->CastSpell(me->GetVictim(), SPELL_PUNCTURE, false);
- events.ScheduleEvent(EVENT_PUNCTURE, 8s);
- break;
- case EVENT_ENRAGE:
- me->CastSpell(me, SPELL_ENRAGE, false);
- events.ScheduleEvent(EVENT_ENRAGE, 20s);
- break;
- case EVENT_STOMP:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
- me->CastSpell(target, SPELL_STOMP, false);
- events.ScheduleEvent(EVENT_STOMP, 20s);
- break;
- case EVENT_IMPALING_CHARGE:
- if (++phaseCounter >= 3)
- {
- ScheduleEvents(true);
- me->CastSpell(me, SPELL_TRANSFORM_TO_TROLL, false);
- Talk(SAY_TRANSFORM_2);
- phaseCounter = 0;
- return;
- }
- events.ScheduleEvent(EVENT_IMPALING_CHARGE, 21s);
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false))
- {
- me->CastSpell(target, SPELL_IMPALING_CHARGE, false);
- impaledList.insert(target->GetGUID());
- }
- break;
- }
+ void JustDied(Unit* killer) override
+ {
+ Talk(SAY_DEATH);
+ BossAI::JustDied(killer);
+ }
- DoMeleeAttackIfReady();
+ void KilledUnit(Unit*) override
+ {
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
+ {
+ Talk(SAY_SLAY);
+ events.ScheduleEvent(EVENT_KILL_TALK, 6s);
}
- };
+ }
+
+private:
+ GuidSet impaledList;
+ ObjectGuid _stampedeVictim;
};
class spell_galdarah_impaling_charge : public SpellScript
@@ -265,9 +214,7 @@ class spell_galdarah_transform : public SpellScript
class achievement_share_the_love : public AchievementCriteriaScript
{
public:
- achievement_share_the_love() : AchievementCriteriaScript("achievement_share_the_love")
- {
- }
+ achievement_share_the_love() : AchievementCriteriaScript("achievement_share_the_love") { }
bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{
@@ -280,7 +227,7 @@ public:
void AddSC_boss_gal_darah()
{
- new boss_gal_darah();
+ RegisterGundrakCreatureAI(boss_gal_darah);
RegisterSpellScript(spell_galdarah_impaling_charge);
RegisterSpellScript(spell_galdarah_transform);
new achievement_share_the_love();
diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
index e0be1dd9d9..a9b989e6e4 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -92,12 +92,18 @@ public:
BossAI::JustEngagedWith(who);
me->CastSpell(me, SPELL_MOJO_FRENZY, true);
- events.ScheduleEvent(EVENT_GROUND_TREMOR, 18s);
- events.ScheduleEvent(EVENT_NUMBLING_SHOUT, 10s);
+ events.ScheduleEvent(EVENT_GROUND_TREMOR, 13s, 30s);
+ events.ScheduleEvent(EVENT_NUMBLING_SHOUT, 8s, 38s);
events.ScheduleEvent(EVENT_DETERMINED_STAB, 20s);
events.ScheduleEvent(EVENT_TRANSFORMATION, 12s);
}
+ void EnterEvadeMode(EvadeReason why) override
+ {
+ summons.DespawnAll();
+ BossAI::EnterEvadeMode(why);
+ }
+
void SpellHitTarget(Unit* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_TRANSFORMATION)
@@ -113,12 +119,13 @@ public:
{
Talk(SAY_DEATH);
Talk(EMOTE_ALTAR);
+
BossAI::JustDied(killer);
}
void KilledUnit(Unit*) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_SLAY);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -144,29 +151,52 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
- switch (events.ExecuteEvent())
+ while (uint32 eventId = events.ExecuteEvent())
{
- case EVENT_GROUND_TREMOR:
- if (roll_chance_i(50))
- Talk(SAY_QUAKE);
- me->CastSpell(me, me->GetDisplayId() != me->GetNativeDisplayId() ? SPELL_QUAKE : SPELL_GROUND_TREMOR, false);
- events.ScheduleEvent(EVENT_GROUND_TREMOR, 10s);
- break;
- case EVENT_NUMBLING_SHOUT:
- me->CastSpell(me, me->GetDisplayId() != me->GetNativeDisplayId() ? SPELL_NUMBING_ROAR : SPELL_NUMBING_SHOUT, false);
- events.ScheduleEvent(EVENT_NUMBLING_SHOUT, 10s);
- break;
- case EVENT_DETERMINED_STAB:
- me->CastSpell(me->GetVictim(), me->GetDisplayId() != me->GetNativeDisplayId() ? SPELL_DETERMINED_GORE : SPELL_DETERMINED_STAB, false);
- events.ScheduleEvent(EVENT_DETERMINED_STAB, 8s);
- break;
- case EVENT_TRANSFORMATION:
- Talk(EMOTE_TRANSFORM);
- Talk(SAY_TRANSFORM);
- me->CastSpell(me, SPELL_TRANSFORMATION, false);
- me->CastSpell(me, SPELL_SUMMON_PHANTOM_TRANSFORM, true);
- events.ScheduleEvent(EVENT_TRANSFORMATION, 10s);
- break;
+ switch (eventId)
+ {
+ case EVENT_GROUND_TREMOR:
+ if (roll_chance_i(50))
+ Talk(SAY_QUAKE);
+
+ if (me->GetDisplayId() != me->GetNativeDisplayId())
+ {
+ me->CastSpell(me, SPELL_QUAKE, false);
+ events.ScheduleEvent(EVENT_GROUND_TREMOR, 16s, 63s);
+ }
+ else
+ {
+ me->CastSpell(me, SPELL_GROUND_TREMOR, false);
+ events.ScheduleEvent(EVENT_GROUND_TREMOR, 13s, 27s);
+ }
+ return;
+
+ case EVENT_NUMBLING_SHOUT:
+ if (me->GetDisplayId() != me->GetNativeDisplayId())
+ {
+ me->CastSpell(me, SPELL_NUMBING_ROAR, false);
+ events.ScheduleEvent(EVENT_NUMBLING_SHOUT, 8s, 54s);
+ }
+ else
+ {
+ me->CastSpell(me, SPELL_NUMBING_SHOUT, false);
+ events.ScheduleEvent(EVENT_NUMBLING_SHOUT, 6s, 27s);
+ }
+ return;
+
+ case EVENT_DETERMINED_STAB:
+ me->CastSpell(me->GetVictim(), me->GetDisplayId() != me->GetNativeDisplayId() ? SPELL_DETERMINED_GORE : SPELL_DETERMINED_STAB, false);
+ events.ScheduleEvent(EVENT_DETERMINED_STAB, 8s);
+ return;
+
+ case EVENT_TRANSFORMATION:
+ Talk(EMOTE_TRANSFORM);
+ Talk(SAY_TRANSFORM);
+ me->CastSpell(me, SPELL_TRANSFORMATION, false);
+ me->CastSpell(me, SPELL_SUMMON_PHANTOM_TRANSFORM, true);
+ events.ScheduleEvent(EVENT_TRANSFORMATION, 10s);
+ return;
+ }
}
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
index 5bf51b7c91..0229bab9e8 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
@@ -137,7 +137,7 @@ public:
void KilledUnit(Unit*) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_SLAY);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h
index 8d38819eab..7e0ffa41a0 100644
--- a/src/server/scripts/Northrend/Gundrak/gundrak.h
+++ b/src/server/scripts/Northrend/Gundrak/gundrak.h
@@ -30,16 +30,21 @@ enum Data
DATA_MOORABI = 1,
DATA_DRAKKARI_COLOSSUS = 2,
DATA_GAL_DARAH = 3,
- DATA_ECK_THE_FEROCIOUS_INIT = 4,
- DATA_ECK_THE_FEROCIOUS = 5,
- MAX_ENCOUNTERS = 6
+ DATA_ECK_THE_FEROCIOUS = 4,
+ MAX_ENCOUNTERS = 5
};
enum Creatures
{
+ NPC_RUINS_DWELLER = 29920,
NPC_ECK_THE_FEROCIOUS = 29932
};
+enum GDTexts
+{
+ EMOTE_SUMMON_ECK = 0
+};
+
enum GameObjects
{
GO_ALTAR_OF_SLAD_RAN = 192518,
@@ -66,4 +71,6 @@ inline AI* GetGundrakAI(T* obj)
return GetInstanceAI<AI>(obj, GundrakScriptName);
}
+#define RegisterGundrakCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetGundrakAI)
+
#endif
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index f8a87b2530..422303298e 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "CreatureGroups.h"
#include "InstanceMapScript.h"
#include "ScriptedCreature.h"
#include "gundrak.h"
@@ -137,13 +138,6 @@ public:
{
switch (type)
{
- case NPC_ECK_THE_FEROCIOUS:
- if (GetBossState(DATA_ECK_THE_FEROCIOUS_INIT) != DONE)
- {
- SetBossState(DATA_ECK_THE_FEROCIOUS_INIT, NOT_STARTED);
- SetBossState(DATA_ECK_THE_FEROCIOUS_INIT, DONE);
- }
- break;
case GO_ALTAR_OF_SLAD_RAN:
if (GameObject* statue = instance->GetGameObject(_bridgeGUIDs[0]))
statue->SetGoState(GO_STATE_READY);
@@ -194,19 +188,36 @@ public:
if (GameObject* altar = instance->GetGameObject(_drakkariAltarGUID))
altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break;
- case DATA_ECK_THE_FEROCIOUS_INIT:
- {
- Position pos = {1624.70f, 891.43f, 95.08f, 1.2f};
- if (instance->IsHeroic())
- instance->SummonCreature(NPC_ECK_THE_FEROCIOUS, pos);
- break;
- }
}
return true;
}
+ void OnUnitDeath(Unit* unit) override
+ {
+ if (!instance->IsHeroic() || !unit->EntryEquals(NPC_RUINS_DWELLER) || IsBossDone(DATA_ECK_THE_FEROCIOUS))
+ return;
+
+ if (Creature* dweller = unit->ToCreature())
+ if (CreatureGroup* formation = dweller->GetFormation())
+ {
+ scheduler.CancelAll();
+ scheduler.Schedule(1s, [this, dweller, formation](TaskContext /*context*/)
+ {
+ if (!formation->IsAnyMemberAlive())
+ {
+ if (dweller)
+ dweller->AI()->Talk(EMOTE_SUMMON_ECK);
+
+ instance->SummonCreature(NPC_ECK_THE_FEROCIOUS, { 1624.70f, 891.43f, 95.08f, 1.2f });
+ }
+ });
+ }
+ }
+
void Update(uint32 diff) override
{
+ scheduler.Update(diff);
+
if (!_activateTimer)
return;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 7f18b8474c..f349760291 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -375,7 +375,7 @@ public:
me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
me->SetReactState(REACT_AGGRESSIVE);
me->ForceValuesUpdateAtIndex(UNIT_NPC_FLAGS); // was in sniff. don't ask why
- me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000));
+ me->m_Events.AddEventAtOffset(new StandUpEvent(*me), 1s);
DoAction(ACTION_REMOVE_INVOCATION);
me->SetHealth(1);
break;
@@ -645,7 +645,7 @@ public:
me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
me->SetReactState(REACT_AGGRESSIVE);
me->ForceValuesUpdateAtIndex(UNIT_NPC_FLAGS); // was in sniff. don't ask why
- me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000));
+ me->m_Events.AddEventAtOffset(new StandUpEvent(*me), 1s);
DoAction(ACTION_REMOVE_INVOCATION);
me->SetHealth(1);
break;
@@ -889,7 +889,7 @@ public:
summon->CastSpell(summon, SPELL_KINETIC_BOMB, true, nullptr, nullptr, me->GetGUID());
break;
case NPC_SHOCK_VORTEX:
- summon->m_Events.AddEvent(new ShockVortexExplodeEvent(*summon), summon->m_Events.CalculateTime(4500));
+ summon->m_Events.AddEventAtOffset(new ShockVortexExplodeEvent(*summon), 4500ms);
break;
default:
break;
@@ -939,7 +939,7 @@ public:
me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
me->SetReactState(REACT_AGGRESSIVE);
me->ForceValuesUpdateAtIndex(UNIT_NPC_FLAGS); // was in sniff. don't ask why
- me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000));
+ me->m_Events.AddEventAtOffset(new StandUpEvent(*me), 1s);
me->SetHealth(me->GetMaxHealth());
DoAction(ACTION_CAST_INVOCATION);
break;
@@ -1213,7 +1213,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void UpdateAI(uint32 diff) override
@@ -1287,13 +1287,13 @@ public:
me->SetControlled(true, UNIT_STATE_ROOT);
me->StopMoving();
me->CastSpell(me, SPELL_FLAMES, true);
- me->DespawnOrUnsummon(999);
+ me->DespawnOrUnsummon(999ms);
me->CastSpell(me, SPELL_FLAME_SPHERE_DEATH_EFFECT, true);
_exploded = true;
}
}
- void SetGUID(ObjectGuid guid, int32 /*type*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*type*/) override
{
_chaseGUID = guid;
}
@@ -1331,7 +1331,7 @@ public:
me->SetInCombatWithZone();
return;
}
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void DamageDealt(Unit* target, uint32& damage, DamageEffectType /*damageType*/, SpellSchoolMask /*damageSchoolMask*/) override
@@ -1424,7 +1424,7 @@ public:
case EVENT_BOMB_DESPAWN:
me->RemoveAllAuras();
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->DespawnOrUnsummon(exploded ? 5000 : 0);
+ me->DespawnOrUnsummon(exploded ? 5s : 0ms);
break;
case EVENT_CONTINUE_FALLING:
me->GetMotionMaster()->MovementExpired(false);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 5deccbc0b1..5994776980 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -533,7 +533,7 @@ public:
return _bloodboltedPlayers.count(guid) != 0;
}
- void SetGUID(ObjectGuid guid, int32 type = 0) override
+ void SetGUID(ObjectGuid const& guid, int32 type = 0) override
{
switch (type)
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index f0172727b4..4ae1a2e36a 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -118,9 +118,6 @@ enum Spells
SPELL_ACHIEVEMENT = 72928,
};
-// Helper to get id of the aura on different modes (HasAura(baseId) wont work)
-#define BOILING_BLOOD_HELPER RAID_MODE<int32>(72385, 72441, 72442, 72443)
-
enum EventTypes
{
EVENT_INTRO_ALLIANCE_1 = 1,
@@ -583,14 +580,14 @@ public:
{
me->RemoveAurasDueToSpell(SPELL_GRIP_OF_AGONY);
me->SetDisableGravity(false);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 539.2917f, 10.0f);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), 539.2917f, FORCED_MOVEMENT_NONE, 10.0f);
for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
/*Talk(SAY_OUTRO_HORDE_1);
- _events.ScheduleEvent(EVENT_OUTRO_HORDE_1, 10000);
- _events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 18000);
- _events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 24000);*/
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_1, 10s);
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 18s);
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 24s);*/
}
break;
case ACTION_EVADE:
@@ -651,8 +648,8 @@ public:
deathbringer->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
deathbringer->setDeathState(DeathState::Alive);
}
- _events.ScheduleEvent(EVENT_OUTRO_HORDE_4, 1000);
- _events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 4000);
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_4, 1s);
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 4s);
break;
case POINT_FINAL:
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
@@ -845,7 +842,7 @@ public:
{
me->RemoveAurasDueToSpell(SPELL_GRIP_OF_AGONY);
me->SetDisableGravity(false);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 539.2917f, 10.0f);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), 539.2917f, FORCED_MOVEMENT_NONE, 10.0f);
for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
@@ -1030,7 +1027,7 @@ public:
me->GetMotionMaster()->MoveCharge(chargePos[_index].GetPositionX(), chargePos[_index].GetPositionY(), chargePos[_index].GetPositionZ(), 13.0f, POINT_CHARGE);
}
else if (action == ACTION_DESPAWN)
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
private:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index 923b9a341f..ff86ed409d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -19,7 +19,10 @@
#include "CreatureScript.h"
#include "ObjectMgr.h"
#include "ScriptedCreature.h"
+#include "SharedDefines.h"
#include "SpellAuras.h"
+#include "SpellInfo.h"
+#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "icecrown_citadel.h"
#include "SpellAuraEffects.h"
@@ -57,10 +60,6 @@ enum Spells
SPELL_PLAGUE_STENCH = 71805,
};
-// Used for HasAura checks
-#define PUNGENT_BLIGHT_HELPER RAID_MODE<uint32>(69195, 71219, 73031, 73032)
-#define INOCULATED_HELPER RAID_MODE<uint32>(69291, 72101, 72102, 72103)
-
uint32 const gaseousBlight[3] = {69157, 69162, 69164};
uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154};
@@ -168,19 +167,6 @@ public:
Talk(SAY_KILL);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
- {
- if (spell->Id == PUNGENT_BLIGHT_HELPER)
- target->RemoveAurasDueToSpell(INOCULATED_HELPER);
- else if (Player* p = target->ToPlayer())
- {
- // Gaseous Blight damage
- if (((spell->Id == 69159 || spell->Id == 70136 || spell->Id == 69161 || spell->Id == 70139 || spell->Id == 69163 || spell->Id == 70469) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_10) == QUEST_STATUS_INCOMPLETE) ||
- ((spell->Id == 70135 || spell->Id == 70138 || spell->Id == 70468 || spell->Id == 70137 || spell->Id == 70140 || spell->Id == 70470) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_25) == QUEST_STATUS_INCOMPLETE))
- p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
- }
- }
-
void RemoveBlight()
{
if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID))
@@ -233,7 +219,7 @@ public:
Talk(EMOTE_GAS_SPORE);
me->CastCustomSpell(SPELL_GAS_SPORE, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 3, 2, 3), me);
events.ScheduleEvent(EVENT_GAS_SPORE, 40s, 45s);
- events.DelayEventsToMax(20000, 1); // delay EVENT_VILE_GAS
+ events.DelayEventsToMax(20s, 1); // delay EVENT_VILE_GAS
break;
case EVENT_VILE_GAS:
{
@@ -313,8 +299,15 @@ class spell_festergut_pungent_blight : public SpellScript
professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
}
+ void HandleHit(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* target = GetHitUnit())
+ target->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster()));
+ }
+
void Register() override
{
+ OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
@@ -378,6 +371,34 @@ class spell_festergut_gastric_bloat : public SpellScript
}
};
+class spell_festergut_gaseous_blight : public SpellScript
+{
+ PrepareSpellScript(spell_festergut_gaseous_blight);
+
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ORANGE_BLIGHT_RESIDUE });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* p = GetHitUnit()->ToPlayer())
+ {
+ if (Map* map = GetCaster()->GetMap())
+ {
+ uint32 questId = map->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10;
+ if (p->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
+ p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
+ }
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_festergut_gaseous_blight::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
class achievement_flu_shot_shortage : public AchievementCriteriaScript
{
public:
@@ -468,6 +489,7 @@ void AddSC_boss_festergut()
RegisterSpellScript(spell_festergut_pungent_blight);
RegisterSpellScript(spell_festergut_blighted_spores_aura);
RegisterSpellScript(spell_festergut_gastric_bloat);
+ RegisterSpellScript(spell_festergut_gaseous_blight);
new achievement_flu_shot_shortage();
new npc_stinky_icc();
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index 51969299bc..b61bdc3178 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -373,7 +373,7 @@ class BattleExperienceEvent : public BasicEvent
{
public:
static uint32 const ExperiencedSpells[5];
- static uint32 const ExperiencedTimes[5];
+ static Milliseconds const ExperiencedTimes[5];
BattleExperienceEvent(Creature* creature) : _creature(creature), _level(0) { }
@@ -388,7 +388,8 @@ public:
_creature->CastSpell(_creature, ExperiencedSpells[_level], true);
if (_level < (_creature->GetMap()->IsHeroic() ? 4 : 3))
{
- _creature->m_Events.AddEvent(this, timer + ExperiencedTimes[_level]);
+ Milliseconds nextExperienceEventTime = Milliseconds(timer) + ExperiencedTimes[_level];
+ _creature->m_Events.AddEventAtOffset(this, nextExperienceEventTime);
return false;
}
@@ -401,7 +402,7 @@ private:
};
uint32 const BattleExperienceEvent::ExperiencedSpells[5] = { 0, SPELL_EXPERIENCED, SPELL_VETERAN, SPELL_ELITE, SPELL_ADDS_BERSERK };
-uint32 const BattleExperienceEvent::ExperiencedTimes[5] = { 100000, 70000, 60000, 90000, 0 };
+Milliseconds const BattleExperienceEvent::ExperiencedTimes[5] = { 100s, 70s, 60s, 90s, 0ms };
class PassengerController
{
@@ -503,7 +504,7 @@ public:
float x, y, z, o;
_dest.GetPosition(x, y, z, o);
_owner->GetTransport()->CalculatePassengerPosition(x, y, z, &o);
- _owner->GetMotionMaster()->MovePoint(EVENT_CHARGE_PREPATH, x, y, z, false);
+ _owner->GetMotionMaster()->MovePoint(EVENT_CHARGE_PREPATH, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
return true;
}
@@ -668,14 +669,14 @@ public:
continue;
Creature* c = (*itr)->ToCreature();
if (c->GetEntry() == NPC_SKYBREAKER_MARINE || c->GetEntry() == NPC_SKYBREAKER_SERGEANT || c->GetEntry() == NPC_KOR_KRON_REAVER || c->GetEntry() == NPC_KOR_KRON_SERGEANT)
- c->DespawnOrUnsummon(1);
+ c->DespawnOrUnsummon(1ms);
}
}
}
else
{
uint32 teleportSpellId = _teamIdInInstance == TEAM_HORDE ? SPELL_TELEPORT_PLAYERS_ON_RESET_H : SPELL_TELEPORT_PLAYERS_ON_RESET_A;
- me->m_Events.AddEvent(new ResetEncounterEvent(me, teleportSpellId, _instance->GetGuidData(DATA_ENEMY_GUNSHIP)), me->m_Events.CalculateTime(8000));
+ me->m_Events.AddEventAtOffset(new ResetEncounterEvent(me, teleportSpellId, _instance->GetGuidData(DATA_ENEMY_GUNSHIP)), 8s);
}
}
@@ -703,7 +704,7 @@ public:
}
}
- void SetGUID(ObjectGuid guid, int32 id/* = 0*/) override
+ void SetGUID(ObjectGuid const& guid, int32 id/* = 0*/) override
{
if (id != ACTION_SHIP_VISITS_ENEMY && id != ACTION_SHIP_VISITS_SELF)
return;
@@ -847,7 +848,7 @@ public:
{
time_t now = GameTime::GetGameTime().count();
if (_firstMageCooldown > now)
- _events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
+ _events.ScheduleEvent(EVENT_SUMMON_MAGE, Seconds(_firstMageCooldown - now));
else
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
}
@@ -880,7 +881,7 @@ public:
init.DisableTransportPathTransformations();
init.MovebyPath(path, 0);
init.Launch();
- me->DespawnOrUnsummon(18000);
+ me->DespawnOrUnsummon(18s);
}
}
@@ -915,7 +916,7 @@ public:
{
float x, y, z, o;
me->GetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(0, x, y, z, false);
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
else
@@ -1072,7 +1073,7 @@ public:
{
float x, y, z, o;
me->GetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(0, x, y, z, false);
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
}
@@ -1183,7 +1184,7 @@ public:
{
time_t now = GameTime::GetGameTime().count();
if (_firstMageCooldown > now)
- _events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
+ _events.ScheduleEvent(EVENT_SUMMON_MAGE, Seconds(_firstMageCooldown - now));
else
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
}
@@ -1216,7 +1217,7 @@ public:
init.DisableTransportPathTransformations();
init.MovebyPath(path, 0);
init.Launch();
- me->DespawnOrUnsummon(18000);
+ me->DespawnOrUnsummon(18s);
}
}
@@ -1251,7 +1252,7 @@ public:
{
float x, y, z, o;
me->GetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(0, x, y, z, false);
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
else
@@ -1411,7 +1412,7 @@ public:
{
float x, y, z, o;
me->GetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(0, x, y, z, false);
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
}
@@ -1518,7 +1519,7 @@ struct gunship_npc_AI : public ScriptedAI
me->SetTransportHomePosition(Slot->TargetPosition);
me->GetTransport()->CalculatePassengerPosition(x, y, z, &o);
me->SetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(EVENT_CHARGE_PREPATH, x, y, z, false);
+ me->GetMotionMaster()->MovePoint(EVENT_CHARGE_PREPATH, x, y, z, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
@@ -1544,7 +1545,7 @@ struct gunship_npc_AI : public ScriptedAI
if (type == POINT_MOTION_TYPE && pointId == EVENT_CHARGE_PREPATH && Slot)
{
me->SetFacingTo(Slot->TargetPosition.GetOrientation());
- me->m_Events.AddEvent(new BattleExperienceEvent(me), me->m_Events.CalculateTime(BattleExperienceEvent::ExperiencedTimes[0]));
+ me->m_Events.AddEventAtOffset(new BattleExperienceEvent(me), BattleExperienceEvent::ExperiencedTimes[0]);
me->CastSpell(me, SPELL_BATTLE_EXPERIENCE, true);
me->SetReactState(REACT_AGGRESSIVE);
}
@@ -1579,7 +1580,7 @@ struct npc_gunship_boarding_addAI : public ScriptedAI
{
SetSlotInfo(data);
me->SetReactState(REACT_PASSIVE);
- me->m_Events.AddEvent(new DelayedMovementEvent(me, Slot->TargetPosition), me->m_Events.CalculateTime(3000 * (Index - SLOT_MARINE_1)));
+ me->m_Events.AddEventAtOffset(new DelayedMovementEvent(me, Slot->TargetPosition), Milliseconds(3000 * (Index - SLOT_MARINE_1)));
}
}
@@ -1608,7 +1609,7 @@ struct npc_gunship_boarding_addAI : public ScriptedAI
if (type == POINT_MOTION_TYPE && pointId == EVENT_CHARGE_PREPATH && Slot)
{
me->SetFacingTo(Slot->TargetPosition.GetOrientation());
- me->m_Events.AddEvent(new BattleExperienceEvent(me), me->m_Events.CalculateTime(BattleExperienceEvent::ExperiencedTimes[0]));
+ me->m_Events.AddEventAtOffset(new BattleExperienceEvent(me), BattleExperienceEvent::ExperiencedTimes[0]);
me->CastSpell(me, SPELL_BATTLE_EXPERIENCE, true);
me->SetReactState(REACT_AGGRESSIVE);
@@ -2271,7 +2272,7 @@ class spell_igb_overheat_aura : public AuraScript
WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, GetUnitOwner()->GetPackGUID().size() + 1);
data << GetUnitOwner()->GetPackGUID();
data << uint8(value);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
}
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 54b279510d..a29cc2cc6b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -482,7 +482,7 @@ public:
minrange = summon->GetExactDist(p);
}
- summon->ToTempSummon()->DespawnOrUnsummon(30000);
+ summon->ToTempSummon()->DespawnOrUnsummon(30s);
}
else
{
@@ -522,7 +522,7 @@ public:
darnavan->GetMotionMaster()->MoveIdle();
darnavan->StopMoving();
darnavan->SetReactState(REACT_PASSIVE);
- darnavan->m_Events.AddEvent(new DaranavanMoveEvent(*darnavan), darnavan->m_Events.CalculateTime(10000));
+ darnavan->m_Events.AddEventAtOffset(new DaranavanMoveEvent(*darnavan), 10s);
darnavan->AI()->Talk(SAY_DARNAVAN_RESCUED);
if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself())
{
@@ -949,7 +949,7 @@ public:
me->GetMotionMaster()->MovementExpired();
me->StopMoving();
me->SetControlled(true, UNIT_STATE_STUNNED);
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
break;
default:
break;
@@ -977,7 +977,7 @@ public:
if (!me->GetVictim() || me->GetVictim()->GetGUID() != targetGUID)
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index 7faa41fd27..53a73a8fe0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -206,8 +206,8 @@ public:
if (Aura* pStorm = me->GetAura(SPELL_BONE_STORM))
pStorm->SetDuration(int32(_boneStormDuration));
events.ScheduleEvent(EVENT_BONE_STORM_MOVE, 0ms);
- events.ScheduleEvent(EVENT_END_BONE_STORM, _boneStormDuration + 1);
- }
+ events.ScheduleEvent(EVENT_END_BONE_STORM, Milliseconds(_boneStormDuration + 1));
+ }
break;
case EVENT_BONE_STORM_MOVE:
{
@@ -397,7 +397,7 @@ public:
trapped->NearTeleportTo(exitPos.GetPositionX(), exitPos.GetPositionY(), exitPos.GetPositionZ(), exitPos.GetOrientation(), false);
}
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void JustDied(Unit* /*killer*/) override
@@ -429,7 +429,7 @@ public:
summonerUnit->SetPetGUID(petGUID);
summonerUnit->GetMotionMaster()->Clear();
summonerUnit->StopMoving();
- events.ScheduleEvent(1, 8000);
+ events.ScheduleEvent(1, 8s);
hasTrappedUnit = true;
}
}
@@ -451,13 +451,13 @@ public:
}
else
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
}
}
else
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index cb93c1bf6b..cdcc909606 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -352,7 +352,7 @@ public:
{
if (summon->GetEntry() != 38308 && summon->GetEntry() != 38309 && (!me->IsInCombat() || me->IsInEvadeMode()))
{
- summon->DespawnOrUnsummon(1);
+ summon->DespawnOrUnsummon(1ms);
return;
}
@@ -566,14 +566,14 @@ public:
{
SpellInfo const* spell = sSpellMgr->GetSpellInfo(SPELL_CREATE_CONCOCTION);
me->CastSpell(me, SPELL_CREATE_CONCOCTION, false);
- events.ScheduleEvent(EVENT_PHASE_TRANSITION, sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)->CalcCastTime() + 2250);
+ events.ScheduleEvent(EVENT_PHASE_TRANSITION, Milliseconds(sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)->CalcCastTime() + 2250));
break;
}
case 3:
{
SpellInfo const* spell = sSpellMgr->GetSpellInfo(SPELL_GUZZLE_POTIONS);
me->CastSpell(me, SPELL_GUZZLE_POTIONS, false);
- events.ScheduleEvent(EVENT_PHASE_TRANSITION, sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)->CalcCastTime() + 2250);
+ events.ScheduleEvent(EVENT_PHASE_TRANSITION, Milliseconds(sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)->CalcCastTime() + 2250));
break;
}
default:
@@ -670,8 +670,8 @@ public:
void ChangePhase()
{
- uint32 heroicDelay = (IsHeroic() ? 25000 : 0);
- events.DelayEvents(24000 + heroicDelay, EVENT_GROUP_ABILITIES);
+ Milliseconds heroicDelay = (IsHeroic() ? 25s : 0ms);
+ events.DelayEvents(24s + heroicDelay, EVENT_GROUP_ABILITIES);
me->AttackStop();
if (!IsHeroic())
{
@@ -715,8 +715,8 @@ public:
{
case 1:
_phase = 2;
- events.ScheduleEvent(EVENT_MALLEABLE_GOO, urand(25000, 28000) + heroicDelay, EVENT_GROUP_ABILITIES);
- events.ScheduleEvent(EVENT_CHOKING_GAS_BOMB, urand(35000, 40000) + heroicDelay, EVENT_GROUP_ABILITIES);
+ events.ScheduleEvent(EVENT_MALLEABLE_GOO, randtime(25s, 28s) + heroicDelay, EVENT_GROUP_ABILITIES);
+ events.ScheduleEvent(EVENT_CHOKING_GAS_BOMB, randtime(35s, 40s) + heroicDelay, EVENT_GROUP_ABILITIES);
break;
case 2:
_phase = 3;
@@ -745,7 +745,7 @@ public:
ObjectGuid targetGUID;
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == -1)
targetGUID = guid;
@@ -757,7 +757,7 @@ public:
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
{
if (!professor->IsInCombat())
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
else
professor->AI()->JustSummoned(me);
}
@@ -1056,7 +1056,7 @@ class spell_putricide_ooze_channel : public SpellScript
if (targets.empty())
{
FinishCast(SPELL_FAILED_NO_VALID_TARGETS);
- GetCaster()->ToCreature()->DespawnOrUnsummon(1); // despawn next update
+ GetCaster()->ToCreature()->DespawnOrUnsummon(1ms); // despawn next update
return;
}
@@ -1491,7 +1491,7 @@ class spell_putricide_eat_ooze : public SpellScript
{
target->RemoveAurasDueToSpell(SPELL_GROW_STACKER);
target->RemoveAura(grow);
- target->DespawnOrUnsummon(1);
+ target->DespawnOrUnsummon(1ms);
}
else
grow->ModStackAmount(-4);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index e9e7acfbd4..58509fe5d8 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -72,8 +72,6 @@ enum Spells
SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159,
};
-#define MUTATED_INFECTION RAID_MODE<int32>(69674, 71224, 73022, 73023)
-
enum Events
{
EVENT_NONE,
@@ -131,13 +129,13 @@ public:
{
}
- uint32 infectionCooldown;
+ Milliseconds infectionCooldown;
ObjectGuid _oozeFloodDummyGUIDs[4][2];
uint8 _oozeFloodStage;
void Reset() override
{
- infectionCooldown = 14000;
+ infectionCooldown = 14s;
for (uint8 i = 0; i < 4; ++i)
for (uint8 j = 0; j < 2; ++j)
@@ -193,7 +191,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION);
+ instance->DoRemoveAurasDueToSpellOnPlayers(sSpellMgr->GetSpellIdForDifficulty(SPELL_MUTATED_INFECTION, me));
_JustDied();
Talk(SAY_DEATH);
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
@@ -211,7 +209,7 @@ public:
if (me->IsAlive() && me->IsInCombat() && !me->IsInEvadeMode())
summons.Summon(summon);
else
- summon->DespawnOrUnsummon(1);
+ summon->DespawnOrUnsummon(1ms);
}
void KilledUnit(Unit* victim) override
@@ -283,14 +281,14 @@ public:
DoCastSelf(SPELL_SLIME_SPRAY);
}
}
- events.DelayEvents(1);
+ events.DelayEvents(1ms);
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20s);
events.ScheduleEvent(EVENT_UNROOT, 0ms);
break;
case EVENT_HASTEN_INFECTIONS:
- if (infectionCooldown >= 8000)
+ if (infectionCooldown >= 8s)
{
- infectionCooldown -= 2000;
+ infectionCooldown -= 2s;
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90s);
}
break;
@@ -373,7 +371,7 @@ public:
{
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
rotface->AI()->SummonedCreatureDespawn(me);
- me->DespawnOrUnsummon(0);
+ me->DespawnOrUnsummon(0ms);
}
void UpdateAI(uint32 diff) override
@@ -798,7 +796,7 @@ class spell_rotface_unstable_ooze_explosion_suicide_aura : public AuraScript
target->SetVisible(false);
target->RemoveAllAuras();
//target->ToCreature()->DespawnOrUnsummon();
- target->ToCreature()->DespawnOrUnsummon(60000);
+ target->ToCreature()->DespawnOrUnsummon(60s);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 884cda64a8..2237cf87f6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -384,7 +384,7 @@ public:
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetSpeed(MOVE_RUN, 4.28571f);
float moveTime = me->GetExactDist(&SindragosaFlyInPos) / (me->GetSpeed(MOVE_RUN) * 0.001f);
- me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, SindragosaLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
+ me->m_Events.AddEventAtOffset(new FrostwyrmLandEvent(*me, SindragosaLandPos), Milliseconds(uint32(moveTime) + 250));
me->GetMotionMaster()->MovePoint(POINT_FROSTWYRM_FLY_IN, SindragosaFlyInPos);
if (!instance->GetData(DATA_SINDRAGOSA_INTRO))
@@ -478,7 +478,7 @@ public:
{
summons.Summon(summon);
if (summon->GetEntry() == NPC_FROST_BOMB)
- summon->m_Events.AddEvent(new FrostBombExplosion(summon, me->GetGUID()), summon->m_Events.CalculateTime(5500));
+ summon->m_Events.AddEventAtOffset(new FrostBombExplosion(summon, me->GetGUID()), 5500ms);
}
void SummonedCreatureDespawn(Creature* summon) override
@@ -523,7 +523,7 @@ public:
me->SetControlled(true, UNIT_STATE_ROOT);
me->SendMovementFlagUpdate();
me->CastSpell(me->GetVictim(), SPELL_TAIL_SMASH, false);
- events.DelayEventsToMax(1, 0);
+ events.DelayEventsToMax(1ms, 0);
events.ScheduleEvent(EVENT_UNROOT, 0ms);
events.ScheduleEvent(EVENT_TAIL_SMASH, 22s, 27s, EVENT_GROUP_LAND_PHASE);
break;
@@ -532,7 +532,7 @@ public:
me->SetControlled(true, UNIT_STATE_ROOT);
me->SendMovementFlagUpdate();
me->CastSpell(me->GetVictim(), _isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1, false);
- events.DelayEventsToMax(1, 0);
+ events.DelayEventsToMax(1ms, 0);
events.ScheduleEvent(EVENT_UNROOT, 0ms);
events.ScheduleEvent(EVENT_FROST_BREATH, 20s, 25s, EVENT_GROUP_LAND_PHASE);
break;
@@ -547,11 +547,10 @@ public:
break;
case EVENT_ICY_GRIP:
me->CastSpell((Unit*)nullptr, SPELL_ICY_GRIP, false);
- events.DelayEventsToMax(1001, 0);
+ events.DelayEventsToMax(1001ms, 0);
events.ScheduleEvent(EVENT_BLISTERING_COLD, 1s, EVENT_GROUP_LAND_PHASE);
- if (uint32 evTime = events.GetNextEventTime(EVENT_ICE_TOMB))
- if (events.GetTimer() > evTime || evTime - events.GetTimer() < 7000)
- events.RescheduleEvent(EVENT_ICE_TOMB, 7s);
+ if (events.GetTimeUntilEvent(EVENT_ICE_TOMB) < 7s)
+ events.RescheduleEvent(EVENT_ICE_TOMB, 7s);
break;
case EVENT_BLISTERING_COLD:
Talk(EMOTE_WARN_BLISTERING_COLD);
@@ -652,9 +651,8 @@ public:
Talk(EMOTE_WARN_FROZEN_ORB, target);
me->CastSpell(target, SPELL_ICE_TOMB_DUMMY, true);
me->CastSpell(target, SPELL_FROST_BEACON, true);
- if (uint32 evTime = events.GetNextEventTime(EVENT_ICY_GRIP))
- if (events.GetTimer() > evTime || evTime - events.GetTimer() < 8000)
- events.RescheduleEvent(EVENT_ICY_GRIP, 8s, EVENT_GROUP_LAND_PHASE);
+ if (events.GetTimeUntilEvent(EVENT_ICY_GRIP) < 8s)
+ events.RescheduleEvent(EVENT_ICY_GRIP, 8s, EVENT_GROUP_LAND_PHASE);
}
events.ScheduleEvent(EVENT_ICE_TOMB, 18s, 22s);
break;
@@ -700,7 +698,7 @@ public:
uint32 _existenceCheckTimer;
uint16 _asphyxiationTimer;
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == DATA_TRAPPED_PLAYER)
_trappedPlayerGUID = guid;
@@ -722,7 +720,7 @@ public:
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_DAMAGE);
player->RemoveAurasDueToSpell(SPELL_ASPHYXIATION);
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_UNTARGETABLE);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
}
}
@@ -1081,7 +1079,7 @@ class spell_sindragosa_ice_tomb_trap_aura : public AuraScript
void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* c = GetCaster())
- GetTarget()->m_Events.AddEvent(new IceTombSummonEvent(GetTarget(), c->GetGUID()), GetTarget()->m_Events.CalculateTime(500));
+ GetTarget()->m_Events.AddEventAtOffset(new IceTombSummonEvent(GetTarget(), c->GetGUID()), 500ms);
}
void ExtraRemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1247,7 +1245,7 @@ public:
me->setActive(true);
me->SetImmuneToPC(true);
float moveTime = me->GetExactDist(&SpinestalkerFlyPos) / (me->GetSpeed(MOVE_RUN) * 0.001f);
- me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, SpinestalkerLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
+ me->m_Events.AddEventAtOffset(new FrostwyrmLandEvent(*me, SpinestalkerLandPos), Milliseconds(uint32(moveTime) + 250));
me->SetDefaultMovementType(IDLE_MOTION_TYPE);
me->GetMotionMaster()->MoveIdle();
me->StopMoving();
@@ -1378,7 +1376,7 @@ public:
me->setActive(true);
me->SetImmuneToPC(true);
float moveTime = me->GetExactDist(&RimefangFlyPos) / (me->GetSpeed(MOVE_RUN) * 0.001f);
- me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, RimefangLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
+ me->m_Events.AddEventAtOffset(new FrostwyrmLandEvent(*me, RimefangLandPos), Milliseconds(uint32(moveTime) + 250));
me->SetDefaultMovementType(IDLE_MOTION_TYPE);
me->GetMotionMaster()->MoveIdle();
me->StopMoving();
@@ -1451,8 +1449,8 @@ public:
else destZ = me->GetPositionZ() + 25.0f;
me->GetMotionMaster()->MoveTakeoff(0, me->GetPositionX(), me->GetPositionY(), destZ, me->GetSpeed(MOVE_RUN));
float moveTime = std::fabs(destZ - me->GetPositionZ()) / (me->GetSpeed(MOVE_RUN) * 0.001f);
- _events.ScheduleEvent(EVENT_ICY_BLAST, uint32(moveTime) + urand(60000, 70000));
- _events.ScheduleEvent(EVENT_ICY_BLAST_CAST, uint32(moveTime) + 250);
+ _events.Repeat(Milliseconds(uint32(moveTime) + urand(60000, 70000)));
+ _events.ScheduleEvent(EVENT_ICY_BLAST_CAST, Milliseconds(uint32(moveTime) + 250));
break;
}
case EVENT_ICY_BLAST_CAST:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index d746989103..3d7225cd39 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -141,7 +141,6 @@ enum Spells
SPELL_SOUL_REAPER = 69409, // instant
SPELL_SOUL_REAPER_BUFF = 69410,
SPELL_SUMMON_VALKYR = 69037, // instant
- SPELL_SUMMON_VALKYR_PERIODIC = 74361,
SPELL_WINGS_OF_THE_DAMNED = 74352,
SPELL_VALKYR_TARGET_SEARCH = 69030,
SPELL_HARVEST_SOUL_VALKYR = 68985, // vehicle aura used by Val'kyr Shadowguard and Strangulate Vehicle
@@ -188,14 +187,6 @@ enum Spells
SPELL_FRENZY = 28747,
};
-#define NECROTIC_PLAGUE_LK RAID_MODE<uint32>(70337, 73912, 73913, 73914)
-#define NECROTIC_PLAGUE_PLR RAID_MODE<uint32>(70338, 73785, 73786, 73787)
-#define REMORSELESS_WINTER_1 RAID_MODE<uint32>(68981, 74270, 74271, 74272)
-#define REMORSELESS_WINTER_2 RAID_MODE<uint32>(72259, 74273, 74274, 74275)
-#define SUMMON_VALKYR RAID_MODE<uint32>(69037, 74361, 69037, 74361)
-//#define HARVEST_SOUL RAID_MODE<uint32>(68980, 74325, 74296, 74297)
-#define HARVESTED_SOUL_BUFF RAID_MODE<uint32>(72679, 74318, 74319, 74320)
-
enum Events
{
EVENT_NONE,
@@ -375,7 +366,7 @@ void SendPacketToPlayers(WorldPacket const* data, Unit* source)
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
if (player->GetAreaId() == AREA_THE_FROZEN_THRONE)
- player->GetSession()->SendPacket(data);
+ player->SendDirectMessage(data);
}
struct ShadowTrapLKTargetSelector
@@ -552,7 +543,7 @@ public:
if (--_counter)
{
- _owner->m_Events.AddEvent(this, _owner->m_Events.CalculateTime(3000));
+ _owner->m_Events.AddEventAtOffset(this, 3s);
return false;
}
@@ -826,12 +817,12 @@ public:
me->SetDisableGravity(false);
me->GetMotionMaster()->MoveFall();
if (Creature* frostmourne = me->FindNearestCreature(NPC_FROSTMOURNE_TRIGGER, 50.0f))
- frostmourne->DespawnOrUnsummon(1);
+ frostmourne->DespawnOrUnsummon(1ms);
if (Creature* terenas = me->FindNearestCreature(NPC_TERENAS_MENETHIL_OUTRO, 50.0f))
- terenas->DespawnOrUnsummon(1);
+ terenas->DespawnOrUnsummon(1ms);
- me->m_Events.AddEvent(new LichKingDeathEvent(*me), me->m_Events.CalculateTime(2500)); // die after spinning anim is over, so death anim is visible
- me->m_Events.AddEvent(new LichKingMovieEvent(*me), me->m_Events.CalculateTime(11500));
+ me->m_Events.AddEventAtOffset(new LichKingDeathEvent(*me), 2500ms); // die after spinning anim is over, so death anim is visible
+ me->m_Events.AddEventAtOffset(new LichKingMovieEvent(*me), 11500ms);
}
if (!_bFordringMustFallYell && me->GetHealth() < 500000)
@@ -862,7 +853,7 @@ public:
summon->CastSpell(summon, SPELL_RISEN_WITCH_DOCTOR_SPAWN, true);
summon->SetReactState(REACT_PASSIVE);
summon->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
- summon->m_Events.AddEvent(new StartMovementEvent(me, summon), summon->m_Events.CalculateTime(5000));
+ summon->m_Events.AddEventAtOffset(new StartMovementEvent(me, summon), 5s);
break;
case NPC_RAGING_SPIRIT:
summon->SetHomePosition(CenterPosition);
@@ -872,7 +863,7 @@ public:
summon->SetReactState(REACT_PASSIVE);
summon->GetMotionMaster()->MoveRandom(10.0f);
if (_phase == PHASE_THREE)
- summon->m_Events.AddEvent(new VileSpiritActivateEvent(summon), summon->m_Events.CalculateTime(15000));
+ summon->m_Events.AddEventAtOffset(new VileSpiritActivateEvent(summon), 15s);
break;
}
case NPC_STRANGULATE_VEHICLE:
@@ -885,8 +876,8 @@ public:
summon->StopMovingOnCurrentPos();
break;
case NPC_VALKYR_SHADOWGUARD:
- if (_phase == PHASE_THREE || events.GetNextEventTime(EVENT_QUAKE_2))
- summon->DespawnOrUnsummon(1);
+ if (_phase == PHASE_THREE || events.HasTimeUntilEvent(EVENT_QUAKE_2))
+ summon->DespawnOrUnsummon(1ms);
break;
default:
break;
@@ -915,7 +906,7 @@ public:
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
- if (spell->Id == HARVESTED_SOUL_BUFF && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
+ if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVESTED_SOUL_LK_BUFF, me) && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
{
_lastTalkTimeBuff = GameTime::GetGameTime().count();
Talk(SAY_LK_FROSTMOURNE_KILL);
@@ -924,7 +915,7 @@ public:
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{
- if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2)
+ if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_1, me) || spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_2, me))
{
me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5s);
me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f);
@@ -944,7 +935,7 @@ public:
Talk(SAY_LK_REMORSELESS_WINTER);
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
me->CastSpell(me, SPELL_REMORSELESS_WINTER_1, false);
- //events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15mins on movies
+ //events.DelayEvents(62500ms, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15mins on movies
events.ScheduleEvent(EVENT_QUAKE, 62s + 500ms);
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500ms, EVENT_GROUP_ABILITIES);
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8s, EVENT_GROUP_ABILITIES);
@@ -956,7 +947,7 @@ public:
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
me->CastSpell(me, SPELL_REMORSELESS_WINTER_2, false);
summons.DespawnEntry(NPC_VALKYR_SHADOWGUARD);
- //events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15 mins on movies
+ //events.DelayEvents(62500ms, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15 mins on movies
events.ScheduleEvent(EVENT_QUAKE_2, 62s + 500ms);
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500ms, EVENT_GROUP_ABILITIES);
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8s, EVENT_GROUP_ABILITIES);
@@ -1064,7 +1055,7 @@ public:
events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES);
break;
case EVENT_NECROTIC_PLAGUE:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR)))
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE, me), sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE_JUMP, me))))
{
Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target);
me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false);
@@ -1081,11 +1072,11 @@ public:
case EVENT_PAIN_AND_SUFFERING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
{
- //events.DelayEventsToMax(500, EVENT_GROUP_ABILITIES);
+ //events.DelayEventsToMax(500ms, EVENT_GROUP_ABILITIES);
me->SetFacingTo(me->GetAngle(target));
me->CastSpell(target, SPELL_PAIN_AND_SUFFERING, false);
}
- events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, (IsHeroic() ? urand(1250, 1750) : urand(1750, 2250)), EVENT_GROUP_ABILITIES);
+ events.Repeat((IsHeroic() ? randtime(1250ms, 1750ms) : randtime(1750ms, 2250ms)));
break;
case EVENT_SUMMON_ICE_SPHERE:
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_ICE_SPHERE, false);
@@ -1098,21 +1089,21 @@ public:
break;
case EVENT_DEFILE:
{
- uint32 evTime = events.GetNextEventTime(EVENT_SUMMON_VALKYR);
+ Milliseconds evTime = events.GetTimeUntilEvent(EVENT_SUMMON_VALKYR);
// if defile (cast time 2sec) is less than 3 before valkyr appears
// we've to decide
- if (evTime && (events.GetTimer() > evTime || evTime - events.GetTimer() < 5000))
+ if (evTime < 5s)
{
// if valkyr is less than 1.5 secs after defile (cast time 2 sec) then we've a sync issue, so
// we need to cancel it (break) and schedule a defile to be casted 5 or 4 seconds after valkyr
- if (events.GetTimer() > evTime || evTime - events.GetTimer() < 3500)
+ if (evTime < 3500ms)
{
- uint32 t = events.GetTimer() > evTime ? 0 : evTime - events.GetTimer();
- events.ScheduleEvent(EVENT_DEFILE, t + (Is25ManRaid() ? 5000 : 4000), EVENT_GROUP_ABILITIES);
+ Milliseconds t = evTime > 0ms ? evTime : 0ms;
+ events.ScheduleEvent(EVENT_DEFILE, t + (Is25ManRaid() ? 5s : 4s), EVENT_GROUP_ABILITIES);
break;
}
- // if valkyr is coming between 1.5 and 3 seconds after defile then we've to
+ // if valkyr is coming within 2,5 seconds after defile then we've to
// delay valkyr just a bit
events.RescheduleEvent(EVENT_SUMMON_VALKYR, 5s, EVENT_GROUP_ABILITIES);
}
@@ -1145,17 +1136,14 @@ public:
{
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_SUMMON_VALKYR);
- me->CastSpell((Unit*)nullptr, SUMMON_VALKYR, false);
+ me->CastSpell((Unit*)nullptr, SPELL_SUMMON_VALKYR, false);
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES);
// schedule a defile (or reschedule it) if next defile event
// doesn't exist ( now > next defile ) or defile is coming too soon
- uint32 minTime = (Is25ManRaid() ? 5000 : 4000);
- if (uint32 evTime = events.GetNextEventTime(EVENT_DEFILE))
- if (events.GetTimer() > evTime || evTime - events.GetTimer() < minTime)
- {
- events.RescheduleEvent(EVENT_DEFILE, minTime, EVENT_GROUP_ABILITIES);
- }
+ Milliseconds minTime = (Is25ManRaid() ? 5s : 4s);
+ if (events.GetTimeUntilEvent(EVENT_DEFILE) < minTime)
+ events.RescheduleEvent(EVENT_DEFILE, minTime, EVENT_GROUP_ABILITIES);
}
break;
case EVENT_VILE_SPIRITS:
@@ -1180,7 +1168,7 @@ public:
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
events.ScheduleEvent(EVENT_START_ATTACK, 55s);
- events.DelayEvents(52500, EVENT_GROUP_VILE_SPIRITS);
+ events.DelayEvents(52500ms, EVENT_GROUP_VILE_SPIRITS);
events.CancelEvent(EVENT_DEFILE);
events.CancelEvent(EVENT_SOUL_REAPER);
events.ScheduleEvent(EVENT_FROSTMOURNE_HEROIC, 6s, EVENT_GROUP_ABILITIES);
@@ -1192,7 +1180,7 @@ public:
if (summon->GetEntry() == NPC_VILE_SPIRIT)
{
summon->m_Events.KillAllEvents(true);
- summon->m_Events.AddEvent(new VileSpiritActivateEvent(summon), summon->m_Events.CalculateTime(55000));
+ summon->m_Events.AddEventAtOffset(new VileSpiritActivateEvent(summon), 55s);
summon->GetMotionMaster()->Clear(true);
summon->StopMoving();
summon->SetReactState(REACT_PASSIVE);
@@ -1216,7 +1204,7 @@ public:
{
spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_1, true); // summons bombs randomly
spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_2, true); // summons bombs on players
- spawner->m_Events.AddEvent(new TriggerWickedSpirit(spawner), spawner->m_Events.CalculateTime(3000));
+ spawner->m_Events.AddEventAtOffset(new TriggerWickedSpirit(spawner), 3s);
terenas->SetImmuneToAll(true); // to avoid being healed by player trinket procs. terenas' health doesn't matter on heroic
}
}
@@ -1508,9 +1496,9 @@ public:
theLichKing->GetMotionMaster()->MovePoint(0, CenterPosition);
uint32 travelTime = 1000 * theLichKing->GetExactDist(&CenterPosition) / theLichKing->GetSpeed(MOVE_WALK) + 1000;
- _events.ScheduleEvent(EVENT_OUTRO_LK_TALK_4, 1 + travelTime);
- _events.ScheduleEvent(EVENT_OUTRO_LK_RAISE_DEAD, 1000 + travelTime);
- _events.ScheduleEvent(EVENT_OUTRO_LK_TALK_5, 29000 + travelTime);
+ _events.ScheduleEvent(EVENT_OUTRO_LK_TALK_4, Milliseconds(1 + travelTime));
+ _events.ScheduleEvent(EVENT_OUTRO_LK_RAISE_DEAD, Milliseconds(1000 + travelTime));
+ _events.ScheduleEvent(EVENT_OUTRO_LK_TALK_5, Milliseconds(29000 + travelTime));
}
break;
case EVENT_OUTRO_LK_TALK_4:
@@ -2081,7 +2069,7 @@ class spell_the_lich_king_shadow_trap_periodic : public SpellScript
if (Aura* a = GetCaster()->GetAura(SPELL_SHADOW_TRAP_AURA))
a->SetDuration(0);
if (GetCaster()->IsCreature())
- GetCaster()->ToCreature()->DespawnOrUnsummon(3000);
+ GetCaster()->ToCreature()->DespawnOrUnsummon(3s);
}
void Register() override
@@ -2137,7 +2125,7 @@ public:
{
me->RemoveAllAuras();
me->CastSpell(me, SPELL_ICE_BURST, true);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
targetGUID.Clear();
timer = 9999;
me->InterruptNonMeleeSpells(true);
@@ -2241,7 +2229,7 @@ public:
if (Player* plr = ScriptedAI::SelectTargetFromPlayerList(100.0f, 0, true))
plr->CastSpell(me, SPELL_RAGING_SPIRIT_VISUAL_CLONE, true);
else
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
@@ -2355,8 +2343,7 @@ class spell_the_lich_king_defile : public SpellScript
{
targets.remove_if(VehicleCheck());
targets.remove_if(Acore::AllWorldObjectsInExactRange(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X), true));
- uint32 strangulatedAura[4] = {68980, 74325, 74296, 74297};
- targets.remove_if(Acore::UnitAuraCheck(true, strangulatedAura[GetCaster()->GetMap()->GetDifficulty()]));
+ targets.remove_if(Acore::UnitAuraCheck(true, sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVEST_SOUL, GetCaster())));
}
void ChangeDamageAndGrow()
@@ -2452,7 +2439,7 @@ public:
if (IsHeroic())
GoSiphon();
else
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
@@ -2522,7 +2509,7 @@ public:
if (IsHeroic())
GoSiphon();
else
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
break;
case POINT_START_SIPHON:
@@ -2539,7 +2526,7 @@ public:
}
}
- void SetGUID(ObjectGuid guid, int32 /* = 0*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /* = 0*/) override
{
_grabbedPlayer = guid;
}
@@ -2568,8 +2555,8 @@ public:
me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
me->SetCanFly(false);
me->SetDisableGravity(false);
- me->GetMotionMaster()->MovePoint(POINT_DROP_PLAYER, _destPoint, false);
- me->SetDisableGravity(true, true);
+ me->GetMotionMaster()->MovePoint(POINT_DROP_PLAYER, _destPoint, FORCED_MOVEMENT_NONE, 0.f, false);
+ me->SetDisableGravity(true);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
break;
case EVENT_MOVE_TO_SIPHON_POS:
@@ -2620,7 +2607,7 @@ public:
me->GetMotionMaster()->Clear();
me->StopMovingOnCurrentPos();
- _events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 0);
+ _events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 0ms);
}
};
@@ -2735,7 +2722,7 @@ class spell_the_lich_king_valkyr_target_search : public SpellScript
if (Unit* target = GetHitUnit())
{
GetCaster()->GetMotionMaster()->MoveCharge(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + 4.0f, 42.0f, EVENT_CHARGE);
- GetCaster()->SetDisableGravity(true, true);
+ GetCaster()->SetDisableGravity(true);
}
}
@@ -2886,7 +2873,7 @@ class spell_the_lich_king_vile_spirit_damage_target_search : public SpellScript
c->GetMotionMaster()->Clear(true);
c->StopMoving();
c->CastSpell((Unit*)nullptr, SPELL_SPIRIT_BURST, true);
- c->DespawnOrUnsummon(3000);
+ c->DespawnOrUnsummon(3s);
c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
}
@@ -3002,7 +2989,7 @@ public:
_events.Reset();
me->RemoveAllAuras();
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
lichKing->AI()->SummonedCreatureDespawn(me);
@@ -3053,7 +3040,7 @@ public:
case EVENT_DESPAWN_SELF:
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
lichKing->AI()->SummonedCreatureDespawn(me);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
break;
default:
break;
@@ -3101,7 +3088,7 @@ public:
{
_events.Reset();
me->CastSpell((Unit*)nullptr, SPELL_RESTORE_SOUL, false);
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
}
break;
}
@@ -3121,14 +3108,14 @@ public:
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
{
warden->CastSpell((Unit*)nullptr, SPELL_DESTROY_SOUL, false);
- warden->DespawnOrUnsummon(2000);
+ warden->DespawnOrUnsummon(2s);
}
me->CastSpell(me, SPELL_TERENAS_LOSES_INSIDE, false);
me->SetDisplayId(16946);
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
}
}
}
@@ -3417,7 +3404,7 @@ public:
npc_lk_spirit_bombAI(Creature* creature) : NullCreatureAI(creature)
{
me->SetReactState(REACT_PASSIVE);
- me->DespawnOrUnsummon(45000); // for safety
+ me->DespawnOrUnsummon(45s); // for safety
timer = 0;
}
@@ -3450,7 +3437,7 @@ public:
timer = 0;
me->RemoveAllAuras();
me->CastSpell((Unit*)nullptr, SPELL_EXPLOSION, false);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
else
timer -= diff;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index 75bdea092b..fce8465d4d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -52,8 +52,8 @@ enum Spells
SPELL_NIGHTMARE_PORTAL_VISUAL_PRE = 71986,
SPELL_NIGHTMARE_CLOUD = 71970,
SPELL_NIGHTMARE_CLOUD_VISUAL = 71939,
- SPELL_PRE_SUMMON_DREAM_PORTAL = 72224,
- SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480,
+ SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, // normal
+ SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, // heroic
SPELL_SUMMON_DREAM_PORTAL = 71305,
SPELL_SUMMON_NIGHTMARE_PORTAL = 71987,
SPELL_DREAMWALKERS_RAGE = 71189,
@@ -94,16 +94,13 @@ enum Spells
SPELL_GUT_SPRAY = 70633,
SPELL_ROT_WORM_SPAWNER = 70675,
- // Dream Cloud
+ // Dream Cloud (normal)
SPELL_EMERALD_VIGOR = 70873,
- // Nightmare Cloud
+ // Nightmare Cloud (heroic)
SPELL_TWISTED_NIGHTMARE = 71941,
};
-#define SUMMON_PORTAL RAID_MODE<uint32>(SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL)
-#define EMERALD_VIGOR RAID_MODE<uint32>(SPELL_EMERALD_VIGOR, SPELL_EMERALD_VIGOR, SPELL_TWISTED_NIGHTMARE, SPELL_TWISTED_NIGHTMARE)
-
enum Events
{
// Valithria Dreamwalker
@@ -177,14 +174,14 @@ private:
class DelayedCastEvent : public BasicEvent
{
public:
- DelayedCastEvent(Creature* trigger, uint32 spellId, ObjectGuid originalCaster, uint32 despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
+ DelayedCastEvent(Creature* trigger, uint32 spellId, ObjectGuid originalCaster, Milliseconds despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
{
}
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
_trigger->CastSpell(_trigger, _spellId, false, nullptr, nullptr, _originalCaster);
- if (_despawnTime)
+ if (_despawnTime > 0ms)
_trigger->DespawnOrUnsummon(_despawnTime);
return true;
}
@@ -193,7 +190,7 @@ private:
Creature* _trigger;
ObjectGuid _originalCaster;
uint32 _spellId;
- uint32 _despawnTime;
+ Milliseconds _despawnTime;
};
class AuraRemoveEvent : public BasicEvent
@@ -406,7 +403,7 @@ public:
// this display id was found in sniff instead of the one on aura
me->SetDisplayId(11686);
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->DespawnOrUnsummon(4000);
+ me->DespawnOrUnsummon(4s);
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
lichKing->CastSpell(lichKing, SPELL_SPAWN_CHEST, false);
_instance->SetData(DATA_WEEKLY_QUEST_ID, 0); // show hidden npc if necessary
@@ -417,13 +414,13 @@ public:
{
if (summon->GetEntry() == NPC_DREAM_PORTAL_PRE_EFFECT)
{
- summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_SUMMON_DREAM_PORTAL, me->GetGUID(), 6000), summon->m_Events.CalculateTime(15000));
- summon->m_Events.AddEvent(new AuraRemoveEvent(summon, SPELL_DREAM_PORTAL_VISUAL_PRE), summon->m_Events.CalculateTime(15000));
+ summon->m_Events.AddEventAtOffset(new DelayedCastEvent(summon, SPELL_SUMMON_DREAM_PORTAL, me->GetGUID(), 6s), 15s);
+ summon->m_Events.AddEventAtOffset(new AuraRemoveEvent(summon, SPELL_DREAM_PORTAL_VISUAL_PRE), 15s);
}
else if (summon->GetEntry() == NPC_NIGHTMARE_PORTAL_PRE_EFFECT)
{
- summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_SUMMON_NIGHTMARE_PORTAL, me->GetGUID(), 6000), summon->m_Events.CalculateTime(15000));
- summon->m_Events.AddEvent(new AuraRemoveEvent(summon, SPELL_NIGHTMARE_PORTAL_VISUAL_PRE), summon->m_Events.CalculateTime(15000));
+ summon->m_Events.AddEventAtOffset(new DelayedCastEvent(summon, SPELL_SUMMON_NIGHTMARE_PORTAL, me->GetGUID(), 6s), 15s);
+ summon->m_Events.AddEventAtOffset(new AuraRemoveEvent(summon, SPELL_NIGHTMARE_PORTAL_VISUAL_PRE), 15s);
}
}
@@ -462,7 +459,7 @@ public:
if (!IsHeroic())
Talk(SAY_VALITHRIA_DREAM_PORTAL);
for (uint32 i = 0; i < _portalCount; ++i)
- me->CastSpell(me, SUMMON_PORTAL, false);
+ me->CastSpell(me, SPELL_PRE_SUMMON_DREAM_PORTAL, false);
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
break;
case EVENT_DREAM_SLIP:
@@ -579,7 +576,7 @@ public:
void DoAction(int32 action) override
{
if (action == ACTION_DEATH)
- me->m_Events.AddEvent(new ValithriaDespawner(me), me->m_Events.CalculateTime(5000));
+ me->m_Events.AddEventAtOffset(new ValithriaDespawner(me), 5s);
else if (action == ACTION_ENTER_COMBAT)
{
if (!me->IsInCombat())
@@ -750,9 +747,9 @@ public:
void JustSummoned(Creature* summon) override
{
if (summon->GetEntry() == NPC_COLUMN_OF_FROST)
- summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, ObjectGuid::Empty, 8000), summon->m_Events.CalculateTime(2000));
+ summon->m_Events.AddEventAtOffset(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, ObjectGuid::Empty, 8s), 2s);
else if (summon->GetEntry() == NPC_MANA_VOID)
- summon->DespawnOrUnsummon(36000);
+ summon->DespawnOrUnsummon(36s);
}
void UpdateAI(uint32 diff) override
@@ -885,8 +882,8 @@ public:
me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveIdle();
// must use originalCaster the same for all clouds to allow stacking
- me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
- me->DespawnOrUnsummon(1000);
+ me->CastSpell(me, SPELL_EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
+ me->DespawnOrUnsummon(1s);
break;
default:
break;
@@ -1054,7 +1051,7 @@ public:
timer = 0;
me->SetDisplayId(11686);
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
}
else
timer -= diff;
@@ -1096,7 +1093,7 @@ public:
void JustSummoned(Creature* summon) override
{
if (me->GetInstanceScript() && me->GetInstanceScript()->GetBossState(DATA_VALITHRIA_DREAMWALKER) == DONE)
- summon->DespawnOrUnsummon(1);
+ summon->DespawnOrUnsummon(1ms);
else if (Unit* target = SelectTargetFromPlayerList(200.0f))
summon->AI()->AttackStart(target);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 5c6e308310..e4f745aae0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -533,13 +533,13 @@ public:
case EVENT_SAURFANG_RUN:
if (Creature* factionNPC = ObjectAccessor::GetCreature(*me, _factionNPC))
{
- factionNPC->GetMotionMaster()->MovePath(factionNPC->GetSpawnId() * 10, false);
- factionNPC->DespawnOrUnsummon(46500);
+ factionNPC->GetMotionMaster()->MoveWaypoint(factionNPC->GetSpawnId() * 10, false);
+ factionNPC->DespawnOrUnsummon(46500ms);
std::list<Creature*> followers;
factionNPC->GetCreaturesWithEntryInRange(followers, 30, _instance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? NPC_KOR_KRON_GENERAL : NPC_ALLIANCE_COMMANDER);
for (Creature* follower : followers)
{
- follower->DespawnOrUnsummon(46500);
+ follower->DespawnOrUnsummon(46500ms);
}
}
me->setActive(false);
@@ -679,7 +679,7 @@ public:
{
case 1000:
case 11000:
- _events.ScheduleEvent(EVENT_ACTIVATE_TRAP, uint32(action));
+ _events.ScheduleEvent(EVENT_ACTIVATE_TRAP, Milliseconds(action));
break;
default:
break;
@@ -772,7 +772,7 @@ public:
}
}
- void SetGUID(ObjectGuid guid, int32 type/* = 0*/) override
+ void SetGUID(ObjectGuid const& guid, int32 type/* = 0*/) override
{
if (type == ACTION_VRYKUL_DEATH)
{
@@ -934,7 +934,7 @@ public:
case EVENT_START_PATHING:
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToAll(false);
- Start(true, true);
+ Start(true);
break;
case EVENT_SCOURGE_STRIKE:
DoCastVictim(SPELL_SCOURGE_STRIKE);
@@ -1016,15 +1016,15 @@ public:
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE))) // _isEventDone = true, setActive(false)
crok->AI()->DoAction(ACTION_RESET_EVENT);
- uint64 delay = 6000;
+ Milliseconds delay = 6s;
for (uint32 i = 0; i < 4; ++i)
if (Creature* crusader = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
if (crusader->IsAlive())
{
if (crusader->GetEntry() == crusader->GetCreatureData()->id1)
{
- crusader->m_Events.AddEvent(new CaptainSurviveTalk(*crusader), crusader->m_Events.CalculateTime(delay));
- delay += 6000;
+ crusader->m_Events.AddEventAtOffset(new CaptainSurviveTalk(*crusader), delay);
+ delay += 6s;
}
else
Unit::Kill(crusader, crusader);
@@ -1810,7 +1810,7 @@ public:
{
_vehicleCheckTimer = 500;
if (!me->GetVehicle())
- me->DespawnOrUnsummon(100);
+ me->DespawnOrUnsummon(100ms);
}
else
_vehicleCheckTimer -= diff;
@@ -2151,7 +2151,7 @@ class spell_svalna_remove_spear : public SpellScript
{
if (Unit* vehicle = target->GetVehicleBase())
vehicle->RemoveAurasDueToSpell(SPELL_IMPALING_SPEAR);
- target->DespawnOrUnsummon(1);
+ target->DespawnOrUnsummon(1ms);
}
}
@@ -2796,38 +2796,38 @@ class SeveredEssenceSpellInfo
public:
uint8 Class;
uint32 id;
- uint32 cooldown_ms;
+ Milliseconds cooldown_ms;
uint8 targetType;
float range;
};
SeveredEssenceSpellInfo sesi_spells[] =
{
- {CLASS_SHAMAN, 71938, 5000, 1, 0.0f},
- {CLASS_PALADIN, 57767, 8000, 2, 30.0f},
- {CLASS_WARLOCK, 71937, 10000, 1, 0.0f},
- {CLASS_DEATH_KNIGHT, 49576, 15000, 1, 30.0f},
- {CLASS_ROGUE, 71933, 8000, 1, 0.0f},
- {CLASS_MAGE, 71928, 4000, 1, 40.0f},
- {CLASS_PALADIN, 71930, 5000, 2, 40.0f},
- {CLASS_ROGUE, 71955, 40000, 1, 30.0f},
- {CLASS_PRIEST, 71931, 5000, 2, 40.0f},
- {CLASS_SHAMAN, 71934, 7000, 1, 0.0f},
- {CLASS_DRUID, 71925, 5000, 1, 0.0f},
- {CLASS_DEATH_KNIGHT, 71951, 8000, 1, 0.0f},
- {CLASS_DEATH_KNIGHT, 71924, 8000, 1, 0.0f},
- {CLASS_WARLOCK, 71965, 20000, 0, 0.0f},
- {CLASS_PRIEST, 71932, 8000, 2, 40.0f},
- {CLASS_DRUID, 71926, 10000, 1, 0.0f},
- {CLASS_WARLOCK, 71936, 9000, 1, 0.0f},
- {CLASS_ROGUE, 57640, 3000, 1, 0.0f},
- {CLASS_WARRIOR, 71961, 5000, 1, 0.0f},
- {CLASS_MAGE, 71929, 10000, 1, 0.0f},
- {CLASS_WARRIOR, 53395, 5000, 1, 0.0f},
- {CLASS_WARRIOR, 71552, 5000, 1, 0.0f},
- {CLASS_HUNTER, 36984, 7000, 1, 0.0f},
- {CLASS_HUNTER, 29576, 5000, 1, 0.0f},
- {0, 0, 0, 0, 0.0f},
+ { CLASS_SHAMAN, 71938, 5s, 1, 0.0f },
+ { CLASS_PALADIN, 57767, 8s, 2, 30.0f },
+ { CLASS_WARLOCK, 71937, 10s, 1, 0.0f },
+ { CLASS_DEATH_KNIGHT, 49576, 15s, 1, 30.0f },
+ { CLASS_ROGUE, 71933, 8s, 1, 0.0f },
+ { CLASS_MAGE, 71928, 4s, 1, 40.0f },
+ { CLASS_PALADIN, 71930, 5s, 2, 40.0f },
+ { CLASS_ROGUE, 71955, 40s, 1, 30.0f },
+ { CLASS_PRIEST, 71931, 5s, 2, 40.0f },
+ { CLASS_SHAMAN, 71934, 7s, 1, 0.0f },
+ { CLASS_DRUID, 71925, 5s, 1, 0.0f },
+ { CLASS_DEATH_KNIGHT, 71951, 8s, 1, 0.0f },
+ { CLASS_DEATH_KNIGHT, 71924, 8s, 1, 0.0f },
+ { CLASS_WARLOCK, 71965, 20s, 0, 0.0f },
+ { CLASS_PRIEST, 71932, 8s, 2, 40.0f },
+ { CLASS_DRUID, 71926, 10s, 1, 0.0f },
+ { CLASS_WARLOCK, 71936, 9s, 1, 0.0f },
+ { CLASS_ROGUE, 57640, 3s, 1, 0.0f },
+ { CLASS_WARRIOR, 71961, 5s, 1, 0.0f },
+ { CLASS_MAGE, 71929, 10s, 1, 0.0f },
+ { CLASS_WARRIOR, 53395, 5s, 1, 0.0f },
+ { CLASS_WARRIOR, 71552, 5s, 1, 0.0f },
+ { CLASS_HUNTER, 36984, 7s, 1, 0.0f },
+ { CLASS_HUNTER, 29576, 5s, 1, 0.0f },
+ { 0, 0, 0ms, 0, 0.0f }
};
class npc_icc_severed_essence : public CreatureScript
@@ -2862,7 +2862,7 @@ public:
if (sesi_spells[i].id)
{
if (Class == sesi_spells[i].Class)
- events.ScheduleEvent(i + 1, sesi_spells[i].cooldown_ms / 4);
+ events.ScheduleEvent(i + 1, Milliseconds(sesi_spells[i].cooldown_ms / 4));
}
else
break;
@@ -2895,7 +2895,7 @@ public:
if (target)
me->CastSpell(target, sesi_spells[e - 1].id, TRIGGERED_IGNORE_SHAPESHIFT);
- events.RepeatEvent(sesi_spells[e - 1].cooldown_ms);
+ events.Repeat(sesi_spells[e - 1].cooldown_ms);
}
if (Class == CLASS_HUNTER)
@@ -3337,7 +3337,7 @@ public:
void ScheduleBroodlings()
{
for (uint8 i = 0; i < 30; ++i)
- events.ScheduleEvent(EVENT_SUMMON_BROODLING, 10000 + i * 350);
+ events.ScheduleEvent(EVENT_SUMMON_BROODLING, Milliseconds(10000 + i * 350));
}
void SummonBroodling()
@@ -3347,7 +3347,7 @@ public:
if (Creature* broodling = me->SummonCreature(NPC_NERUBAR_BROODLING, me->GetPositionX() + cos(o) * dist, me->GetPositionY() + std::sin(o) * dist, 250.0f, Position::NormalizeOrientation(o - M_PI)))
{
broodling->CastSpell(broodling, SPELL_WEB_BEAM2, false);
- broodling->GetMotionMaster()->MovePoint(POINT_ENTER_COMBAT, broodling->GetPositionX(), broodling->GetPositionY(), 213.03f, false);
+ broodling->GetMotionMaster()->MovePoint(POINT_ENTER_COMBAT, broodling->GetPositionX(), broodling->GetPositionY(), 213.03f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
}
}
@@ -3521,7 +3521,7 @@ public:
me->CastSpell(me, SPELL_GIANT_INSECT_SWARM, true);
for (uint8 i = 0; i < 60; ++i)
- events.ScheduleEvent(EVENT_GAUNTLET_PHASE1, i * 1000);
+ events.ScheduleEvent(EVENT_GAUNTLET_PHASE1, Seconds(i));
events.ScheduleEvent(EVENT_GAUNTLET_PHASE2, 1min);
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 394225e21a..7929a51ab6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -268,7 +268,7 @@ public:
if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != DONE)
SpawnGunship();
- if (GetBossState(DATA_SINDRAGOSA) != DONE && IsSindragosaIntroDone && !GetCreature(DATA_SINDRAGOSA) && Events.GetTimeUntilEvent(EVENT_RESPAWN_SINDRAGOSA) == Milliseconds::max())
+ if (GetBossState(DATA_SINDRAGOSA) != DONE && IsSindragosaIntroDone && !GetCreature(DATA_SINDRAGOSA) && !Events.HasTimeUntilEvent(EVENT_RESPAWN_SINDRAGOSA))
{
Events.ScheduleEvent(EVENT_RESPAWN_SINDRAGOSA, 30s);
}
@@ -499,7 +499,7 @@ public:
break;
case NPC_INFILTRATOR_MINCHAR_BQ:
if (BloodQuickeningState == DONE)
- creature->DespawnOrUnsummon(1);
+ creature->DespawnOrUnsummon(1ms);
break;
case NPC_MINCHAR_BEAM_STALKER:
if (BloodQuickeningState != DONE)
@@ -513,7 +513,7 @@ public:
spellId = BLOOD_BEAM_VISUAL_LLEG;
else
spellId = BLOOD_BEAM_VISUAL_RLEG;
- creature->m_Events.AddEvent(new DelayedCastMincharEvent(creature, spellId), creature->m_Events.CalculateTime(1000));
+ creature->m_Events.AddEventAtOffset(new DelayedCastMincharEvent(creature, spellId), 1s);
}
break;
case NPC_SKYBREAKER_DECKHAND:
@@ -608,7 +608,7 @@ public:
std::string name2("Kor'kron ");
if (!creature->GetTransport() && creature->GetPositionZ() <= 205.0f && creature->GetExactDist2d(-439.0f, 2210.0f) <= 150.0f && (creature->GetEntry() == 37544 || creature->GetEntry() == 37545 || creature->GetName().compare(0, name1.length(), name1) == 0 || creature->GetName().compare(0, name2.length(), name2) == 0))
if (!creature->GetLootRecipient())
- creature->m_Events.AddEvent(new RespawnEvent(*creature), creature->m_Events.CalculateTime(3000));
+ creature->m_Events.AddEventAtOffset(new RespawnEvent(*creature), 3s);
switch (creature->GetEntry())
{
@@ -661,7 +661,7 @@ public:
{
c->CastSpell(c, VOID_ZONE_VISUAL, true);
unit->SummonCreature(NPC_RISEN_DEATHSPEAKER_SERVANT, *unit, TEMPSUMMON_MANUAL_DESPAWN);
- unit->ToCreature()->DespawnOrUnsummon(3000);
+ unit->ToCreature()->DespawnOrUnsummon(3s);
}
break;
default:
@@ -1742,7 +1742,7 @@ public:
{
sindragosa->setActive(true);
sindragosa->SetDisableGravity(true);
- sindragosa->GetMotionMaster()->MovePath(NPC_SINDRAGOSA * 10, true);
+ sindragosa->GetMotionMaster()->MoveWaypoint(NPC_SINDRAGOSA * 10, true);
if (TempSummon* summon = sindragosa->ToTempSummon())
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index b8cc1d9c2a..276bb77a2b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -35,10 +35,8 @@ enum GuardSays
enum Spells
{
- SPELL_IMPALE_10 = 28783,
- SPELL_IMPALE_25 = 56090,
- SPELL_LOCUST_SWARM_10 = 28785,
- SPELL_LOCUST_SWARM_25 = 54021,
+ SPELL_IMPALE = 28783,
+ SPELL_LOCUST_SWARM = 28785,
SPELL_SUMMON_CORPSE_SCRABS_5 = 29105,
SPELL_SUMMON_CORPSE_SCRABS_10 = 28864,
SPELL_BERSERK = 26662
@@ -138,12 +136,12 @@ public:
}
ScheduleTimedEvent(15s, [&] {
- DoCastRandomTarget(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25));
+ DoCastRandomTarget(SPELL_IMPALE);
}, 20s);
ScheduleTimedEvent(70s, 2min, [&] {
Talk(EMOTE_LOCUST);
- DoCastSelf(RAID_MODE(SPELL_LOCUST_SWARM_10, SPELL_LOCUST_SWARM_25));
+ DoCastSelf(SPELL_LOCUST_SWARM);
me->m_Events.AddEventAtOffset([&]
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index 9ab1fcde0f..4a7a16ee72 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -18,6 +18,7 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "SpellMgr.h"
#include "naxxramas.h"
enum Yells
@@ -37,7 +38,6 @@ enum Spells
SPELL_RAIN_OF_FIRE = 28794,
SPELL_FRENZY = 28798,
SPELL_WIDOWS_EMBRACE = 28732,
- SPELL_MINION_WIDOWS_EMBRACE = 54097
};
enum Groups
@@ -143,7 +143,7 @@ public:
void SpellHit(Unit* caster, SpellInfo const* spell) override
{
- if (spell->Id == RAID_MODE(SPELL_WIDOWS_EMBRACE, SPELL_MINION_WIDOWS_EMBRACE))
+ if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_WIDOWS_EMBRACE, me))
{
Talk(EMOTE_WIDOWS_EMBRACE);
scheduler.RescheduleGroup(GROUP_FRENZY, 1min);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index 6439f45add..6f1405ea74 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -33,23 +33,17 @@ enum Spells
SPELL_MARK_OF_ZELIEK = 28835,
SPELL_MARK_DAMAGE = 28836,
// Korth'azz
- SPELL_KORTHAZZ_METEOR_10 = 28884,
- SPELL_KORTHAZZ_METEOR_25 = 57467,
+ SPELL_KORTHAZZ_METEOR = 28884,
// Blaumeux
- SPELL_BLAUMEUX_SHADOW_BOLT_10 = 57374,
- SPELL_BLAUMEUX_SHADOW_BOLT_25 = 57464,
- SPELL_BLAUMEUX_VOID_ZONE_10 = 28863,
- SPELL_BLAUMEUX_VOID_ZONE_25 = 57463,
+ SPELL_BLAUMEUX_SHADOW_BOLT = 57374,
+ SPELL_BLAUMEUX_VOID_ZONE = 28863,
SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381,
// Zeliek
- SPELL_ZELIEK_HOLY_WRATH_10 = 28883,
- SPELL_ZELIEK_HOLY_WRATH_25 = 57466,
- SPELL_ZELIEK_HOLY_BOLT_10 = 57376,
- SPELL_ZELIEK_HOLY_BOLT_25 = 57465,
+ SPELL_ZELIEK_HOLY_WRATH = 28883,
+ SPELL_ZELIEK_HOLY_BOLT = 57376,
SPELL_ZELIEK_CONDEMNATION = 57377,
// Rivendare
- SPELL_RIVENDARE_UNHOLY_SHADOW_10 = 28882,
- SPELL_RIVENDARE_UNHOLY_SHADOW_25 = 57369
+ SPELL_RIVENDARE_UNHOLY_SHADOW = 28882,
};
enum Events
@@ -87,15 +81,13 @@ enum FourHorsemen
const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ};
// PRIMARY SPELL
-const uint32 TABLE_SPELL_PRIMARY_10[4] = {SPELL_ZELIEK_HOLY_BOLT_10, SPELL_BLAUMEUX_SHADOW_BOLT_10, SPELL_RIVENDARE_UNHOLY_SHADOW_10, SPELL_KORTHAZZ_METEOR_10};
-const uint32 TABLE_SPELL_PRIMARY_25[4] = {SPELL_ZELIEK_HOLY_BOLT_25, SPELL_BLAUMEUX_SHADOW_BOLT_25, SPELL_RIVENDARE_UNHOLY_SHADOW_25, SPELL_KORTHAZZ_METEOR_25};
+const uint32 TABLE_SPELL_PRIMARY[4] = {SPELL_ZELIEK_HOLY_BOLT, SPELL_BLAUMEUX_SHADOW_BOLT, SPELL_RIVENDARE_UNHOLY_SHADOW, SPELL_KORTHAZZ_METEOR};
// PUNISH
const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0};
// SECONDARY SPELL
-const uint32 TABLE_SPELL_SECONDARY_10[4] = {SPELL_ZELIEK_HOLY_WRATH_10, SPELL_BLAUMEUX_VOID_ZONE_10, 0, 0};
-const uint32 TABLE_SPELL_SECONDARY_25[4] = {SPELL_ZELIEK_HOLY_WRATH_25, SPELL_BLAUMEUX_VOID_ZONE_25, 0, 0};
+const uint32 TABLE_SPELL_SECONDARY[4] = {SPELL_ZELIEK_HOLY_WRATH, SPELL_BLAUMEUX_VOID_ZONE, 0, 0};
const Position WaypointPositions[12] =
{
@@ -308,11 +300,11 @@ public:
return;
case EVENT_PRIMARY_SPELL:
Talk(SAY_TAUNT);
- me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId]), false);
+ me->CastSpell(me->GetVictim(), TABLE_SPELL_PRIMARY[horsemanId], false);
events.Repeat(15s);
return;
case EVENT_SECONDARY_SPELL:
- me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_SECONDARY_10[horsemanId], TABLE_SPELL_SECONDARY_25[horsemanId]), false);
+ me->CastSpell(me->GetVictim(), TABLE_SPELL_SECONDARY[horsemanId], false);
events.Repeat(15s);
return;
}
@@ -328,7 +320,7 @@ public:
}
if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim()))
{
- DoCastVictim(RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId]));
+ DoCastVictim(TABLE_SPELL_PRIMARY[horsemanId]);
}
else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim()))
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
index 30b678a876..41beeb9069 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
@@ -25,10 +25,8 @@
enum Spells
{
SPELL_MORTAL_WOUND = 25646,
- SPELL_ENRAGE_10 = 28371,
- SPELL_ENRAGE_25 = 54427,
- SPELL_DECIMATE_10 = 28374,
- SPELL_DECIMATE_25 = 54426,
+ SPELL_ENRAGE = 28371,
+ SPELL_DECIMATE = 28374,
SPELL_DECIMATE_DAMAGE = 28375,
SPELL_BERSERK = 26662,
SPELL_INFECTED_WOUND = 29306,
@@ -115,7 +113,7 @@ public:
me->SetInCombatWithZone();
events.ScheduleEvent(EVENT_MORTAL_WOUND, 10s);
events.ScheduleEvent(EVENT_ENRAGE, 22s);
- events.ScheduleEvent(EVENT_DECIMATE, RAID_MODE(110000, 90000));
+ events.ScheduleEvent(EVENT_DECIMATE, RAID_MODE(110s, 90s));
events.ScheduleEvent(EVENT_BERSERK, 6min);
events.ScheduleEvent(EVENT_SUMMON_ZOMBIE, 10s);
events.ScheduleEvent(EVENT_CAN_EAT_ZOMBIE, 1s);
@@ -184,7 +182,7 @@ public:
break;
case EVENT_ENRAGE:
Talk(EMOTE_ENRAGE);
- me->CastSpell(me, RAID_MODE(SPELL_ENRAGE_10, SPELL_ENRAGE_25), true);
+ me->CastSpell(me, SPELL_ENRAGE, true);
events.Repeat(22s);
break;
case EVENT_MORTAL_WOUND:
@@ -193,8 +191,8 @@ public:
break;
case EVENT_DECIMATE:
Talk(EMOTE_DECIMATE);
- me->CastSpell(me, RAID_MODE(SPELL_DECIMATE_10, SPELL_DECIMATE_25), false);
- events.RepeatEvent(RAID_MODE(110000, 90000));
+ me->CastSpell(me, SPELL_DECIMATE, false);
+ events.Repeat(RAID_MODE(110s, 90s));
break;
case EVENT_SUMMON_ZOMBIE:
{
@@ -218,7 +216,7 @@ public:
break;
}
case EVENT_CAN_EAT_ZOMBIE:
- events.RepeatEvent(1000);
+ events.Repeat(1s);
if (me->GetVictim()->GetEntry() == NPC_ZOMBIE_CHOW && me->IsWithinMeleeRange(me->GetVictim()))
{
me->CastCustomSpell(SPELL_CHOW_SEARCHER, SPELLVALUE_RADIUS_MOD, 20000, me, true);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
index 939f0bf194..f071424563 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -41,8 +41,7 @@ enum Spells
{
// Gothik
SPELL_HARVEST_SOUL = 28679,
- SPELL_SHADOW_BOLT_10 = 29317,
- SPELL_SHADOW_BOLT_25 = 56405,
+ SPELL_SHADOW_BOLT = 29317,
// Teleport spells
SPELL_TELEPORT_DEAD = 28025,
SPELL_TELEPORT_LIVE = 28026,
@@ -267,7 +266,7 @@ public:
std::vector<Player*> tList;
for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
{
- if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
+ if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
{
continue;
}
@@ -400,7 +399,7 @@ public:
Talk(SAY_INTRO_4);
break;
case EVENT_SHADOW_BOLT:
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SHADOW_BOLT_10, SPELL_SHADOW_BOLT_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
events.Repeat(1s);
break;
case EVENT_HARVEST_SOUL:
@@ -440,7 +439,7 @@ public:
if (gothikWaves[waveCount][0])
{
SummonHelpers(gothikWaves[waveCount][0]);
- events.RepeatEvent(gothikWaves[waveCount][1]);
+ events.Repeat(Milliseconds(gothikWaves[waveCount][1]));
}
else
{
@@ -522,7 +521,7 @@ public:
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 3s);
break;
case NPC_DEAD_RIDER:
- events.ScheduleEvent(EVENT_DRAIN_LIFE, 2000ms, 3500ms);
+ events.ScheduleEvent(EVENT_DRAIN_LIFE, 2s, 3500ms);
events.ScheduleEvent(EVENT_UNHOLY_FRENZY, 5s, 9s);
break;
case NPC_DEAD_HORSE:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
index 9a88b24a7b..60c0f0f9cf 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -29,10 +29,8 @@ enum Spells
SPELL_POISON_CLOUD = 28240,
SPELL_MUTATING_INJECTION = 28169,
SPELL_MUTATING_EXPLOSION = 28206,
- SPELL_SLIME_SPRAY_10 = 28157,
- SPELL_SLIME_SPRAY_25 = 54364,
- SPELL_POISON_CLOUD_DAMAGE_AURA_10 = 28158,
- SPELL_POISON_CLOUD_DAMAGE_AURA_25 = 54362,
+ SPELL_SLIME_SPRAY = 28157,
+ SPELL_POISON_CLOUD_DAMAGE_AURA = 28158,
SPELL_BERSERK = 26662,
SPELL_BOMBARD_SLIME = 28280
};
@@ -102,15 +100,7 @@ public:
events.ScheduleEvent(EVENT_POISON_CLOUD, 15s);
events.ScheduleEvent(EVENT_MUTATING_INJECTION, 20s);
events.ScheduleEvent(EVENT_SLIME_SPRAY, 10s);
- events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720000, 540000));
- }
-
- void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
- {
- if (spellInfo->Id == RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25) && target->IsPlayer())
- {
- me->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
- }
+ events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s));
}
void JustSummoned(Creature* cr) override
@@ -169,7 +159,7 @@ public:
break;
case EVENT_SLIME_SPRAY:
Talk(EMOTE_SLIME);
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
events.Repeat(20s);
break;
case EVENT_MUTATING_INJECTION:
@@ -177,7 +167,7 @@ public:
{
me->CastSpell(target, SPELL_MUTATING_INJECTION, false);
}
- events.RepeatEvent(6000 + uint32(120 * me->GetHealthPct()));
+ events.Repeat(Milliseconds(6000 + uint32(120 * me->GetHealthPct())));
break;
}
DoMeleeAttackIfReady();
@@ -223,7 +213,7 @@ public:
auraVisualTimer += diff;
if (auraVisualTimer >= 1000)
{
- me->CastSpell(me, (me->GetMap()->Is25ManRaid() ? SPELL_POISON_CLOUD_DAMAGE_AURA_25 : SPELL_POISON_CLOUD_DAMAGE_AURA_10), true);
+ me->CastSpell(me, SPELL_POISON_CLOUD_DAMAGE_AURA, true);
auraVisualTimer = 0;
}
}
@@ -291,10 +281,27 @@ class spell_grobbulus_mutating_injection_aura : public AuraScript
}
};
+class spell_grobbulus_slime_spray : public SpellScript
+{
+ PrepareSpellScript(spell_grobbulus_slime_spray);
+
+ void HandleHit()
+ {
+ if (Unit* target = GetHitUnit())
+ GetCaster()->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
+ }
+
+ void Register() override
+ {
+ OnHit += SpellHitFn(spell_grobbulus_slime_spray::HandleHit);
+ }
+};
+
void AddSC_boss_grobbulus()
{
new boss_grobbulus();
new boss_grobbulus_poison_cloud();
RegisterSpellScript(spell_grobbulus_mutating_injection_aura);
RegisterSpellScript(spell_grobbulus_poison);
+ RegisterSpellScript(spell_grobbulus_slime_spray);
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
index de73995e96..8ee7fe3cf8 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
@@ -34,8 +34,7 @@ enum Says
enum Spells
{
SPELL_SPELL_DISRUPTION = 29310,
- SPELL_DECREPIT_FEVER_10 = 29998,
- SPELL_DECREPIT_FEVER_25 = 55011,
+ SPELL_DECREPIT_FEVER = 29998,
SPELL_PLAGUE_CLOUD = 29350,
SPELL_TELEPORT_SELF = 30211
};
@@ -168,7 +167,7 @@ public:
events.Repeat(10s);
break;
case EVENT_DECEPIT_FEVER:
- me->CastSpell(me, RAID_MODE(SPELL_DECREPIT_FEVER_10, SPELL_DECREPIT_FEVER_25), false);
+ me->CastSpell(me, SPELL_DECREPIT_FEVER, false);
events.Repeat(22s, 25s);
break;
case EVENT_PLAGUE_CLOUD:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 57866c7b00..43c0df905b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -43,10 +43,8 @@ enum Yells
enum Spells
{
// Kel'Thzuad
- SPELL_FROST_BOLT_SINGLE_10 = 28478,
- SPELL_FROST_BOLT_SINGLE_25 = 55802,
- SPELL_FROST_BOLT_MULTI_10 = 28479,
- SPELL_FROST_BOLT_MULTI_25 = 55807,
+ SPELL_FROST_BOLT_SINGLE = 28478,
+ SPELL_FROST_BOLT_MULTI = 28479,
SPELL_SHADOW_FISURE = 27810,
SPELL_VOID_BLAST = 27812,
SPELL_DETONATE_MANA = 27819,
@@ -367,11 +365,11 @@ public:
me->CastSpell(me, SPELL_BERSERK, true);
break;
case EVENT_FROST_BOLT_SINGLE:
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_FROST_BOLT_SINGLE_10, SPELL_FROST_BOLT_SINGLE_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_FROST_BOLT_SINGLE, false);
events.Repeat(2s, 10s);
break;
case EVENT_FROST_BOLT_MULTI:
- me->CastSpell(me, RAID_MODE(SPELL_FROST_BOLT_MULTI_10, SPELL_FROST_BOLT_MULTI_25), false);
+ me->CastSpell(me, SPELL_FROST_BOLT_MULTI, false);
events.Repeat(15s, 30s);
break;
case EVENT_SHADOW_FISSURE:
@@ -451,7 +449,7 @@ public:
cr->AI()->Talk(SAY_ANSWER_REQUEST);
for (uint8 i = 0 ; i < RAID_MODE(2, 4); ++i)
- events.ScheduleEvent(EVENT_SUMMON_GUARDIAN_OF_ICECROWN, 10000 + (i * 5000));
+ events.ScheduleEvent(EVENT_SUMMON_GUARDIAN_OF_ICECROWN, Milliseconds(10000 + (i * 5000)));
break;
}
@@ -507,7 +505,7 @@ public:
{
if (!me->IsInCombat())
{
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
}
}
if (param == ACTION_GUARDIANS_OFF)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
index fe8d1589e2..0ae3ab26d6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
@@ -23,10 +23,8 @@ enum Spells
{
SPELL_NECROTIC_AURA = 55593,
SPELL_SUMMON_SPORE = 29234,
- SPELL_DEATHBLOOM_10 = 29865,
- SPELL_DEATHBLOOM_25 = 55053,
- SPELL_INEVITABLE_DOOM_10 = 29204,
- SPELL_INEVITABLE_DOOM_25 = 55052,
+ SPELL_DEATHBLOOM = 29865,
+ SPELL_INEVITABLE_DOOM = 29204,
SPELL_BERSERK = 26662
};
@@ -134,11 +132,11 @@ public:
events.Repeat(20s);
break;
case EVENT_DEATHBLOOM:
- me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false);
+ me->CastSpell(me, SPELL_DEATHBLOOM, false);
events.Repeat(30s);
break;
case EVENT_INEVITABLE_DOOM:
- me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false);
+ me->CastSpell(me, SPELL_INEVITABLE_DOOM, false);
doomCounter++;
events.Repeat(doomCounter < 6 ? 30s : 15s);
break;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
index 76bf91ccb0..1b2dd9f871 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
@@ -26,14 +26,10 @@
enum Spells
{
- SPELL_WEB_SPRAY_10 = 29484,
- SPELL_WEB_SPRAY_25 = 54125,
- SPELL_POISON_SHOCK_10 = 28741,
- SPELL_POISON_SHOCK_25 = 54122,
- SPELL_NECROTIC_POISON_10 = 54121,
- SPELL_NECROTIC_POISON_25 = 28776,
- SPELL_FRENZY_10 = 54123,
- SPELL_FRENZY_25 = 54124,
+ SPELL_WEB_SPRAY = 29484,
+ SPELL_POISON_SHOCK = 28741,
+ SPELL_NECROTIC_POISON = 54121,
+ SPELL_FRENZY = 54123,
SPELL_WEB_WRAP_STUN = 28622,
SPELL_WEB_WRAP_SUMMON = 28627,
SPELL_WEB_WRAP_KILL_WEBS = 52512,
@@ -231,15 +227,15 @@ public:
{
case EVENT_WEB_SPRAY:
Talk(EMOTE_WEB_SPRAY);
- me->CastSpell(me, RAID_MODE(SPELL_WEB_SPRAY_10, SPELL_WEB_SPRAY_25), true);
+ me->CastSpell(me, SPELL_WEB_SPRAY, true);
events.Repeat(40s);
break;
case EVENT_POISON_SHOCK:
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_POISON_SHOCK_10, SPELL_POISON_SHOCK_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_POISON_SHOCK, false);
events.Repeat(10s);
break;
case EVENT_NECROTIC_POISON:
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_NECROTIC_POISON_10, SPELL_NECROTIC_POISON_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_NECROTIC_POISON, false);
events.Repeat(30s);
break;
case EVENT_SUMMON_SPIDERLINGS:
@@ -253,7 +249,7 @@ public:
case EVENT_HEALTH_CHECK:
if (me->GetHealthPct() < 30)
{
- me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true);
+ me->CastSpell(me, SPELL_FRENZY, true);
break;
}
events.Repeat(1s);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 79045abcfd..d494649ffa 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -34,10 +34,8 @@ enum Says
enum Spells
{
- SPELL_CURSE_OF_THE_PLAGUEBRINGER_10 = 29213,
- SPELL_CURSE_OF_THE_PLAGUEBRINGER_25 = 54835,
- SPELL_CRIPPLE_10 = 29212,
- SPELL_CRIPPLE_25 = 54814,
+ SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213,
+ SPELL_CRIPPLE = 29212,
SPELL_SUMMON_PLAGUED_WARRIORS = 29237,
SPELL_TELEPORT = 29216,
SPELL_TELEPORT_BACK = 29231,
@@ -207,7 +205,7 @@ public:
case EVENT_CURSE:
if (events.GetPhaseMask() == 0)
{
- me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false);
+ me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false);
}
events.Repeat(25s);
break;
@@ -228,7 +226,7 @@ public:
break;
case EVENT_BLINK:
DoResetThreatList();
- me->CastSpell(me, RAID_MODE(SPELL_CRIPPLE_10, SPELL_CRIPPLE_25), false);
+ me->CastSpell(me, SPELL_CRIPPLE, false);
me->CastSpell(me, SPELL_BLINK, true);
Talk(EMOTE_BLINK);
events.Repeat(30s);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
index 3342c9a236..bd88d28896 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
@@ -30,8 +30,7 @@ enum Yells
enum Spells
{
- SPELL_HATEFUL_STRIKE_10 = 41926,
- SPELL_HATEFUL_STRIKE_25 = 59192,
+ SPELL_HATEFUL_STRIKE = 41926,
SPELL_FRENZY = 28131,
SPELL_BERSERK = 26662,
SPELL_SLIME_BOLT = 32309
@@ -155,7 +154,7 @@ public:
}
if (finalTarget)
{
- me->CastSpell(finalTarget, RAID_MODE(SPELL_HATEFUL_STRIKE_10, SPELL_HATEFUL_STRIKE_25), false);
+ me->CastSpell(finalTarget, SPELL_HATEFUL_STRIKE, false);
}
events.Repeat(1s);
break;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
index 14f3342454..7e5eb48a58 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
@@ -34,8 +34,7 @@ enum Says
enum Spells
{
SPELL_UNBALANCING_STRIKE = 26613,
- SPELL_DISRUPTING_SHOUT_10 = 55543,
- SPELL_DISRUPTING_SHOUT_25 = 29107,
+ SPELL_DISRUPTING_SHOUT = 55543,
SPELL_JAGGED_KNIFE = 55550,
SPELL_HOPELESS = 29125,
SPELL_TAUNT = 29060
@@ -267,7 +266,7 @@ public:
events.Repeat(20s);
break;
case EVENT_DISRUPTING_SHOUT:
- me->CastSpell(me, RAID_MODE(SPELL_DISRUPTING_SHOUT_10, SPELL_DISRUPTING_SHOUT_25), false);
+ me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false);
events.Repeat(15s);
break;
case EVENT_JAGGED_KNIFE:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index 98717dcbb1..2204ba3f12 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -33,14 +33,11 @@ enum Yells
enum Spells
{
// Fight
- SPELL_FROST_AURA_10 = 28531,
- SPELL_FROST_AURA_25 = 55799,
+ SPELL_FROST_AURA = 28531,
SPELL_CLEAVE = 19983,
- SPELL_TAIL_SWEEP_10 = 55697,
- SPELL_TAIL_SWEEP_25 = 55696,
+ SPELL_TAIL_SWEEP = 55697,
SPELL_SUMMON_BLIZZARD = 28560,
- SPELL_LIFE_DRAIN_10 = 28542,
- SPELL_LIFE_DRAIN_25 = 55665,
+ SPELL_LIFE_DRAIN = 28542,
SPELL_BERSERK = 26662,
// Ice block
@@ -160,7 +157,7 @@ public:
{
BossAI::JustEngagedWith(who);
EnterCombatSelfFunction();
- me->CastSpell(me, RAID_MODE(SPELL_FROST_AURA_10, SPELL_FROST_AURA_25), true);
+ me->CastSpell(me, SPELL_FROST_AURA, true);
events.ScheduleEvent(EVENT_BERSERK, 15min);
events.ScheduleEvent(EVENT_CLEAVE, 5s);
events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s);
@@ -258,11 +255,11 @@ public:
events.Repeat(10s);
return;
case EVENT_TAIL_SWEEP:
- me->CastSpell(me, RAID_MODE(SPELL_TAIL_SWEEP_10, SPELL_TAIL_SWEEP_25), false);
+ me->CastSpell(me, SPELL_TAIL_SWEEP, false);
events.Repeat(10s);
return;
case EVENT_LIFE_DRAIN:
- me->CastCustomSpell(RAID_MODE(SPELL_LIFE_DRAIN_10, SPELL_LIFE_DRAIN_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false);
+ me->CastCustomSpell(SPELL_LIFE_DRAIN, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false);
events.Repeat(24s);
return;
case EVENT_BLIZZARD:
@@ -280,7 +277,7 @@ public:
{
cr->GetMotionMaster()->MoveRandom(40);
}
- events.RepeatEvent(RAID_MODE(8000, 6500));
+ events.Repeat(RAID_MODE(8000ms, 6500ms));
return;
}
case EVENT_FLIGHT_START:
@@ -349,7 +346,7 @@ public:
blockList.push_back((*itr)->GetGUID());
currentTarget = (*itr)->GetGUID();
--iceboltCount;
- events.ScheduleEvent(EVENT_FLIGHT_ICEBOLT, (me->GetExactDist(*itr) / 13.0f)*IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_FLIGHT_ICEBOLT, Seconds(uint32(me->GetExactDist(*itr) / 13.0f)));
}
else
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index cf953363d4..cf7a1591ec 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -59,20 +59,17 @@ enum Spells
SPELL_SHOCK_VISUAL = 28159,
// Stalagg
- SPELL_POWER_SURGE_10 = 54529,
- SPELL_POWER_SURGE_25 = 28134,
+ SPELL_POWER_SURGE = 54529,
SPELL_STALAGG_CHAIN = 28096,
// Feugen
- SPELL_STATIC_FIELD_10 = 28135,
- SPELL_STATIC_FIELD_25 = 54528,
+ SPELL_STATIC_FIELD = 28135,
SPELL_FEUGEN_CHAIN = 28111,
// Thaddius
SPELL_POLARITY_SHIFT = 28089,
SPELL_BALL_LIGHTNING = 28299,
- SPELL_CHAIN_LIGHTNING_10 = 28167,
- SPELL_CHAIN_LIGHTNING_25 = 54531,
+ SPELL_CHAIN_LIGHTNING = 28167,
SPELL_BERSERK = 27680,
SPELL_THADDIUS_VISUAL_LIGHTNING = 28136,
SPELL_THADDIUS_SPAWN_STUN = 28160,
@@ -308,16 +305,17 @@ public:
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetControlled(false, UNIT_STATE_ROOT);
events.ScheduleEvent(EVENT_THADDIUS_CHAIN_LIGHTNING, 14s);
events.ScheduleEvent(EVENT_THADDIUS_BERSERK, 6min);
- events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 30s);
+ events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 20s);
events.ScheduleEvent(EVENT_ALLOW_BALL_LIGHTNING, 5s);
return;
case EVENT_THADDIUS_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
break;
case EVENT_THADDIUS_CHAIN_LIGHTNING:
- me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false);
+ me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
events.Repeat(15s);
break;
case EVENT_THADDIUS_POLARITY_SHIFT:
@@ -497,11 +495,11 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_MINION_POWER_SURGE:
- me->CastSpell(me, RAID_MODE(SPELL_POWER_SURGE_10, SPELL_POWER_SURGE_25), false);
+ me->CastSpell(me, SPELL_POWER_SURGE, false);
events.Repeat(19s);
break;
case EVENT_MINION_STATIC_FIELD:
- me->CastSpell(me, RAID_MODE(SPELL_STATIC_FIELD_10, SPELL_STATIC_FIELD_25), false);
+ me->CastSpell(me, SPELL_STATIC_FIELD, false);
events.Repeat(3s);
break;
case EVENT_MINION_MAGNETIC_PULL:
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index 894ee59604..002566c6e1 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -745,7 +745,7 @@ public:
if (Creature* cr = me->SummonCreature(NPC_LIVING_POISON, entry.Start, TEMPSUMMON_TIMED_DESPAWN, entry.DespawnTime))
{
cr->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
- cr->GetMotionMaster()->MovePoint(0, entry.End, false);
+ cr->GetMotionMaster()->MovePoint(0, entry.End, FORCED_MOVEMENT_NONE, 0.f, false);
}
_events.Repeat(5s);
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index eb39ef71b6..e06d19cf34 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -57,10 +57,8 @@ enum MovementInformPoints
enum MalygosSpells
{
SPELL_BERSERK = 64238,
- SPELL_ARCANE_BREATH_N = 56272,
- SPELL_ARCANE_BREATH_H = 60072,
- SPELL_ARCANE_STORM_N = 61693,
- SPELL_ARCANE_STORM_H = 61694,
+ SPELL_ARCANE_BREATH = 56272,
+ SPELL_ARCANE_STORM = 61693,
SPELL_VORTEX_VISUAL = 55873,
SPELL_VORTEX_CONTROL_VEHICLE = 56263,
@@ -80,8 +78,7 @@ enum MalygosSpells
SPELL_DESTROY_PLATFORM_VISUAL = 59084,
SPELL_ARCANE_PULSE = 57432,
- SPELL_PH3_SURGE_OF_POWER_N = 57407,
- SPELL_PH3_SURGE_OF_POWER_H = 60936,
+ SPELL_PH3_SURGE_OF_POWER = 57407,
SPELL_STATIC_FIELD_MAIN = 57430,
SPELL_STATIC_FIELD_SUMMON = 57431,
@@ -89,10 +86,6 @@ enum MalygosSpells
SPELL_STATIC_FIELD_DAMAGE = 57429,
};
-#define SPELL_ARCANE_BREATH DUNGEON_MODE(SPELL_ARCANE_BREATH_N, SPELL_ARCANE_BREATH_H)
-#define SPELL_ARCANE_STORM DUNGEON_MODE(SPELL_ARCANE_STORM_N, SPELL_ARCANE_STORM_H)
-#define SPELL_PH3_SURGE_OF_POWER DUNGEON_MODE(SPELL_PH3_SURGE_OF_POWER_N, SPELL_PH3_SURGE_OF_POWER_H)
-
enum MalygosEvents
{
EVENT_INTRO_MOVE_CENTER = 1,
@@ -471,7 +464,7 @@ public:
me->SetDisableGravity(true);
me->GetMotionMaster()->MoveTakeoff(MI_POINT_VORTEX_TAKEOFF, me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ() + 20.0f, 7.0f);
- events.DelayEvents(25000, 1); // don't delay berserk (group 0)
+ events.DelayEvents(25s, 1); // don't delay berserk (group 0)
}
break;
case EVENT_VORTEX_FLY_TO_CENTER:
@@ -521,16 +514,14 @@ public:
}
//pPlayer->ClearUnitState(UNIT_STATE_ONVEHICLE);
- Movement::MoveSplineInit init(pPlayer);
+ Movement::MoveSplineInit init(pPlayer); // TODO: has to be removed and handled with vehicle exit and vehicle enter code
init.MoveTo(CenterPos.GetPositionX(), CenterPos.GetPositionY(), CenterPos.GetPositionZ());
init.SetFacing(pPlayer->GetOrientation());
init.SetTransportExit();
init.Launch();
pPlayer->SetUnitMovementFlags(MOVEMENTFLAG_NONE);
- pPlayer->SetDisableGravity(true, true);
-
- sScriptMgr->AnticheatSetCanFlybyServer(pPlayer, true);
+ pPlayer->SetDisableGravity(true);
WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8);
data << pPlayer->GetPackGUID();
@@ -674,7 +665,7 @@ public:
case EVENT_CHECK_TRASH_DEAD:
{
if (me->FindNearestCreature(NPC_SCION_OF_ETERNITY, 250.0f, true) || me->FindNearestCreature(NPC_NEXUS_LORD, 250.0f, true))
- events.RepeatEvent(3000);
+ events.Repeat(3s);
else
{
me->SendMeleeAttackStop();
@@ -727,7 +718,7 @@ public:
{
c->SetFaction(pPlayer->GetFaction());
//pPlayer->CastCustomSpell(60683, SPELLVALUE_BASE_POINT0, 1, c, true);
- c->m_Events.AddEvent(new EoEDrakeEnterVehicleEvent(*c, pPlayer->GetGUID()), c->m_Events.CalculateTime(500));
+ c->m_Events.AddEventAtOffset(new EoEDrakeEnterVehicleEvent(*c, pPlayer->GetGUID()), 500ms);
AttackStart(c);
}
}
@@ -803,10 +794,10 @@ public:
{
case NPC_ARCANE_OVERLOAD:
summon->CastSpell(summon, SPELL_ARCANE_OVERLOAD_DMG, true);
- summon->DespawnOrUnsummon(45000);
+ summon->DespawnOrUnsummon(45s);
break;
case NPC_STATIC_FIELD:
- summon->DespawnOrUnsummon(20000);
+ summon->DespawnOrUnsummon(20s);
break;
}
}
@@ -898,9 +889,9 @@ public:
{
Player* plr = pass->ToPlayer();
float speed = plr->GetDistance(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()) / (1.0f * 0.001f);
- plr->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), speed);
+ plr->SetDisableGravity(false); // packet only would lead to issues elsewhere
+ plr->GetMotionMaster()->MoveCharge(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), speed);
plr->RemoveAura(SPELL_FREEZE_ANIM);
- plr->SetDisableGravity(false, true);
plr->SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty);
sScriptMgr->AnticheatSetCanFlybyServer(plr, false);
@@ -941,10 +932,7 @@ public:
if (!bUpdatedFlying && timer)
{
bUpdatedFlying = true;
- plr->SetDisableGravity(true, true);
-
- sScriptMgr->AnticheatSetCanFlybyServer(plr, true);
- sScriptMgr->AnticheatSetUnderACKmount(plr);
+ plr->SetDisableGravity(true);
}
plr->SendMonsterMove(me->GetPositionX() + dist * cos(arcangle), me->GetPositionY() + dist * std::sin(arcangle), me->GetPositionZ(), VORTEX_DEFAULT_DIFF * 2, SPLINEFLAG_FLYING);
@@ -998,7 +986,7 @@ public:
MoveTimer = 0;
me->GetMotionMaster()->MoveIdle();
me->DisableSpline();
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 0.05f, 7.0f);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 0.05f, FORCED_MOVEMENT_NONE, 7.0f);
break;
}
}
@@ -1013,12 +1001,11 @@ public:
MoveTimer = 0;
me->GetMotionMaster()->MoveIdle();
me->DisableSpline();
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ(), 100.0f);
- me->SetPosition(me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ(), me->GetOrientation());
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ(), FORCED_MOVEMENT_NONE, 100.0f);
me->ReplaceAllUnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
me->RemoveAura(SPELL_POWER_SPARK_VISUAL);
me->CastSpell(me, SPELL_POWER_SPARK_GROUND_BUFF, true);
- me->DespawnOrUnsummon(60000);
+ me->DespawnOrUnsummon(60s);
}
}
}
@@ -1221,8 +1208,9 @@ public:
if (Vehicle* v = me->GetVehicle())
v->RemoveAllPassengers();
- if (Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself())
- player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, 1, 0, me);
+ if (killer)
+ if (Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself())
+ player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, 1, 0, me);
}
void MoveInLineOfSight(Unit* /*who*/) override {}
@@ -1459,14 +1447,14 @@ public:
else if (pass && pass->IsPlayer() && me->IsAlive())
{
me->SetDisplayId(11686); // prevents nasty falling animation at despawn
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
void JustDied(Unit* /*killer*/) override
{
me->SetDisplayId(11686); // prevents nasty falling animation at despawn
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
};
};
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
index b61b1d7cb7..83e1a845cb 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
@@ -71,15 +71,12 @@ enum eSpells
SPELL_TELEPORT_VISUAL = 52096,
SPELL_SCION_ARCANE_BARRAGE = 56397,
- SPELL_ARCANE_SHOCK_N = 57058,
- SPELL_ARCANE_SHOCK_H = 60073,
+ SPELL_ARCANE_SHOCK = 57058,
SPELL_HASTE = 57060,
SPELL_ALEXSTRASZA_GIFT = 61028,
};
-#define SPELL_ARCANE_SHOCK DUNGEON_MODE(SPELL_ARCANE_SHOCK_N, SPELL_ARCANE_SHOCK_H)
-
enum eAchiev
{
ACHIEV_CRITERIA_DENYIN_THE_SCION_10 = 7573,
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
index 4f4b09b758..48e220df36 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
@@ -29,7 +29,7 @@ bool EoEDrakeEnterVehicleEvent::Execute(uint64 /*eventTime*/, uint32 /*updateTim
p->CastCustomSpell(60683, SPELLVALUE_BASE_POINT0, 1, &_owner, true);
return true;
}
- _owner.DespawnOrUnsummon(1);
+ _owner.DespawnOrUnsummon(1ms);
return true;
}
@@ -89,7 +89,7 @@ public:
c->SetCanFly(true);
c->SetFaction(pPlayer->GetFaction());
//pPlayer->CastCustomSpell(60683, SPELLVALUE_BASE_POINT0, 1, c, true);
- c->m_Events.AddEvent(new EoEDrakeEnterVehicleEvent(*c, pPlayer->GetGUID()), c->m_Events.CalculateTime(500));
+ c->m_Events.AddEventAtOffset(new EoEDrakeEnterVehicleEvent(*c, pPlayer->GetGUID()), 500ms);
}
}
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index 397f9ec8bb..717e7954f0 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -94,7 +94,7 @@ struct boss_anomalus : public BossAI
{
if (activeRifts > 0 && --activeRifts == 0 && me->HasAura(SPELL_RIFT_SHIELD))
{
- events.DelayEvents(me->GetAura(SPELL_RIFT_SHIELD)->GetDuration() - 46000);
+ events.DelayEvents(Milliseconds(me->GetAura(SPELL_RIFT_SHIELD)->GetDuration() - 46000));
me->RemoveAura(SPELL_RIFT_SHIELD);
me->InterruptNonMeleeSpells(false);
}
@@ -114,7 +114,6 @@ struct boss_anomalus : public BossAI
BossAI::JustEngagedWith(who);
activeRifts = 0;
- events.SetTimer(45000);
events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5s);
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1s);
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
@@ -164,7 +163,7 @@ struct boss_anomalus : public BossAI
Talk(EMOTE_RIFT);
me->CastSpell(me, SPELL_CREATE_RIFT, false);
//Once we hit 51% hp mark, after each rift we spawn an empowered
- events.ScheduleEvent(me->HealthBelowPct(51) ? EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED : EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15000 : 25000);
+ events.ScheduleEvent(me->HealthBelowPct(51) ? EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED : EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
break;
case EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED:
Talk(SAY_RIFT);
@@ -172,7 +171,7 @@ struct boss_anomalus : public BossAI
me->CastSpell(me, SPELL_CREATE_RIFT, false);
me->CastSpell(me, SPELL_RIFT_SHIELD, true);
- me->m_Events.AddEvent(new ChargeRifts(me), me->m_Events.CalculateTime(1000));
+ me->m_Events.AddEventAtOffset(new ChargeRifts(me), 1s);
events.DelayEvents(46s);
//As we just spawned an empowered spawn a normal one
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index a367d60592..eb4842098a 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -75,7 +75,7 @@ struct boss_keristrasza : public BossAI
me->CastSpell(me, SPELL_INTENSE_COLD, true);
events.ScheduleEvent(EVENT_CRYSTALFIRE_BREATH, 14s);
- events.ScheduleEvent(EVENT_CRYSTAL_CHAINS, DUNGEON_MODE(20000, 11000));
+ events.ScheduleEvent(EVENT_CRYSTAL_CHAINS, DUNGEON_MODE(20s, 11s));
events.ScheduleEvent(EVENT_TAIL_SWEEP, 5s);
events.ScheduleEvent(EVENT_HEALTH_CHECK, 1s);
events.ScheduleEvent(EVENT_ACHIEVEMENT_CHECK, 1s);
@@ -89,7 +89,7 @@ struct boss_keristrasza : public BossAI
void KilledUnit(Unit*) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_SLAY);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -174,7 +174,7 @@ struct boss_keristrasza : public BossAI
me->CastSpell(me, SPELL_CRYSTALIZE, false);
else if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
me->CastSpell(target, SPELL_CRYSTAL_CHAINS, false);
- events.ScheduleEvent(EVENT_CRYSTAL_CHAINS, DUNGEON_MODE(20000, 11000));
+ events.ScheduleEvent(EVENT_CRYSTAL_CHAINS, DUNGEON_MODE(20s, 11s));
break;
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
index 90781cfbc7..e41c190aeb 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
@@ -132,7 +132,7 @@ struct boss_magus_telestra : public BossAI
void KilledUnit(Unit*) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -150,7 +150,7 @@ struct boss_magus_telestra : public BossAI
if (spellInfo->Id >= SPELL_FIRE_MAGUS_DEATH && spellInfo->Id <= SPELL_ARCANE_MAGUS_DEATH && caster->ToCreature())
{
events.ScheduleEvent(EVENT_MAGUS_FAIL_ACHIEVEMENT, 5s);
- caster->ToCreature()->DespawnOrUnsummon(1000);
+ caster->ToCreature()->DespawnOrUnsummon(1s);
if (++copiesDied >= 3)
{
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
index 82b36095db..982750c2bd 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
@@ -93,7 +93,7 @@ struct boss_ormorok : public BossAI
void KilledUnit(Unit* /*victim*/) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_KILL);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
index 3781b4799d..a05ca6dc14 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
@@ -22,8 +22,7 @@
enum Spells
{
SPELL_MAGIC_PULL = 51336,
- SPELL_THUNDERING_STOMP_N = 50774,
- SPELL_THUNDERING_STOMP_H = 59370,
+ SPELL_THUNDERING_STOMP = 50774,
SPELL_UNSTABLE_SPHERE_PASSIVE = 50756,
SPELL_UNSTABLE_SPHERE_PULSE = 50757,
@@ -44,8 +43,6 @@ enum Events
EVENT_SUMMON_x4 = 4,
};
-#define SPELL_THUNDERING_STOMP DUNGEON_MODE(SPELL_THUNDERING_STOMP_N, SPELL_THUNDERING_STOMP_H)
-
enum Yells
{
SAY_AGGRO = 0,
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
index 4b491b156d..5f9f71dc89 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
@@ -22,10 +22,8 @@
enum Spells
{
- SPELL_ARCANE_BARRAGE_N = 50804,
- SPELL_ARCANE_BARRAGE_H = 59381,
- SPELL_ARCANE_VOLLEY_N = 51153,
- SPELL_ARCANE_VOLLEY_H = 59382,
+ SPELL_ARCANE_BARRAGE = 50804,
+ SPELL_ARCANE_VOLLEY = 51153,
SPELL_ENRAGED_ASSAULT = 51170,
SPELL_PLANAR_ANOMALIES = 57959,
SPELL_PLANAR_SHIFT = 51162,
@@ -38,9 +36,6 @@ enum Spells
SPELL_DRAKE_STOP_TIME = 49838,
};
-#define SPELL_ARCANE_BARRAGE DUNGEON_MODE(SPELL_ARCANE_BARRAGE_N, SPELL_ARCANE_BARRAGE_H)
-#define SPELL_ARCANE_VOLLEY DUNGEON_MODE(SPELL_ARCANE_VOLLEY_N, SPELL_ARCANE_VOLLEY_H)
-
enum VarosNPCs
{
NPC_LEY_GUARDIAN_WHELP = 28276,
@@ -208,7 +203,7 @@ public:
break;
case EVENT_SUMMON_WHELPS:
for( uint8 i = 0; i < 5; ++i )
- events.ScheduleEvent(EVENT_SUMMON_SINGLE_WHELP, urand(0, 8000));
+ events.ScheduleEvent(EVENT_SUMMON_SINGLE_WHELP, 0ms, 8s);
events.Repeat(40s);
break;
case EVENT_SUMMON_SINGLE_WHELP:
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
index 6793cc0505..2ead69d977 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -29,15 +29,10 @@ enum Spells
SPELL_TELEPORT = 51112,
SPELL_FROSTBOMB = 51103,
- SPELL_TIME_BOMB_N = 51121,
- SPELL_TIME_BOMB_H = 59376,
- SPELL_EMPOWERED_ARCANE_EXPLOSION_N = 51110,
- SPELL_EMPOWERED_ARCANE_EXPLOSION_H = 59377,
+ SPELL_TIME_BOMB = 51121,
+ SPELL_EMPOWERED_ARCANE_EXPLOSION = 51110,
};
-#define SPELL_EMPOWERED_ARCANE_EXPLOSION DUNGEON_MODE(SPELL_EMPOWERED_ARCANE_EXPLOSION_N, SPELL_EMPOWERED_ARCANE_EXPLOSION_H)
-//#define SPELL_TIME_BOMB DUNGEON_MODE(SPELL_TIME_BOMB_N, SPELL_TIME_BOMB_H)
-
enum UromNPCs
{
NPC_PHANTASMAL_CLOUDSCRAPER = 27645,
@@ -298,9 +293,9 @@ public:
//At this point we are still in casting state so we need to clear it for DoCastAOE not to fail
me->ClearUnitState(UNIT_STATE_CASTING);
- DoCastAOE(DUNGEON_MODE(SPELL_EMPOWERED_ARCANE_EXPLOSION_N, SPELL_EMPOWERED_ARCANE_EXPLOSION_H));
+ DoCastAOE(SPELL_EMPOWERED_ARCANE_EXPLOSION);
me->AddUnitState(UNIT_STATE_CASTING);
- events.RescheduleEvent(EVENT_TELE_BACK, DUNGEON_MODE(9000, 7000));
+ events.RescheduleEvent(EVENT_TELE_BACK, DUNGEON_MODE(9s, 7s));
default:
break;
}
@@ -347,7 +342,7 @@ public:
break;
case EVENT_TIME_BOMB:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
- DoCast(target, DUNGEON_MODE(SPELL_TIME_BOMB_N, SPELL_TIME_BOMB_H));
+ DoCast(target, SPELL_TIME_BOMB);
events.Repeat(20s, 25s);
break;
case EVENT_TELEPORT_TO_CENTER:
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index be7191ca09..71d4450864 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -23,13 +23,10 @@ enum Spells
{
SPELL_CORE_AURA_PASSIVE = 50798,
- SPELL_AMPLIFY_MAGIC_N = 51054,
- SPELL_AMPLIFY_MAGIC_H = 59371,
+ SPELL_AMPLIFY_MAGIC = 51054,
- SPELL_ENERGIZE_CORES_N = 50785,
- SPELL_ENERGIZE_CORES_H = 59372,
- SPELL_ENERGIZE_CORES_THIN_N = 61407,
- SPELL_ENERGIZE_CORES_THIN_H = 62136,
+ SPELL_ENERGIZE_CORES = 50785,
+ SPELL_ENERGIZE_CORES_THIN = 61407,
SPELL_ENERGIZE_CORES_TRIGGER_1 = 54069,
SPELL_ENERGIZE_CORES_TRIGGER_2 = 56251,
@@ -63,10 +60,6 @@ enum Events
EVENT_ENERGIZE_CORES_DAMAGE = 7,
};
-#define SPELL_AMPLIFY_MAGIC DUNGEON_MODE(SPELL_AMPLIFY_MAGIC_N, SPELL_AMPLIFY_MAGIC_H)
-#define SPELL_ENERGIZE_CORES DUNGEON_MODE(SPELL_ENERGIZE_CORES_N, SPELL_ENERGIZE_CORES_H)
-#define SPELL_ENERGIZE_CORES_THIN DUNGEON_MODE(SPELL_ENERGIZE_CORES_THIN_N, SPELL_ENERGIZE_CORES_THIN_H)
-
enum Says
{
SAY_AGGRO = 0,
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index 01cdb73fb3..4fd9d715df 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -38,7 +38,6 @@ enum Drakes
// Centrifuge Constructs
SPELL_EMPOWERING_BLOWS = 50044,
- H_SPELL_EMPOWERING_BLOWS = 59213,
SPELL_AMBER_SHOCK_CHARGE = 49836,
SPELL_RUBY_EVASIVE_CHARGES = 50241,
@@ -387,7 +386,7 @@ public:
}
else
{
- me->DespawnOrUnsummon(2050);
+ me->DespawnOrUnsummon(2050ms);
me->SetOrientation(2.5f);
me->SetSpeedRate(MOVE_FLIGHT, 1.0f);
Position pos = me->GetPosition();
@@ -444,7 +443,7 @@ public:
}
else
{
- me->DespawnOrUnsummon(2050);
+ me->DespawnOrUnsummon(2050ms);
me->SetOrientation(2.5f);
me->SetSpeedRate(MOVE_FLIGHT, 1.0f);
Position pos = me->GetPosition();
@@ -461,7 +460,7 @@ public:
{
if (despawnTimer >= 5000)
{
- me->DespawnOrUnsummon(2050);
+ me->DespawnOrUnsummon(2050ms);
me->SetOrientation(2.5f);
Position pos = me->GetPosition();
Position offset = { 10.0f, 10.0f, 12.0f, 0.0f };
@@ -490,7 +489,7 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
- DoCast(IsHeroic() ? H_SPELL_EMPOWERING_BLOWS : SPELL_EMPOWERING_BLOWS);
+ DoCast(SPELL_EMPOWERING_BLOWS);
}
void UpdateAI(uint32 /*diff*/) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
index 9435ba6491..10cbd2cd5d 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
@@ -49,8 +49,7 @@ enum BjarngrimSpells
// STORMFORGED LIEUTENANT
SPELL_ARC_WELD = 59085,
- SPELL_RENEW_STEEL_N = 52774,
- SPELL_RENEW_STEEL_H = 59160,
+ SPELL_RENEW_STEEL = 52774,
};
enum BjarngrimOther
@@ -91,6 +90,9 @@ enum BjarngrimEvents
// STORMFORGED LIEUTENANT
EVENT_ARC_WELD = 41,
EVENT_RENEW_STEEL = 42,
+
+ // CHARGE UP
+ EVENT_CHARGE_UP = 51,
};
enum Yells
@@ -106,334 +108,343 @@ enum Yells
EMOTE_BERSEKER_STANCE = 8,
};
-class boss_bjarngrim : public CreatureScript
+struct boss_bjarngrim : public npc_escortAI
{
-public:
- boss_bjarngrim() : CreatureScript("boss_bjarngrim") { }
+ boss_bjarngrim(Creature* creature) : npc_escortAI(creature), summons(creature)
+ {
+ m_pInstance = creature->GetInstanceScript();
+ InitializeWaypoints();
+ me->SetWalk(true);
+ Start(true, ObjectGuid::Empty, nullptr, false, true);
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ void InitializeWaypoints()
{
- return GetHallsOfLightningAI<boss_bjarngrimAI>(creature);
+ AddWaypoint(1, 1262.0f, -26.9f, 33.5f, 10000);
+ AddWaypoint(2, 1262.18f, 99.3f, 33.5f, 10000);
+ AddWaypoint(3, 1262.0f, -26.9f, 33.5f, 0);
+ AddWaypoint(4, 1332.0f, -26.6f, 40.18f, 10000);
+ AddWaypoint(5, 1395.092f, 36.6425f, 50.038f, 10000);
+ AddWaypoint(6, 1332.0f, -26.6f, 40.18f, 0);
+ AddWaypoint(7, 1262.0f, -26.9f, 33.5f, 0);
}
- struct boss_bjarngrimAI : public npc_escortAI
+ void Reset() override
{
- boss_bjarngrimAI(Creature* creature) : npc_escortAI(creature), summons(creature)
- {
- m_pInstance = creature->GetInstanceScript();
-
- // Init waypoints
- AddWaypoint(1, 1262.18f, 99.3f, 33.5f, 0);
- AddWaypoint(2, 1281.6f, 99.5f, 33.5f, 0);
- AddWaypoint(3, 1311.7f, 99.4f, 40.1f, 0);
- AddWaypoint(4, 1332.5f, 99.7f, 40.18f, 0);
- AddWaypoint(5, 1311.7f, 99.4f, 40.1f, 0);
- AddWaypoint(6, 1281.6f, 99.5f, 33.5f, 0);
- AddWaypoint(7, 1262.18f, 99.3f, 33.5f, 0);
- AddWaypoint(8, 1262, -26.9f, 33.5f, 0);
- AddWaypoint(9, 1281.2f, -26.8f, 33.5f, 0);
- AddWaypoint(10, 1311.3f, -26.9f, 40.03f, 0);
- AddWaypoint(11, 1332, -26.6f, 40.18f, 0);
- AddWaypoint(12, 1311.3f, -26.9f, 40.03f, 0);
- AddWaypoint(13, 1281.2f, -26.8f, 33.5f, 0);
- AddWaypoint(14, 1262, -26.9f, 33.5f, 0);
-
- Start(true, false, ObjectGuid::Empty, nullptr, false, true);
- }
+ events.Reset();
+ summons.DespawnAll();
- InstanceScript* m_pInstance;
- EventMap events;
- SummonList summons;
- uint8 m_uiStance;
+ for (uint8 i = 0; i < 2; ++i)
+ if (Creature* dwarf = me->SummonCreature(NPC_STORMFORGED_LIEUTENANT, me->GetPositionX() + urand(4, 12), me->GetPositionY() + urand(4, 12), me->GetPositionZ()))
+ {
+ float angle = i == 0 ? 2.5f : 3.78f;
+ dwarf->GetMotionMaster()->MoveFollow(me, 3, angle);
+ summons.Summon(dwarf);
+ }
- void Reset() override
- {
- events.Reset();
- summons.DespawnAll();
-
- for (uint8 i = 0; i < 2; ++i)
- if (Creature* dwarf = me->SummonCreature(NPC_STORMFORGED_LIEUTENANT, me->GetPositionX() + urand(4, 12), me->GetPositionY() + urand(4, 12), me->GetPositionZ()))
- {
- dwarf->GetMotionMaster()->MoveFollow(me, 3, rand_norm() * 2 * 3.14f);
- summons.Summon(dwarf);
- }
-
- me->RemoveAllAuras();
- me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
- RollStance(0, STANCE_DEFENSIVE);
-
- if (m_pInstance)
- m_pInstance->SetData(TYPE_BJARNGRIM, NOT_STARTED);
- }
+ me->RemoveAllAuras();
- void JustEngagedWith(Unit*) override
- {
- me->SetInCombatWithZone();
- Talk(SAY_AGGRO);
+ if (m_pInstance)
+ m_pInstance->SetBossState(DATA_BJARNGRIM, NOT_STARTED);
- events.ScheduleEvent(EVENT_BJARNGRIM_CHANGE_STANCE, 20s, 0);
+ DoCastSelf(SPELL_BATTLE_STANCE, true);
+ SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
+ }
- // DEFENSIVE STANCE
- events.ScheduleEvent(EVENT_BJARNGRIM_REFLECTION, 8s, STANCE_DEFENSIVE);
- events.ScheduleEvent(EVENT_BJARNGRIM_PUMMEL, 5s, STANCE_DEFENSIVE);
- events.ScheduleEvent(EVENT_BJARNGRIM_KNOCK, 16s, STANCE_DEFENSIVE);
- events.ScheduleEvent(EVENT_BJARNGRIM_IRONFORM, 12s, STANCE_DEFENSIVE);
+ void JustEngagedWith(Unit*) override
+ {
+ me->SetInCombatWithZone();
+ Talk(SAY_AGGRO);
- // BERSERKER STANCE
- events.ScheduleEvent(EVENT_BJARNGRIM_MORTAL_STRIKE, 24s, STANCE_BERSERKER);
- events.ScheduleEvent(EVENT_BJARNGRIM_WHIRLWIND, 26s, STANCE_BERSERKER);
+ RollStance(STANCE_BATTLE);
- // BATTLE STANCE
- events.ScheduleEvent(EVENT_BJARNGRIM_INTERCEPT, 23s, STANCE_BATTLE);
- events.ScheduleEvent(EVENT_BJARNGRIM_CLEAVE, 25s, STANCE_BATTLE);
- events.ScheduleEvent(EVENT_BJARNGRIM_SLAM, 30s, STANCE_BATTLE);
+ events.ScheduleEvent(EVENT_BJARNGRIM_CHANGE_STANCE, 20s, 0);
- if (m_pInstance)
- {
- m_pInstance->SetData(TYPE_BJARNGRIM, IN_PROGRESS);
- m_pInstance->SetData(DATA_BJARNGRIM_ACHIEVEMENT, me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE));
- }
- }
+ // DEFENSIVE STANCE
+ events.ScheduleEvent(EVENT_BJARNGRIM_REFLECTION, 8s, STANCE_DEFENSIVE);
+ events.ScheduleEvent(EVENT_BJARNGRIM_KNOCK, 16s, STANCE_DEFENSIVE);
+ events.ScheduleEvent(EVENT_BJARNGRIM_IRONFORM, 12s, STANCE_DEFENSIVE);
- void KilledUnit(Unit* victim) override
- {
- if (!victim->IsPlayer())
- return;
+ // BERSERKER STANCE
+ events.ScheduleEvent(EVENT_BJARNGRIM_INTERCEPT, 23s, STANCE_BERSERKER);
+ events.ScheduleEvent(EVENT_BJARNGRIM_CLEAVE, 25s, STANCE_BERSERKER);
+ events.ScheduleEvent(EVENT_BJARNGRIM_WHIRLWIND, 26s, STANCE_BERSERKER);
- Talk(SAY_SLAY);
- }
+ // BATTLE STANCE
+ events.ScheduleEvent(EVENT_BJARNGRIM_PUMMEL, 5s, STANCE_BATTLE);
+ events.ScheduleEvent(EVENT_BJARNGRIM_MORTAL_STRIKE, 24s, STANCE_BATTLE);
+ events.ScheduleEvent(EVENT_BJARNGRIM_SLAM, 30s, STANCE_BATTLE);
- void JustDied(Unit*) override
+ if (m_pInstance)
{
- Talk(SAY_DEATH);
-
- if (m_pInstance)
- m_pInstance->SetData(TYPE_BJARNGRIM, DONE);
+ m_pInstance->SetBossState(DATA_BJARNGRIM, IN_PROGRESS);
+ m_pInstance->SetData(DATA_BJARNGRIM_ACHIEVEMENT, me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE));
}
+ }
- void RemoveStanceAura(uint8 stance)
- {
- switch (stance)
- {
- case STANCE_DEFENSIVE:
- me->RemoveAura(SPELL_DEFENSIVE_STANCE);
- me->RemoveAura(SPELL_DEFENSIVE_AURA);
- break;
- case STANCE_BERSERKER:
- me->RemoveAura(SPELL_BERSERKER_STANCE);
- me->RemoveAura(SPELL_BERSERKER_AURA);
- break;
- case STANCE_BATTLE:
- me->RemoveAura(SPELL_BATTLE_STANCE);
- me->RemoveAura(SPELL_BATTLE_AURA);
- break;
- }
- }
+ void KilledUnit(Unit* victim) override
+ {
+ if (!victim->IsPlayer())
+ return;
- void RollStance(uint8 stance, uint8 force = 0)
+ Talk(SAY_SLAY);
+ }
+
+ void JustDied(Unit*) override
+ {
+ Talk(SAY_DEATH);
+
+ if (m_pInstance)
+ m_pInstance->SetBossState(DATA_BJARNGRIM, DONE);
+ }
+
+ void RemoveStanceAura(uint8 stance)
+ {
+ switch (stance)
{
- if (urand(0, 1))
- stance = (++stance == 4 ? 1 : stance);
- else
- stance = (--stance == 0 ? 3 : stance);
+ case STANCE_DEFENSIVE:
+ me->RemoveAura(SPELL_DEFENSIVE_STANCE);
+ me->RemoveAura(SPELL_DEFENSIVE_AURA);
+ break;
+ case STANCE_BERSERKER:
+ me->RemoveAura(SPELL_BERSERKER_STANCE);
+ me->RemoveAura(SPELL_BERSERKER_AURA);
+ break;
+ case STANCE_BATTLE:
+ me->RemoveAura(SPELL_BATTLE_STANCE);
+ me->RemoveAura(SPELL_BATTLE_AURA);
+ break;
+ }
+ }
- if (force)
- stance = force;
+ void RollStance(uint8 stance, uint8 force = 0)
+ {
+ if (urand(0, 1))
+ stance = (++stance == 4 ? 1 : stance);
+ else
+ stance = (--stance == 0 ? 3 : stance);
- switch (stance)
- {
- case STANCE_DEFENSIVE:
- Talk(SAY_DEFENSIVE_STANCE);
+ if (force)
+ stance = force;
- me->CastSpell(me, SPELL_DEFENSIVE_STANCE, true);
- me->CastSpell(me, SPELL_DEFENSIVE_AURA, true);
+ switch (stance)
+ {
+ case STANCE_DEFENSIVE:
+ Talk(SAY_DEFENSIVE_STANCE);
- events.DelayEvents(20000, STANCE_BERSERKER);
- events.DelayEvents(20000, STANCE_BATTLE);
+ DoCastSelf(SPELL_DEFENSIVE_STANCE, true);
+ DoCastSelf(SPELL_DEFENSIVE_AURA, true);
- SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
- break;
- case STANCE_BERSERKER:
- Talk(SAY_BERSERKER_STANCE);
+ events.DelayEvents(20s, STANCE_BERSERKER);
+ events.DelayEvents(20s, STANCE_BATTLE);
- me->CastSpell(me, SPELL_BERSERKER_STANCE, true);
- me->CastSpell(me, SPELL_BERSERKER_AURA, true);
+ SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
+ break;
+ case STANCE_BERSERKER:
+ Talk(SAY_BERSERKER_STANCE);
- events.DelayEvents(20000, STANCE_DEFENSIVE);
- events.DelayEvents(20000, STANCE_BATTLE);
+ DoCastSelf(SPELL_BERSERKER_STANCE, true);
+ DoCastSelf(SPELL_BERSERKER_AURA, true);
- SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SWORD, EQUIP_NO_CHANGE);
- break;
- case STANCE_BATTLE:
- Talk(SAY_BATTLE_STANCE);
+ events.DelayEvents(20s, STANCE_DEFENSIVE);
+ events.DelayEvents(20s, STANCE_BATTLE);
- me->CastSpell(me, SPELL_BATTLE_STANCE, true);
- me->CastSpell(me, SPELL_BATTLE_AURA, true);
+ SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SWORD, EQUIP_NO_CHANGE);
+ break;
+ case STANCE_BATTLE:
+ Talk(SAY_BATTLE_STANCE);
- events.DelayEvents(20000, STANCE_BERSERKER);
- events.DelayEvents(20000, STANCE_DEFENSIVE);
+ DoCastSelf(SPELL_BATTLE_STANCE, true);
+ DoCastSelf(SPELL_BATTLE_AURA, true);
- SetEquipmentSlots(false, EQUIP_MACE, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
- break;
- }
+ events.DelayEvents(20s, STANCE_BERSERKER);
+ events.DelayEvents(20s, STANCE_DEFENSIVE);
- m_uiStance = stance;
+ SetEquipmentSlots(false, EQUIP_MACE, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
+ break;
}
- void WaypointReached(uint32 Point) override
+ m_uiStance = stance;
+ }
+
+ void WaypointReached(uint32 Point) override
+ {
+ if (Point == 1)
{
- if (Point == 1 || Point == 8)
- me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
- else if (Point == 7 || Point == 14)
- me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
+ events.CancelEvent(EVENT_CHARGE_UP);
+ events.ScheduleEvent(EVENT_CHARGE_UP, 2500ms, 0);
}
-
- void UpdateEscortAI(uint32 diff) override
+ else if (Point == 2)
{
- if (!me->IsInCombat())
- return;
+ events.CancelEvent(EVENT_CHARGE_UP);
+ }
+ else if (Point == 3)
+ {
+ me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
+ }
+ else if (Point == 4)
+ {
+ events.CancelEvent(EVENT_CHARGE_UP);
+ events.ScheduleEvent(EVENT_CHARGE_UP, 2500ms, 0);
+ }
+ else if (Point == 5)
+ {
+ events.CancelEvent(EVENT_CHARGE_UP);
+ }
+ else if (Point == 6)
+ {
+ me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
+ }
+ }
+
+ void UpdateEscortAI(uint32 diff) override
+ {
+ events.Update(diff);
- // Return since we have no target
- if (!UpdateVictim())
+ if (uint32 eventId = events.ExecuteEvent())
+ {
+ if (eventId == EVENT_CHARGE_UP)
{
- Reset();
+ me->CastSpell(me, SPELL_CHARGE_UP, true);
+ me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
return;
}
+ }
- events.Update(diff);
+ if (!me->IsInCombat())
+ return;
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ // Return since we have no target
+ if (!UpdateVictim())
+ {
+ Reset();
+ return;
+ }
- switch (events.ExecuteEvent())
- {
- case EVENT_BJARNGRIM_CHANGE_STANCE:
- // roll new stance
- RemoveStanceAura(m_uiStance);
- RollStance(m_uiStance);
- events.Repeat(20s);
- break;
-
- ///////////////////////////////////////////////////////
- ///// DEFENSIVE STANCE
- ///////////////////////////////////////////////////////
- case EVENT_BJARNGRIM_REFLECTION:
- me->CastSpell(me, SPELL_BJARNGRIM_REFLETION, true);
- events.Repeat(8s, 9s);
- break;
- case EVENT_BJARNGRIM_PUMMEL:
- me->CastSpell(me->GetVictim(), SPELL_PUMMEL, false);
- events.Repeat(10s, 11s);
- break;
- case EVENT_BJARNGRIM_KNOCK:
- me->CastSpell(me, SPELL_KNOCK_AWAY, false);
- events.Repeat(20s, 21s);
- break;
- case EVENT_BJARNGRIM_IRONFORM:
- me->CastSpell(me, SPELL_IRONFORM, true);
- events.Repeat(18s, 23s);
- break;
-
- ///////////////////////////////////////////////////////
- ///// BERSERKER STANCE
- ///////////////////////////////////////////////////////
- case EVENT_BJARNGRIM_MORTAL_STRIKE:
- me->CastSpell(me->GetVictim(), SPELL_MORTAL_STRIKE, false);
- events.Repeat(10s);
- break;
- case EVENT_BJARNGRIM_WHIRLWIND:
- me->CastSpell(me, SPELL_WHIRLWIND, true);
- events.Repeat(25s);
- break;
-
- ///////////////////////////////////////////////////////
- ///// BATTLE STANCE
- ///////////////////////////////////////////////////////
- case EVENT_BJARNGRIM_INTERCEPT:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random))
- me->CastSpell(target, SPELL_INTERCEPT, true);
-
- events.Repeat(30s);
- break;
- case EVENT_BJARNGRIM_CLEAVE:
- me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
- events.Repeat(25s);
- break;
- case EVENT_BJARNGRIM_SLAM:
- me->CastSpell(me->GetVictim(), SPELL_SLAM, false);
- events.Repeat(10s, 12s);
- break;
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- DoMeleeAttackIfReady();
+ switch (events.ExecuteEvent())
+ {
+ case EVENT_BJARNGRIM_CHANGE_STANCE:
+ // roll new stance
+ RemoveStanceAura(m_uiStance);
+ RollStance(m_uiStance);
+ events.Repeat(20s);
+ break;
+
+ case EVENT_CHARGE_UP:
+ DoCastSelf(SPELL_CHARGE_UP, true);
+ DoCastSelf(SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
+ break;
+
+ // DEFENSIVE STANCE
+ case EVENT_BJARNGRIM_REFLECTION:
+ DoCastSelf(SPELL_BJARNGRIM_REFLETION, true);
+ events.Repeat(8s, 9s);
+ break;
+ case EVENT_BJARNGRIM_PUMMEL:
+ DoCastVictim(SPELL_PUMMEL);
+ events.Repeat(10s, 11s);
+ break;
+ case EVENT_BJARNGRIM_KNOCK:
+ DoCastAOE(SPELL_KNOCK_AWAY);
+ events.Repeat(20s, 21s);
+ break;
+ case EVENT_BJARNGRIM_IRONFORM:
+ DoCastSelf(SPELL_IRONFORM, true);
+ events.Repeat(18s, 23s);
+ break;
+
+ // BERSERKER STANCE
+ case EVENT_BJARNGRIM_MORTAL_STRIKE:
+ DoCastVictim(SPELL_MORTAL_STRIKE);
+ events.Repeat(10s);
+ break;
+ case EVENT_BJARNGRIM_WHIRLWIND:
+ DoCastSelf(SPELL_WHIRLWIND, true);
+ events.Repeat(25s);
+ break;
+
+ // BATTLE STANCE
+ case EVENT_BJARNGRIM_INTERCEPT:
+ DoCastRandomTarget(SPELL_INTERCEPT, 0, 40.0f, false, true);
+ events.Repeat(30s);
+ break;
+ case EVENT_BJARNGRIM_CLEAVE:
+ DoCastVictim(SPELL_CLEAVE);
+ events.Repeat(25s);
+ break;
+ case EVENT_BJARNGRIM_SLAM:
+ DoCastVictim(SPELL_SLAM);
+ events.Repeat(10s, 12s);
+ break;
}
- };
+
+ DoMeleeAttackIfReady();
+ }
+
+ private:
+ InstanceScript* m_pInstance;
+ EventMap events;
+ SummonList summons;
+ uint8 m_uiStance;
};
-class npc_stormforged_lieutenant : public CreatureScript
+struct npc_stormforged_lieutenant : public ScriptedAI
{
-public:
- npc_stormforged_lieutenant() : CreatureScript("npc_stormforged_lieutenant") { }
+ npc_stormforged_lieutenant(Creature* creature) : ScriptedAI(creature) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetHallsOfLightningAI<npc_stormforged_lieutenantAI>(creature);
+ if (me->IsSummon())
+ BjarngrimGUID = me->ToTempSummon()->GetSummonerGUID();
+ else
+ BjarngrimGUID.Clear();
}
- struct npc_stormforged_lieutenantAI : public ScriptedAI
+ void JustEngagedWith(Unit*) override
{
- npc_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature) { }
+ events.ScheduleEvent(EVENT_ARC_WELD, 2s);
+ events.ScheduleEvent(EVENT_RENEW_STEEL, 10s, 11s);
+ }
- EventMap events;
- ObjectGuid BjarngrimGUID;
+ void UpdateAI(uint32 diff) override
+ {
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
- void Reset() override
- {
- if (me->IsSummon())
- BjarngrimGUID = me->ToTempSummon()->GetSummonerGUID();
- else
- BjarngrimGUID.Clear();
- }
+ events.Update(diff);
- void JustEngagedWith(Unit*) override
- {
- events.ScheduleEvent(EVENT_ARC_WELD, 2s);
- events.ScheduleEvent(EVENT_RENEW_STEEL, 10s, 11s);
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- void UpdateAI(uint32 diff) override
+ switch (events.ExecuteEvent())
{
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ case EVENT_ARC_WELD:
+ me->CastSpell(me->GetVictim(), SPELL_ARC_WELD, true);
+ events.Repeat(20s);
+ break;
+ case EVENT_RENEW_STEEL:
+ if (Creature* bjarngrim = ObjectAccessor::GetCreature(*me, BjarngrimGUID))
+ if (bjarngrim->IsAlive())
+ me->CastSpell(bjarngrim, SPELL_RENEW_STEEL, true);
+
+ events.Repeat(10s, 14s);
+ break;
+ }
- switch (events.ExecuteEvent())
- {
- case EVENT_ARC_WELD:
- me->CastSpell(me->GetVictim(), SPELL_ARC_WELD, true);
- events.Repeat(20s);
- break;
- case EVENT_RENEW_STEEL:
- if (Creature* bjarngrim = ObjectAccessor::GetCreature(*me, BjarngrimGUID))
- if (bjarngrim->IsAlive())
- me->CastSpell(bjarngrim, me->GetMap()->IsHeroic() ? SPELL_RENEW_STEEL_H : SPELL_RENEW_STEEL_N, true);
-
- events.Repeat(10s, 14s);
- break;
- }
+ DoMeleeAttackIfReady();
+ }
- DoMeleeAttackIfReady();
- }
- };
+ private:
+ EventMap events;
+ ObjectGuid BjarngrimGUID;
};
void AddSC_boss_bjarngrim()
{
- new boss_bjarngrim();
- new npc_stormforged_lieutenant();
+ RegisterHallOfLightningCreatureAI(boss_bjarngrim);
+ RegisterHallOfLightningCreatureAI(npc_stormforged_lieutenant);
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
index 752ef36a30..6a72e570c8 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
@@ -25,10 +25,8 @@
enum IonarSpells
{
- SPELL_BALL_LIGHTNING_N = 52780,
- SPELL_BALL_LIGHTNING_H = 59800,
- SPELL_STATIC_OVERLOAD_N = 52658,
- SPELL_STATIC_OVERLOAD_H = 59795,
+ SPELL_BALL_LIGHTNING = 52780,
+ SPELL_STATIC_OVERLOAD = 52658,
SPELL_STATIC_OVERLOAD_KNOCK = 53337,
SPELL_DISPERSE = 52770,
@@ -36,8 +34,7 @@ enum IonarSpells
SPELL_SPARK_DESPAWN = 52776,
//Spark of Ionar
- SPELL_SPARK_VISUAL_TRIGGER_N = 52667,
- SPELL_SPARK_VISUAL_TRIGGER_H = 59833,
+ SPELL_SPARK_VISUAL_TRIGGER = 52667,
SPELL_RANDOM_LIGHTNING = 52663,
};
@@ -66,213 +63,191 @@ enum IonarEvents
EVENT_CHECK_HEALTH = 3,
EVENT_CALL_SPARKS = 4,
EVENT_RESTORE = 5,
+ EVENT_CHANGE_TARGET = 6,
};
-class boss_ionar : public CreatureScript
+struct boss_ionar : public BossAI
{
-public:
- boss_ionar() : CreatureScript("boss_ionar") { }
+ boss_ionar(Creature* creature) : BossAI(creature, DATA_IONAR) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetHallsOfLightningAI<boss_ionarAI>(creature);
+ _Reset();
+ me->SetVisible(true);
+
+ ScheduleHealthCheckEvent(50, [&] {
+ DoCastSelf(SPELL_DISPERSE);
+ });
}
- struct boss_ionarAI : public ScriptedAI
+ void ScheduleEvents(bool spark)
{
- boss_ionarAI(Creature* creature) : ScriptedAI(creature), summons(creature)
- {
- m_pInstance = creature->GetInstanceScript();
- }
-
- InstanceScript* m_pInstance;
- EventMap events;
- SummonList summons;
- uint8 HealthCheck;
-
- void Reset() override
- {
- HealthCheck = 50;
- events.Reset();
- summons.DespawnAll();
-
- me->SetVisible(true);
-
- if (m_pInstance)
- m_pInstance->SetData(TYPE_IONAR, NOT_STARTED);
- }
-
- void ScheduleEvents(bool spark)
- {
- events.SetPhase(1);
- if (!spark)
- events.RescheduleEvent(EVENT_CHECK_HEALTH, 1s, 0, 1);
+ events.SetPhase(1);
+ if (!spark)
+ events.RescheduleEvent(EVENT_CHECK_HEALTH, 1s, 0, 1);
- events.RescheduleEvent(EVENT_BALL_LIGHTNING, 10s, 0, 1);
- events.RescheduleEvent(EVENT_STATIC_OVERLOAD, 5s, 0, 1);
- }
-
- void JustEngagedWith(Unit*) override
- {
- me->SetInCombatWithZone();
- Talk(SAY_AGGRO);
-
- if (m_pInstance)
- m_pInstance->SetData(TYPE_IONAR, IN_PROGRESS);
-
- ScheduleEvents(false);
- }
+ events.RescheduleEvent(EVENT_BALL_LIGHTNING, 7s, 11s, 0, 1);
+ events.RescheduleEvent(EVENT_STATIC_OVERLOAD, 6s, 12s, 0, 1);
+ }
- void JustDied(Unit*) override
- {
- Talk(SAY_DEATH);
+ void JustEngagedWith(Unit*) override
+ {
+ _JustEngagedWith();
+ Talk(SAY_AGGRO);
+ ScheduleEvents(false);
+ }
- summons.DespawnAll();
+ void JustDied(Unit*) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
- if (m_pInstance)
- m_pInstance->SetData(TYPE_IONAR, DONE);
- }
+ void KilledUnit(Unit* victim) override
+ {
+ if (!victim->IsPlayer())
+ return;
- void KilledUnit(Unit* victim) override
- {
- if (!victim->IsPlayer())
- return;
+ Talk(SAY_SLAY);
+ }
- Talk(SAY_SLAY);
- }
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ {
+ if (spell->Id == SPELL_DISPERSE)
+ Split();
+ }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
- {
- if (spell->Id == SPELL_DISPERSE)
- Split();
- }
+ void Split()
+ {
+ Talk(SAY_SPLIT);
- void Split()
+ for (uint8 i = 0; i < 5; ++i)
{
- Talk(SAY_SPLIT);
-
- Creature* spark;
- for (uint8 i = 0; i < 5; ++i)
+ if (Creature* spark = me->SummonCreature(NPC_SPARK_OF_IONAR, me->GetPosition(), TEMPSUMMON_TIMED_DESPAWN, 20000))
{
- if ((spark = me->SummonCreature(NPC_SPARK_OF_IONAR, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 20000)))
- {
- summons.Summon(spark);
- spark->CastSpell(spark, me->GetMap()->IsHeroic() ? SPELL_SPARK_VISUAL_TRIGGER_H : SPELL_SPARK_VISUAL_TRIGGER_N, true);
- spark->CastSpell(spark, SPELL_RANDOM_LIGHTNING, true);
- spark->SetUnitFlag(UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
- spark->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0);
+ spark->CastSpell(spark, SPELL_SPARK_VISUAL_TRIGGER, true);
+ spark->CastSpell(spark, SPELL_RANDOM_LIGHTNING, true);
+ spark->SetUnitFlag(UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
+ spark->SetHomePosition(me->GetPosition());
- if (Player* tgt = SelectTargetFromPlayerList(100))
- spark->GetMotionMaster()->MoveFollow(tgt, 0.0f, 0.0f, MOTION_SLOT_CONTROLLED);
- }
+ if (Player* tgt = SelectTargetFromPlayerList(100))
+ spark->GetMotionMaster()->MoveFollow(tgt, 0.0f, 0.0f, MOTION_SLOT_CONTROLLED);
}
-
- me->SetVisible(false);
- me->SetControlled(true, UNIT_STATE_STUNNED);
-
- events.SetPhase(2);
- events.ScheduleEvent(EVENT_CALL_SPARKS, 15s, 0, 2);
}
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
+ me->SetVisible(false);
+ me->SetControlled(true, UNIT_STATE_STUNNED);
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ events.SetPhase(2);
+ events.ScheduleEvent(EVENT_CALL_SPARKS, 20s, 0, 2);
+ }
- switch (events.ExecuteEvent())
- {
- case EVENT_BALL_LIGHTNING:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random))
- me->CastSpell(target, me->GetMap()->IsHeroic() ? SPELL_BALL_LIGHTNING_H : SPELL_BALL_LIGHTNING_N, false);
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- events.Repeat(10s, 11s);
- break;
- case EVENT_STATIC_OVERLOAD:
- if (Unit* target = SelectTarget(SelectTargetMethod::Random))
- me->CastSpell(target, me->GetMap()->IsHeroic() ? SPELL_STATIC_OVERLOAD_H : SPELL_STATIC_OVERLOAD_N, false);
+ events.Update(diff);
- events.Repeat(5s, 6s);
- break;
- case EVENT_CHECK_HEALTH:
- if (HealthBelowPct(HealthCheck))
- me->CastSpell(me, SPELL_DISPERSE, false);
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- events.Repeat(1s);
- return;
- case EVENT_CALL_SPARKS:
- {
- EntryCheckPredicate pred(NPC_SPARK_OF_IONAR);
- summons.DoAction(ACTION_CALLBACK, pred);
- events.ScheduleEvent(EVENT_RESTORE, 2s, 0, 2);
- return;
- }
- case EVENT_RESTORE:
+ switch (events.ExecuteEvent())
+ {
+ case EVENT_BALL_LIGHTNING:
+ DoCastRandomTarget(SPELL_BALL_LIGHTNING, 1, 0.0f, false);
+ events.Repeat(8s, 18s);
+ break;
+ case EVENT_STATIC_OVERLOAD:
+ DoCastRandomTarget(SPELL_STATIC_OVERLOAD);
+ events.Repeat(9s, 14s);
+ break;
+ case EVENT_CALL_SPARKS:
+ {
EntryCheckPredicate pred(NPC_SPARK_OF_IONAR);
- summons.DoAction(ACTION_SPARK_DESPAWN, pred);
-
- me->SetVisible(true);
- me->SetControlled(false, UNIT_STATE_STUNNED);
- ScheduleEvents(true);
+ summons.DoAction(ACTION_CALLBACK, pred);
+ events.ScheduleEvent(EVENT_RESTORE, 5s, 0, 2);
return;
- }
+ }
+ case EVENT_RESTORE:
+ EntryCheckPredicate pred(NPC_SPARK_OF_IONAR);
+ summons.DoAction(ACTION_SPARK_DESPAWN, pred);
- DoMeleeAttackIfReady();
+ me->SetVisible(true);
+ me->SetControlled(false, UNIT_STATE_STUNNED);
+ ScheduleEvents(true);
+ return;
}
- };
+
+ DoMeleeAttackIfReady();
+ }
};
-class npc_spark_of_ionar : public CreatureScript
+struct npc_spark_of_ionar : public ScriptedAI
{
-public:
- npc_spark_of_ionar() : CreatureScript("npc_spark_of_ionar") { }
+ npc_spark_of_ionar(Creature* creature) : ScriptedAI(creature) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void MoveInLineOfSight(Unit*) override { }
+ void AttackStart(Unit* /*who*/) override { }
+
+ void Reset() override
{
- return GetHallsOfLightningAI<npc_spark_of_ionarAI>(creature);
+ returning = false;
+ _events.ScheduleEvent(EVENT_CHANGE_TARGET, 3s);
}
- struct npc_spark_of_ionarAI : public ScriptedAI
+ void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
- npc_spark_of_ionarAI(Creature* creature) : ScriptedAI(creature) { }
-
- bool returning;
+ damage = 0;
+ }
- void MoveInLineOfSight(Unit*) override { }
- void UpdateAI(uint32) override { }
- void AttackStart(Unit* /*who*/) override { }
+ void UpdateAI(uint32 diff) override
+ {
+ if (returning)
+ return;
- void Reset() override { returning = false; }
+ _events.Update(diff);
- void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
+ while (uint32 eventId = _events.ExecuteEvent())
{
- damage = 0;
+ switch (eventId)
+ {
+ case EVENT_CHANGE_TARGET:
+ if (Player* tgt = SelectTargetFromPlayerList(100))
+ {
+ me->GetMotionMaster()->Clear();
+ me->GetMotionMaster()->MoveFollow(tgt, 0.0f, 0.0f, MOTION_SLOT_CONTROLLED);
+ }
+ _events.Repeat(3s);
+ break;
+ }
}
+ }
- void DoAction(int32 param) override
+ void DoAction(int32 param) override
+ {
+ if (param == ACTION_CALLBACK)
{
- if (param == ACTION_CALLBACK)
- {
- me->SetSpeed(MOVE_RUN, 2.5f);
- me->GetThreatMgr().ClearAllThreat();
- me->CombatStop(true);
- me->GetMotionMaster()->MoveTargetedHome();
- returning = true;
- }
- else if (param == ACTION_SPARK_DESPAWN)
- {
- me->GetMotionMaster()->MoveIdle();
+ _events.Reset();
+ me->SetSpeed(MOVE_RUN, 2.5f);
+ me->GetThreatMgr().ClearAllThreat();
+ me->CombatStop(true);
+ me->GetMotionMaster()->MoveTargetedHome();
+ returning = true;
+ }
+ else if (param == ACTION_SPARK_DESPAWN)
+ {
+ me->GetMotionMaster()->MoveIdle();
- me->RemoveAllAuras();
- me->CastSpell(me, SPELL_SPARK_DESPAWN, true);
- me->DespawnOrUnsummon(1000);
- }
+ me->RemoveAllAuras();
+ me->CastSpell(me, SPELL_SPARK_DESPAWN, true);
+ me->DespawnOrUnsummon(1s);
}
- };
+ }
+
+ private:
+ EventMap _events;
+ bool returning;
};
// 52658, 59795 - Static Overload
@@ -291,7 +266,8 @@ class spell_ionar_static_overload : public AuraScript
return;
if (Unit* target = GetTarget())
- target->CastSpell(target, SPELL_STATIC_OVERLOAD_KNOCK, true);
+ if (target->GetMap() && !target->GetMap()->IsHeroic())
+ target->CastSpell(target, SPELL_STATIC_OVERLOAD_KNOCK, true);
}
void Register() override
@@ -302,7 +278,7 @@ class spell_ionar_static_overload : public AuraScript
void AddSC_boss_ionar()
{
- new boss_ionar();
- new npc_spark_of_ionar();
+ RegisterHallOfLightningCreatureAI(boss_ionar);
+ RegisterHallOfLightningCreatureAI(npc_spark_of_ionar);
RegisterSpellScript(spell_ionar_static_overload);
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
index 75c4c06d20..361c232865 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
@@ -25,13 +25,11 @@
enum LokenSpells
{
SPELL_ARC_LIGHTNING = 52921,
- SPELL_LIGHTNING_NOVA_N = 52960,
- SPELL_LIGHTNING_NOVA_H = 59835,
+ SPELL_LIGHTNING_NOVA = 52960,
SPELL_LIGHTNING_NOVA_VISUAL = 56502,
SPELL_LIGHTNING_NOVA_THUNDERS = 52663,
- SPELL_PULSING_SHOCKWAVE_N = 52961,
- SPELL_PULSING_SHOCKWAVE_H = 59836,
+ SPELL_PULSING_SHOCKWAVE = 52961,
// Achievement
ACHIEVEMENT_TIMELY_DEATH = 20384
@@ -60,198 +58,112 @@ enum LokenEvents
EVENT_AURA_REMOVE = 5
};
-class boss_loken : public CreatureScript
+struct boss_loken : public BossAI
{
-public:
- boss_loken() : CreatureScript("boss_loken") { }
+ boss_loken(Creature* creature) : BossAI(creature, DATA_LOKEN), _introDone(false) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetHallsOfLightningAI<boss_lokenAI>(creature);
+ _Reset();
+ instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_TIMELY_DEATH);
+
+ me->RemoveAllAuras();
+
+ ScheduleHealthCheckEvent(75, [&] {
+ Talk(SAY_75HEALTH);
+ });
+
+ ScheduleHealthCheckEvent(50, [&] {
+ Talk(SAY_50HEALTH);
+ });
+
+ ScheduleHealthCheckEvent(25, [&] {
+ Talk(SAY_25HEALTH);
+ });
}
- struct boss_lokenAI : public ScriptedAI
+ void MoveInLineOfSight(Unit* who) override
{
- boss_lokenAI(Creature* creature) : ScriptedAI(creature)
- {
- m_pInstance = creature->GetInstanceScript();
- if (m_pInstance)
- isActive = m_pInstance->GetData(TYPE_LOKEN_INTRO);
- }
+ BossAI::MoveInLineOfSight(who);
+
+ if (_introDone || !who->IsPlayer() || !me->IsWithinDistInMap(who, 40.0f))
+ return;
- InstanceScript* m_pInstance;
- EventMap events;
+ Talk(SAY_INTRO_1);
+ Talk(SAY_INTRO_2, 10s);
+ _introDone = true;
+ }
- bool isActive;
- uint32 IntroTimer;
- uint8 HealthCheck;
+ void JustEngagedWith(Unit*) override
+ {
+ me->m_Events.KillAllEvents(false);
+ _JustEngagedWith();
+ Talk(SAY_AGGRO);
- void MoveInLineOfSight(Unit*) override { }
+ events.ScheduleEvent(EVENT_ARC_LIGHTNING, 10s);
+ events.ScheduleEvent(EVENT_SHOCKWAVE, 3s);
+ events.ScheduleEvent(EVENT_LIGHTNING_NOVA, 15s);
- void Reset() override
- {
- events.Reset();
- if (m_pInstance)
- {
- m_pInstance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_TIMELY_DEATH);
- m_pInstance->SetData(TYPE_LOKEN, NOT_STARTED);
- }
-
- HealthCheck = 75;
- IntroTimer = 0;
- me->RemoveAllAuras();
-
- if (!isActive)
- {
- me->SetControlled(true, UNIT_STATE_STUNNED);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- }
- else
- {
- me->SetControlled(false, UNIT_STATE_STUNNED);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- }
- }
+ if (IsHeroic())
+ instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_TIMELY_DEATH);
+ }
- void JustEngagedWith(Unit*) override
- {
- me->SetInCombatWithZone();
- Talk(SAY_AGGRO);
+ void JustDied(Unit*) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
- events.ScheduleEvent(EVENT_ARC_LIGHTNING, 10s);
- events.ScheduleEvent(EVENT_SHOCKWAVE, 3s);
- events.ScheduleEvent(EVENT_LIGHTNING_NOVA, 15s);
+ void KilledUnit(Unit* victim) override
+ {
+ if (!victim->IsPlayer())
+ return;
- if (m_pInstance)
- {
- m_pInstance->SetData(TYPE_LOKEN, IN_PROGRESS);
+ Talk(SAY_SLAY);
+ }
- if (me->GetMap()->IsHeroic())
- m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_TIMELY_DEATH);
- }
- }
+ void UpdateAI(uint32 diff) override
+ {
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
- void JustDied(Unit*) override
- {
- Talk(SAY_DEATH);
+ events.Update(diff);
- if (m_pInstance)
- m_pInstance->SetData(TYPE_LOKEN, DONE);
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- void LokenSpeach(bool hp)
+ switch (events.ExecuteEvent())
{
- if (hp)
- {
- switch (HealthCheck)
- {
- case 75:
- Talk(SAY_75HEALTH);
- break;
- case 50:
- Talk(SAY_50HEALTH);
- break;
- case 25:
- Talk(SAY_25HEALTH);
- break;
- }
- }
- else
+ case EVENT_LIGHTNING_NOVA:
Talk(SAY_NOVA);
+ events.Repeat(15s);
+ me->CastSpell(me, SPELL_LIGHTNING_NOVA_VISUAL, true);
+ me->CastSpell(me, SPELL_LIGHTNING_NOVA_THUNDERS, true);
+
+ events.DelayEvents(5s);
+ events.ScheduleEvent(EVENT_AURA_REMOVE, me->GetMap()->IsHeroic() ? 4s : 5s);
+
+ me->CastSpell(me, SPELL_LIGHTNING_NOVA, false);
+ break;
+ case EVENT_SHOCKWAVE:
+ me->CastSpell(me, SPELL_PULSING_SHOCKWAVE, false);
+ break;
+ case EVENT_ARC_LIGHTNING:
+ if (Unit* target = SelectTargetFromPlayerList(100, SPELL_ARC_LIGHTNING))
+ me->CastSpell(target, SPELL_ARC_LIGHTNING, false);
+
+ events.Repeat(12s);
+ break;
+ case EVENT_AURA_REMOVE:
+ me->RemoveAura(SPELL_LIGHTNING_NOVA_THUNDERS);
+ break;
}
- void KilledUnit(Unit* victim) override
- {
- if (!victim->IsPlayer())
- return;
-
- Talk(SAY_SLAY);
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (!isActive)
- {
- IntroTimer += diff;
- if (IntroTimer > 5000 && IntroTimer < 10000)
- {
- if (SelectTargetFromPlayerList(60))
- {
- Talk(SAY_INTRO_1);
- IntroTimer = 10000;
- }
- else
- IntroTimer = 0;
- }
-
- if (IntroTimer >= 30000 && IntroTimer < 40000)
- {
- Talk(SAY_INTRO_2);
- IntroTimer = 40000;
- }
- if (IntroTimer >= 60000)
- {
- isActive = true;
- if (m_pInstance)
- m_pInstance->SetData(TYPE_LOKEN_INTRO, 1);
-
- me->SetControlled(false, UNIT_STATE_STUNNED);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
-
- if (Player* target = SelectTargetFromPlayerList(80))
- AttackStart(target);
- }
-
- return;
- }
-
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- switch (events.ExecuteEvent())
- {
- case EVENT_CHECK_HEALTH:
- if (HealthBelowPct(HealthCheck))
- {
- LokenSpeach(true);
- HealthCheck -= 25;
- }
-
- events.Repeat(1s);
- break;
- case EVENT_LIGHTNING_NOVA:
- events.Repeat(15s);
- me->CastSpell(me, SPELL_LIGHTNING_NOVA_VISUAL, true);
- me->CastSpell(me, SPELL_LIGHTNING_NOVA_THUNDERS, true);
-
- events.DelayEvents(5s);
- events.ScheduleEvent(EVENT_AURA_REMOVE, me->GetMap()->IsHeroic() ? 4s : 5s);
-
- me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_LIGHTNING_NOVA_H : SPELL_LIGHTNING_NOVA_N, false);
- break;
- case EVENT_SHOCKWAVE:
- me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_PULSING_SHOCKWAVE_H : SPELL_PULSING_SHOCKWAVE_N, false);
- break;
- case EVENT_ARC_LIGHTNING:
- if (Unit* target = SelectTargetFromPlayerList(100, SPELL_ARC_LIGHTNING))
- me->CastSpell(target, SPELL_ARC_LIGHTNING, false);
-
- events.Repeat(12s);
- break;
- case EVENT_AURA_REMOVE:
- me->RemoveAura(SPELL_LIGHTNING_NOVA_THUNDERS);
- break;
- }
-
- DoMeleeAttackIfReady();
- }
- };
+ DoMeleeAttackIfReady();
+ }
+ private:
+ bool _introDone;
};
class spell_loken_pulsing_shockwave : public SpellScript
@@ -276,6 +188,6 @@ class spell_loken_pulsing_shockwave : public SpellScript
void AddSC_boss_loken()
{
- new boss_loken();
+ RegisterHallOfLightningCreatureAI(boss_loken);
RegisterSpellScript(spell_loken_pulsing_shockwave);
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index c64594b114..7e7e800b9a 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -23,19 +23,16 @@
enum VolkahnSpells
{
// Volkhan
- SPELL_HEAT_N = 52387,
- SPELL_HEAT_H = 59528,
- SPELL_SHATTERING_STOMP_N = 52237,
- SPELL_SHATTERING_STOMP_H = 59529,
+ SPELL_HEAT = 52387,
+ SPELL_SHATTERING_STOMP = 52237,
SPELL_TEMPER = 52238,
SPELL_SUMMON_MOLTEN_GOLEM = 52405,
//Molten Golem
SPELL_BLAST_WAVE = 23113,
- SPELL_IMMOLATION_STRIKE_N = 52433,
- SPELL_IMMOLATION_STRIKE_H = 59530,
- SPELL_SHATTER_N = 52429,
- SPELL_SHATTER_H = 59527,
+ SPELL_COOL_DOWN = 52443,
+ SPELL_IMMOLATION_STRIKE = 52433,
+ SPELL_SHATTER = 52429,
};
enum VolkhanOther
@@ -63,8 +60,8 @@ enum VolkhanEvents
EVENT_MOVE_TO_ANVIL = 5,
// Molten Golem
- EVENT_BLAST = 11,
- EVENT_IMMOLATION = 12,
+ EVENT_IMMOLATION_STRIKE = 12,
+ EVENT_CHANGE_TARGET = 13,
};
enum Yells
@@ -78,506 +75,316 @@ enum Yells
EMOTE_SHATTER = 6,
};
-class boss_volkhan : public CreatureScript
+struct boss_volkhan : public BossAI
{
-public:
- boss_volkhan() : CreatureScript("boss_volkhan") { }
+ boss_volkhan(Creature* creature) : BossAI(creature, DATA_VOLKHAN), summons(creature) { }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetHallsOfLightningAI<boss_volkhanAI>(creature);
+ _Reset();
+ x = y = z = PointID = ShatteredCount = 0;
+ shatteredStompCast = false;
+ me->SetSpeed(MOVE_RUN, 1.2f, true);
+ me->SetReactState(REACT_AGGRESSIVE);
+ instance->SetData(DATA_VOLKHAN_ACHIEVEMENT, true);
}
- struct boss_volkhanAI : public ScriptedAI
+ void JustEngagedWith(Unit*) override
{
- boss_volkhanAI(Creature* creature) : ScriptedAI(creature), summons(creature)
- {
- m_pInstance = creature->GetInstanceScript();
- }
+ _JustEngagedWith();
+ me->SetInCombatWithZone();
+ Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, randtime(9s, 14s));
+ events.ScheduleEvent(EVENT_HEAT, randtime(18s, 38s));
+ events.ScheduleEvent(EVENT_CHECK_HEALTH, 1s);
+ events.ScheduleEvent(EVENT_POSITION, 4s);
+ }
- InstanceScript* m_pInstance;
- EventMap events;
- SummonList summons;
- uint8 HealthCheck;
- float x, y, z;
- uint8 PointID;
- uint8 ShatteredCount;
+ void JustDied(Unit*) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
- void Reset() override
+ void GetNextPos()
+ {
+ if (me->GetPositionY() < -180)
{
- x = y = z = PointID = ShatteredCount = 0;
- HealthCheck = 100;
- events.Reset();
- summons.DespawnAll();
- me->SetSpeed(MOVE_RUN, 1.2f, true);
- me->SetReactState(REACT_AGGRESSIVE);
+ if (me->GetPositionX() > 1330)
+ x = 1355;
+ else
+ x = 1308;
- if (m_pInstance)
- {
- m_pInstance->SetData(TYPE_VOLKHAN, NOT_STARTED);
- m_pInstance->SetData(DATA_VOLKHAN_ACHIEVEMENT, true);
- }
+ y = -178;
+ z = 52.5f;
}
-
- void JustEngagedWith(Unit*) override
+ else if (me->GetPositionY() < -145)
{
- me->SetInCombatWithZone();
- Talk(SAY_AGGRO);
-
- if (m_pInstance)
- m_pInstance->SetData(TYPE_VOLKHAN, IN_PROGRESS);
+ if (me->GetPositionX() > 1330)
+ x = 1355;
+ else
+ x = 1308;
- ScheduleEvents(false);
+ y = -137;
+ z = 52.5f;
}
-
- void JustDied(Unit*) override
+ else if (me->GetPositionY() < -130)
{
- Talk(SAY_DEATH);
-
- summons.DespawnAll();
+ if (me->GetPositionX() > 1330)
+ x = 1343;
+ else
+ x = 1320;
- if (m_pInstance)
- m_pInstance->SetData(TYPE_VOLKHAN, DONE);
+ y = -123;
+ z = 56.7f;
}
-
- void GetNextPos()
+ else
{
- if (me->GetPositionY() < -180)
- {
- if (me->GetPositionX() > 1330)
- x = 1355;
- else
- x = 1308;
-
- y = -178;
- z = 52.5f;
- }
- else if (me->GetPositionY() < -145)
- {
- if (me->GetPositionX() > 1330)
- x = 1355;
- else
- x = 1308;
-
- y = -137;
- z = 52.5f;
- }
- else if (me->GetPositionY() < -130)
- {
- if (me->GetPositionX() > 1330)
- x = 1343;
- else
- x = 1320;
-
- y = -123;
- z = 56.7f;
- }
- else
- {
- PointID = POINT_ANVIL;
- x = 1327;
- y = -96;
- z = 56.7f;
- }
+ PointID = POINT_ANVIL;
+ x = 1327;
+ y = -96;
+ z = 56.7f;
}
+ }
- void KilledUnit(Unit* victim) override
- {
- if (!victim->IsPlayer())
- return;
-
- Talk(SAY_SLAY);
- }
+ void KilledUnit(Unit* victim) override
+ {
+ if (!victim->IsPlayer())
+ return;
- void ScheduleEvents(bool anvil)
- {
- events.SetPhase(1);
- events.RescheduleEvent(EVENT_HEAT, 8s, 0, 1);
- events.RescheduleEvent(EVENT_SHATTER, 10s, 0, 1);
- events.RescheduleEvent(EVENT_CHECK_HEALTH, anvil ? 1s : 6s, 0, 1);
- events.RescheduleEvent(EVENT_POSITION, 4s, 0, 1);
- }
+ Talk(SAY_SLAY);
+ }
- void JustSummoned(Creature* summon) override
+ void JustSummoned(Creature* summon) override
+ {
+ summons.Summon(summon);
+ if (summon->GetEntry() == NPC_MOLTEN_GOLEM)
{
- summons.Summon(summon);
- if (summon->GetEntry() == NPC_MOLTEN_GOLEM)
- {
- summon->SetFaction(me->GetFaction());
+ summon->SetFaction(me->GetFaction());
- if (Unit* target = SelectTarget(SelectTargetMethod::Random))
- summon->AI()->AttackStart(target);
- }
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random))
+ summon->AI()->AttackStart(target);
}
+ }
- void DoAction(int32 param) override
+ void DoAction(int32 param) override
+ {
+ if (param == ACTION_DESTROYED)
{
- if (param == ACTION_DESTROYED)
- {
- ShatteredCount++;
- if (ShatteredCount > 4)
- m_pInstance->SetData(DATA_VOLKHAN_ACHIEVEMENT, false);
- }
+ ShatteredCount++;
+ if (ShatteredCount > 4)
+ instance->SetData(DATA_VOLKHAN_ACHIEVEMENT, false);
}
+ }
- void MovementInform(uint32 type, uint32 id) override
+ bool HasActiveGolem()
+ {
+ for (ObjectGuid const& guid : summons)
{
- if (type != POINT_MOTION_TYPE)
- return;
-
- if (id == POINT_ANVIL)
+ if (Creature* golem = ObjectAccessor::GetCreature(*me, guid))
{
- me->SetSpeed(MOVE_RUN, 1.2f, true);
- me->SetReactState(REACT_AGGRESSIVE);
- me->CastSpell(me, SPELL_TEMPER, false);
- PointID = 0;
- ScheduleEvents(true);
-
- // update orientation at server
- me->SetOrientation(2.19f);
-
- // and client
- WorldPacket data;
- me->BuildHeartBeatMsg(&data);
- me->SendMessageToSet(&data, false);
- me->SetControlled(true, UNIT_STATE_ROOT);
+ if (golem->GetEntry() == NPC_MOLTEN_GOLEM && golem->IsAlive())
+ return true;
}
- else
- events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, 0ms, 0, 2);
}
+ return false;
+ }
- void SpellHitTarget(Unit* /*who*/, SpellInfo const* spellInfo) override
- {
- if (spellInfo->Id == SPELL_TEMPER)
- {
- me->CastSpell(me, SPELL_SUMMON_MOLTEN_GOLEM, true);
- me->CastSpell(me, SPELL_SUMMON_MOLTEN_GOLEM, true);
- me->GetMotionMaster()->MoveChase(me->GetVictim());
- me->SetControlled(false, UNIT_STATE_ROOT);
- }
- }
+ void MovementInform(uint32 type, uint32 id) override
+ {
+ if (type != POINT_MOTION_TYPE)
+ return;
- void GoToAnvil()
+ if (id == POINT_ANVIL)
{
- events.SetPhase(2);
- HealthCheck -= 20;
- me->SetSpeed(MOVE_RUN, 4.0f, true);
- me->SetReactState(REACT_PASSIVE);
-
- Talk(SAY_FORGE);
+ me->SetSpeed(MOVE_RUN, 1.2f, true);
+ DoCastSelf(SPELL_TEMPER);
+ PointID = 0;
- if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
- me->GetMotionMaster()->MovementExpired();
+ // update orientation at server
+ me->SetOrientation(2.19f);
- events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, 0ms, 0, 2);
+ // and client
+ me->SendMovementFlagUpdate(false);
+ me->SetControlled(true, UNIT_STATE_ROOT);
}
+ else
+ me->GetMotionMaster()->MovePoint(PointID, x, y, z);
+ }
- void UpdateAI(uint32 diff) override
+ void SpellHitTarget(Unit* /*who*/, SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Id == SPELL_TEMPER)
{
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- switch (events.ExecuteEvent())
- {
- case EVENT_HEAT:
- me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_HEAT_H : SPELL_HEAT_N, true);
- events.Repeat(8s);
- break;
- case EVENT_CHECK_HEALTH:
- if (HealthBelowPct(HealthCheck))
- GoToAnvil();
-
- events.Repeat(1s);
- return;
- case EVENT_SHATTER:
- {
- events.Repeat(10s);
- summons.DoAction(ACTION_SHATTER);
- break;
- }
- case EVENT_MOVE_TO_ANVIL:
- GetNextPos();
- me->GetMotionMaster()->MovePoint(PointID, x, y, z);
- return;
- case EVENT_POSITION:
- if (me->GetDistance(1331.9f, -106, 56) > 95)
- EnterEvadeMode();
- else
- events.Repeat(4s);
-
- return;
- }
+ DoCastSelf(SPELL_SUMMON_MOLTEN_GOLEM, true);
+ DoCastSelf(SPELL_SUMMON_MOLTEN_GOLEM, true);
+ me->SetControlled(false, UNIT_STATE_ROOT);
+ me->SetReactState(REACT_AGGRESSIVE);
+ if (me->GetVictim())
+ me->GetMotionMaster()->MoveChase(me->GetVictim());
- DoMeleeAttackIfReady();
+ events.RescheduleEvent(EVENT_HEAT, randtime(9s, 24s));
}
- };
-};
-
-class npc_molten_golem : public CreatureScript
-{
-public:
- npc_molten_golem() : CreatureScript("npc_molten_golem") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetHallsOfLightningAI<npc_molten_golemAI>(creature);
}
- struct npc_molten_golemAI : public ScriptedAI
+ void GoToAnvil()
{
- npc_molten_golemAI(Creature* creature) : ScriptedAI(creature)
- {
- m_pInstance = creature->GetInstanceScript();
- }
-
- EventMap events;
- InstanceScript* m_pInstance;
+ me->SetSpeed(MOVE_RUN, 4.0f, true);
+ me->SetReactState(REACT_PASSIVE);
- void Reset() override
- {
- events.Reset();
- events.ScheduleEvent(EVENT_BLAST, 7s);
- events.ScheduleEvent(EVENT_IMMOLATION, 3s);
- }
+ Talk(SAY_FORGE);
- void DamageTaken(Unit*, uint32& uiDamage, DamageEffectType, SpellSchoolMask) override
- {
- if (me->GetEntry() == NPC_BRITTLE_GOLEM)
- {
- uiDamage = 0;
- return;
- }
-
- if (uiDamage >= me->GetHealth())
- {
- me->UpdateEntry(NPC_BRITTLE_GOLEM, 0, false);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
- me->SetHealth(me->GetMaxHealth());
- me->RemoveAllAuras();
- me->AttackStop();
- uiDamage = 0;
+ if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
+ me->GetMotionMaster()->MovementExpired();
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(false);
+ GetNextPos();
+ me->GetMotionMaster()->MovePoint(PointID, x, y, z);
+ }
- me->SetControlled(true, UNIT_STATE_STUNNED);
- }
- }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void DoAction(int32 param) override
- {
- if (me->GetEntry() == NPC_BRITTLE_GOLEM && param == ACTION_SHATTER)
- {
- if (Creature* volkhan = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(TYPE_VOLKHAN)))
- volkhan->AI()->DoAction(ACTION_DESTROYED);
+ events.Update(diff);
- me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_SHATTER_H : SPELL_SHATTER_N, true);
- me->DespawnOrUnsummon(500);
- }
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- void UpdateAI(uint32 diff) override
+ switch (events.ExecuteEvent())
{
- //Return since we have no target or if we are frozen
- if (!UpdateVictim() || me->GetEntry() == NPC_BRITTLE_GOLEM)
+ case EVENT_HEAT:
+ if (HasActiveGolem())
+ {
+ DoCastSelf(SPELL_HEAT);
+ events.Repeat(randtime(9s, 24s));
+ }
+ break;
+ case EVENT_CHECK_HEALTH:
+ if (!shatteredStompCast && HealthBelowPct(25))
+ {
+ shatteredStompCast = true;
+ DoCastAOE(SPELL_SHATTERING_STOMP);
+ Talk(SAY_STOMP);
+ summons.DoAction(ACTION_SHATTER);
+ }
+ events.Repeat(1s);
return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
+ case EVENT_MOVE_TO_ANVIL:
+ GoToAnvil();
+ events.Repeat(randtime(30s, 36s));
+ return;
+ case EVENT_POSITION:
+ if (me->GetDistance(1331.9f, -106, 56) > 95)
+ EnterEvadeMode();
+ else
+ events.Repeat(4s);
return;
-
- switch (events.ExecuteEvent())
- {
- case EVENT_BLAST:
- me->CastSpell(me, SPELL_BLAST_WAVE, false);
- events.Repeat(14s);
- break;
- case EVENT_IMMOLATION:
- me->CastSpell(me->GetVictim(), me->GetMap()->IsHeroic() ? SPELL_IMMOLATION_STRIKE_H : SPELL_IMMOLATION_STRIKE_N, false);
- events.Repeat(5s);
- break;
- }
-
- DoMeleeAttackIfReady();
}
- };
-};
-enum monumentSpells
-{
- SPELL_FREEZE_ANIM = 16245,
- SPELL_AWAKEN = 52875,
-
- SPELL_PIERCING_HOWL = 23600,
- SPELL_PENETRATING_STRIKE = 52890,
- SPELL_FRIGHTENING_SHOUT = 19134,
- SPELL_BLADE_TURNING_N = 52891,
- SPELL_BLADE_TURNING_H = 59173,
-
- SPELL_DEADLY_THROW_N = 52885,
- SPELL_DEADLY_THROW_H = 59180,
- SPELL_DEFLECTION_N = 52879,
- SPELL_DEFLECTION_H = 59181,
- SPELL_THROW_N = 52904,
- SPELL_THROW_H = 59179,
-};
-
-enum monumentEvents
-{
- EVENT_PIERCING_HOWL = 1,
- EVENT_PENETRATING_STRIKE = 2,
- EVENT_FRIGHTENING_SHOUT = 3,
- EVENT_BLADE_TURNING = 4,
-
- EVENT_DEADLY_THROW = 11,
- EVENT_DEFLECTION = 12,
- EVENT_THROW = 13,
+ DoMeleeAttackIfReady();
+ }
- EVENT_UNFREEZE = 20,
+ private:
+ EventMap events;
+ SummonList summons;
+ float x, y, z;
+ uint8 PointID;
+ uint8 ShatteredCount;
+ bool shatteredStompCast;
};
-class npc_hol_monument : public CreatureScript
+struct npc_molten_golem : public ScriptedAI
{
-public:
- npc_hol_monument() : CreatureScript("npc_hol_monument") {}
+ npc_molten_golem(Creature* creature) : ScriptedAI(creature)
+ {
+ m_pInstance = creature->GetInstanceScript();
+ }
- CreatureAI* GetAI(Creature* creature) const override
+ void Reset() override
{
- return GetHallsOfLightningAI<npc_hol_monumentAI>(creature);
+ events.Reset();
+ events.ScheduleEvent(EVENT_IMMOLATION_STRIKE, 3s);
+ events.ScheduleEvent(EVENT_CHANGE_TARGET, 5s);
+ DoCastSelf(SPELL_COOL_DOWN, true);
}
- struct npc_hol_monumentAI : public ScriptedAI
+ void DamageTaken(Unit*, uint32& uiDamage, DamageEffectType, SpellSchoolMask) override
{
- npc_hol_monumentAI(Creature* creature) : ScriptedAI(creature)
+ if (me->GetEntry() == NPC_BRITTLE_GOLEM)
{
- _attackGUID.Clear();
- _isActive = urand(0, 1);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->CastSpell(me, SPELL_FREEZE_ANIM, true);
+ uiDamage = 0;
+ return;
}
- EventMap events;
- bool _isActive;
- ObjectGuid _attackGUID;
-
- void Reset() override
+ if (uiDamage >= me->GetHealth())
{
- }
+ if (me->GetMap()->IsHeroic())
+ DoCastSelf(SPELL_BLAST_WAVE, true);
- void MoveInLineOfSight(Unit* who) override
- {
- if (_attackGUID)
- ScriptedAI::MoveInLineOfSight(who);
- else if (_isActive && who->IsPlayer())
- {
- if ((who->GetPositionX() < me->GetPositionX() || who->GetPositionY() < -220.0f) && me->GetDistance2d(who) < 40)
- {
- _isActive = false;
- _attackGUID = who->GetGUID();
- events.Reset();
- events.RescheduleEvent(EVENT_UNFREEZE, 5s);
- }
- }
- }
+ me->UpdateEntry(NPC_BRITTLE_GOLEM, 0, false);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
+ me->SetHealth(me->GetMaxHealth());
+ me->RemoveAllAuras();
+ me->AttackStop();
+ uiDamage = 0;
- void JustEngagedWith(Unit*) override
- {
- events.Reset();
- if (me->GetEntry() == 28961) // NPC_TITANIUM_SIEGEBREAKER
- {
- events.ScheduleEvent(EVENT_PIERCING_HOWL, 10s, 25s);
- events.ScheduleEvent(EVENT_PENETRATING_STRIKE, 5s, 10s);
- events.ScheduleEvent(EVENT_FRIGHTENING_SHOUT, 20s, 28s);
- events.ScheduleEvent(EVENT_BLADE_TURNING, 12s);
- }
- else
- {
- events.ScheduleEvent(EVENT_THROW, 10s, 25s);
- events.ScheduleEvent(EVENT_DEADLY_THROW, 15s, 30s);
- events.ScheduleEvent(EVENT_DEFLECTION, 15s);
- }
- }
+ if (me->IsNonMeleeSpellCast(false))
+ me->InterruptNonMeleeSpells(false);
- void AttackStart(Unit* who) override
- {
- if (!_attackGUID || !_isActive)
- return;
- ScriptedAI::AttackStart(who);
+ me->SetControlled(true, UNIT_STATE_STUNNED);
}
+ }
- void UpdateAI(uint32 diff) override
+ void DoAction(int32 param) override
+ {
+ if (me->GetEntry() == NPC_BRITTLE_GOLEM && param == ACTION_SHATTER)
{
- if (!_isActive && !_attackGUID)
- return;
+ if (Creature* volkhan = m_pInstance->GetCreature(DATA_VOLKHAN))
+ volkhan->AI()->DoAction(ACTION_DESTROYED);
- events.Update(diff);
- uint32 eventId = events.ExecuteEvent();
-
- if (eventId == EVENT_UNFREEZE)
- {
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->CastSpell(me, SPELL_AWAKEN, true);
- me->RemoveAllAuras();
- _isActive = true;
- if (Unit* target = ObjectAccessor::GetUnit(*me, _attackGUID))
- AttackStart(target);
- return;
- }
+ me->CastSpell(me, SPELL_SHATTER, true);
+ me->DespawnOrUnsummon(500ms);
+ }
+ }
- //Return since we have no target or if we are disabled from fight
- if (!UpdateVictim())
- return;
+ void UpdateAI(uint32 diff) override
+ {
+ //Return since we have no target or if we are frozen
+ if (!UpdateVictim() || me->GetEntry() == NPC_BRITTLE_GOLEM)
+ return;
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
+ events.Update(diff);
- switch (eventId)
- {
- case EVENT_PIERCING_HOWL:
- me->CastSpell(me->GetVictim(), SPELL_PIERCING_HOWL, false);
- events.Repeat(10s, 25s);
- break;
- case EVENT_PENETRATING_STRIKE:
- me->CastSpell(me->GetVictim(), SPELL_PENETRATING_STRIKE, false);
- events.Repeat(5s, 10s);
- break;
- case EVENT_FRIGHTENING_SHOUT:
- me->CastSpell(me->GetVictim(), SPELL_FRIGHTENING_SHOUT, false);
- events.Repeat(20s, 28s);
- break;
- case EVENT_BLADE_TURNING:
- me->CastSpell(me->GetVictim(), me->GetMap()->IsHeroic() ? SPELL_BLADE_TURNING_H : SPELL_BLADE_TURNING_N, false);
- events.Repeat(12s);
- break;
- case EVENT_THROW:
- me->CastSpell(SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0), me->GetMap()->IsHeroic() ? SPELL_THROW_H : SPELL_THROW_N, true);
- events.Repeat(10s, 25s);
- break;
- case EVENT_DEADLY_THROW:
- me->CastSpell(SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0), me->GetMap()->IsHeroic() ? SPELL_DEADLY_THROW_H : SPELL_DEADLY_THROW_N, true);
- events.Repeat(15s, 30s);
- break;
- case EVENT_DEFLECTION:
- me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_DEFLECTION_H : SPELL_DEFLECTION_N, false);
- events.Repeat(15s);
- break;
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- DoMeleeAttackIfReady();
+ switch (events.ExecuteEvent())
+ {
+ case EVENT_IMMOLATION_STRIKE:
+ if (SelectTarget(SelectTargetMethod::MaxThreat, 0, 0.0f, true, true, -SPELL_IMMOLATION_STRIKE))
+ DoCastVictim(SPELL_IMMOLATION_STRIKE);
+ events.Repeat(5s);
+ break;
+ case EVENT_CHANGE_TARGET:
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
+ {
+ me->GetThreatMgr().ResetAllThreat();
+ me->AddThreat(target, 30000.0f);
+ AttackStart(target);
+ }
+ break;
}
- };
+
+ DoMeleeAttackIfReady();
+ }
+private:
+ EventMap events;
+ InstanceScript* m_pInstance;
};
void AddSC_boss_volkhan()
{
- new boss_volkhan();
- new npc_molten_golem();
- new npc_hol_monument();
+ RegisterHallOfLightningCreatureAI(boss_volkhan);
+ RegisterHallOfLightningCreatureAI(npc_molten_golem);
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
index dac5813097..99b3fecb81 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
@@ -24,34 +24,41 @@
#define HallsOfLightningScriptName "instance_halls_of_lightning"
-enum HoLEvents
+enum HoLBossIds
{
- TYPE_BJARNGRIM = 0,
- TYPE_IONAR = 1,
- TYPE_LOKEN = 2,
- TYPE_VOLKHAN = 3,
- TYPE_LOKEN_INTRO = 4,
- MAX_ENCOUNTER = 5,
+ DATA_BJARNGRIM = 0,
+ DATA_IONAR = 1,
+ DATA_LOKEN = 2,
+ DATA_VOLKHAN = 3,
+ MAX_ENCOUNTERS
+};
+
+enum HoLDataTypes
+{
+ // GameObject data
+ DATA_LOKEN_THRONE = 0,
+ // Achievement data
DATA_BJARNGRIM_ACHIEVEMENT = 10,
DATA_VOLKHAN_ACHIEVEMENT = 11,
};
enum HoLNPCs
{
- NPC_BJARNGRIM = 28586,
- NPC_VOLKHAN = 28587,
- NPC_IONAR = 28546,
- NPC_LOKEN = 28923,
+ NPC_TITANIUM_THUNDERER = 28965,
+ NPC_TITANIUM_SIEGEBREAKER = 28961
};
enum HoLGOs
{
- GO_BJARNGRIM_DOOR = 191416, //_doors10
- GO_VOLKHAN_DOOR = 191325, //_doors07
- GO_IONAR_DOOR = 191326, //_doors05
- GO_LOKEN_DOOR = 191324, //_doors02
- GO_LOKEN_THRONE = 192654,
+ GO_VOLKHAN_DOOR = 191325,
+ GO_IONAR_DOOR = 191326,
+ GO_LOKEN_THRONE = 192654
+};
+
+enum HoLActions
+{
+ ACTION_ACTIVATE_TITANIUM_VRYKUL,
};
template <class AI, class T>
@@ -60,4 +67,6 @@ inline AI* GetHallsOfLightningAI(T* obj)
return GetInstanceAI<AI>(obj, HallsOfLightningScriptName);
}
+#define RegisterHallOfLightningCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetHallsOfLightningAI)
+
#endif
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
index 75954ab046..1341f31c06 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
@@ -15,206 +15,121 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "AreaTriggerScript.h"
#include "CreatureScript.h"
#include "InstanceMapScript.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
+DoorData const doorData[] =
+{
+ { GO_VOLKHAN_DOOR, DATA_VOLKHAN, DOOR_TYPE_PASSAGE },
+ { GO_IONAR_DOOR, DATA_IONAR, DOOR_TYPE_PASSAGE },
+ { 0, 0, DOOR_TYPE_ROOM }
+};
+
+ObjectData const gameObjectData[] =
+{
+ { GO_LOKEN_THRONE, DATA_LOKEN_THRONE },
+ { 0, 0 }
+};
+
class instance_halls_of_lightning : public InstanceMapScript
{
public:
instance_halls_of_lightning() : InstanceMapScript("instance_halls_of_lightning", MAP_HALLS_OF_LIGHTNING) { }
- InstanceScript* GetInstanceScript(InstanceMap* pMap) const override
- {
- return new instance_halls_of_lightning_InstanceMapScript(pMap);
- }
-
struct instance_halls_of_lightning_InstanceMapScript : public InstanceScript
{
- instance_halls_of_lightning_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); };
-
- uint32 m_auiEncounter[MAX_ENCOUNTER];
-
- ObjectGuid m_uiGeneralBjarngrimGUID;
- ObjectGuid m_uiIonarGUID;
- ObjectGuid m_uiLokenGUID;
- ObjectGuid m_uiVolkhanGUID;
-
- ObjectGuid m_uiBjarngrimDoorGUID;
- ObjectGuid m_uiVolkhanDoorGUID;
- ObjectGuid m_uiIonarDoorGUID;
- ObjectGuid m_uiLokenDoorGUID;
- ObjectGuid m_uiLokenGlobeGUID;
-
- bool volkhanAchievement;
- bool bjarngrimAchievement;
-
- void Initialize() override
+ instance_halls_of_lightning_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
{
SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- volkhanAchievement = false;
- bjarngrimAchievement = false;
- }
-
- bool IsEncounterInProgress() const override
- {
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- {
- if (m_auiEncounter[i] == IN_PROGRESS && i != TYPE_LOKEN_INTRO)
- {
- return true;
- }
- }
- return false;
- }
-
- void OnCreatureCreate(Creature* pCreature) override
- {
- switch (pCreature->GetEntry())
- {
- case NPC_BJARNGRIM:
- m_uiGeneralBjarngrimGUID = pCreature->GetGUID();
- break;
- case NPC_VOLKHAN:
- m_uiVolkhanGUID = pCreature->GetGUID();
- break;
- case NPC_IONAR:
- m_uiIonarGUID = pCreature->GetGUID();
- break;
- case NPC_LOKEN:
- m_uiLokenGUID = pCreature->GetGUID();
- break;
- }
- }
-
- void OnGameObjectCreate(GameObject* pGo) override
- {
- switch (pGo->GetEntry())
- {
- case GO_BJARNGRIM_DOOR:
- m_uiBjarngrimDoorGUID = pGo->GetGUID();
- if (m_auiEncounter[TYPE_BJARNGRIM] == DONE)
- pGo->SetGoState(GO_STATE_ACTIVE);
-
- break;
- case GO_VOLKHAN_DOOR:
- m_uiVolkhanDoorGUID = pGo->GetGUID();
- if (m_auiEncounter[TYPE_VOLKHAN] == DONE)
- pGo->SetGoState(GO_STATE_ACTIVE);
-
- break;
- case GO_IONAR_DOOR:
- m_uiIonarDoorGUID = pGo->GetGUID();
- if (m_auiEncounter[TYPE_IONAR] == DONE)
- pGo->SetGoState(GO_STATE_ACTIVE);
-
- break;
- case GO_LOKEN_DOOR:
- m_uiLokenDoorGUID = pGo->GetGUID();
- if (m_auiEncounter[TYPE_LOKEN] == DONE)
- pGo->SetGoState(GO_STATE_ACTIVE);
-
- break;
- case GO_LOKEN_THRONE:
- m_uiLokenGlobeGUID = pGo->GetGUID();
- break;
- }
- }
+ SetBossNumber(MAX_ENCOUNTERS);
+ LoadDoorData(doorData);
+ LoadObjectData(nullptr, gameObjectData);
+ _volkhanAchievement = false;
+ _bjarngrimAchievement = false;
+ };
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
{
switch (criteria_id)
{
case 7321: //Shatter Resistant (2042)
- return volkhanAchievement;
+ return _volkhanAchievement;
case 6835: // Lightning Struck (1834)
- return bjarngrimAchievement;
+ return _bjarngrimAchievement;
}
return false;
}
void SetData(uint32 uiType, uint32 uiData) override
{
- m_auiEncounter[uiType] = uiData;
- if (uiType == TYPE_LOKEN_INTRO)
- SaveToDB();
-
// Achievements
if (uiType == DATA_BJARNGRIM_ACHIEVEMENT)
- bjarngrimAchievement = (bool)uiData;
+ _bjarngrimAchievement = (bool)uiData;
else if (uiType == DATA_VOLKHAN_ACHIEVEMENT)
- volkhanAchievement = (bool)uiData;
+ _volkhanAchievement = (bool)uiData;
+ }
- if (uiData != DONE)
- return;
+ private:
+ bool _volkhanAchievement;
+ bool _bjarngrimAchievement;
+ };
- switch (uiType)
- {
- case TYPE_BJARNGRIM:
- HandleGameObject(m_uiBjarngrimDoorGUID, true);
- break;
- case TYPE_VOLKHAN:
- HandleGameObject(m_uiVolkhanDoorGUID, true);
- break;
- case TYPE_IONAR:
- HandleGameObject(m_uiIonarDoorGUID, true);
- break;
- case TYPE_LOKEN:
- HandleGameObject(m_uiLokenDoorGUID, true);
- //Appears to be type 5 GO with animation. Need to figure out how this work, code below only placeholder
- if (GameObject* pGlobe = instance->GetGameObject(m_uiLokenGlobeGUID))
- pGlobe->SetGoState(GO_STATE_ACTIVE);
-
- break;
- }
+ InstanceScript* GetInstanceScript(InstanceMap* pMap) const override
+ {
+ return new instance_halls_of_lightning_InstanceMapScript(pMap);
+ }
+};
- SaveToDB();
- }
+enum TitaniumHallwaySpells
+{
+ SPELL_FREEZE_ANIM = 16245,
+ SPELL_AWAKEN = 52875,
+};
- void ReadSaveDataMore(std::istringstream& data) override
- {
- data >> m_auiEncounter[0];
- data >> m_auiEncounter[1];
- data >> m_auiEncounter[2];
- data >> m_auiEncounter[3];
- }
+class at_hol_hall_of_watchers : public OnlyOnceAreaTriggerScript
+{
+public:
+ at_hol_hall_of_watchers() : OnlyOnceAreaTriggerScript("at_hol_hall_of_watchers") {}
- void WriteSaveDataMore(std::ostringstream& data) override
+ bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override
+ {
+ std::list<Creature*> creatures;
+ player->GetCreatureListWithEntryInGrid(creatures, { NPC_TITANIUM_SIEGEBREAKER, NPC_TITANIUM_THUNDERER }, 50.0f);
+ creatures.remove_if([&](Creature const* creature) -> bool
{
- data << m_auiEncounter[0] << ' '
- << m_auiEncounter[1] << ' '
- << m_auiEncounter[2] << ' '
- << m_auiEncounter[3] << ' ';
- }
+ return !player->IsWithinLOSInMap(creature) || !creature->HasAura(SPELL_FREEZE_ANIM);
+ });
- uint32 GetData(uint32 uiType) const override
- {
- return m_auiEncounter[uiType];
- }
+ if (creatures.empty())
+ return false;
- ObjectGuid GetGuidData(uint32 uiData) const override
- {
- switch (uiData)
- {
- case TYPE_BJARNGRIM:
- return m_uiGeneralBjarngrimGUID;
- case TYPE_VOLKHAN:
- return m_uiVolkhanGUID;
- case TYPE_IONAR:
- return m_uiIonarGUID;
- case TYPE_LOKEN:
- return m_uiLokenGUID;
- }
+ Acore::Containers::RandomResize(creatures, urand(2, 4));
+
+ ObjectGuid target = player->GetGUID();
- return ObjectGuid::Empty;
+ for (Creature* creature : creatures)
+ {
+ creature->SetHomePosition(player->GetPosition());
+ creature->AI()->DoCastSelf(SPELL_AWAKEN);
+ creature->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+
+ creature->m_Events.AddEventAtOffset([creature, target] {
+ creature->AI()->DoAction(ACTION_ACTIVATE_TITANIUM_VRYKUL);
+ if (Player* targetPlayer = ObjectAccessor::GetPlayer(*creature, target))
+ creature->AI()->AttackStart(targetPlayer);
+ }, 5s);
}
- };
+
+ return false;
+ }
};
void AddSC_instance_halls_of_lightning()
{
new instance_halls_of_lightning();
+ new at_hol_hall_of_watchers();
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
index bc40837a70..f2a76412ce 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
@@ -24,16 +24,13 @@
enum spells
{
- GROUND_SPIKE_H = 59750,
- BOULDER_TOSS = 50843,
- BOULDER_TOSS_H = 59742,
- SHATTER = 50810,
- SHATTER_H = 61546,
- STOMP = 50868,
- STOMP_H = 59744,
- GROUND_SLAM = 50827,
- GROUND_SLAM_STONED_EFFECT = 50812,
- SPELL_SHATTER_EFFECT = 50811,
+ SPELL_GROUND_SPIKE = 59750,
+ SPELL_BOULDER_TOSS = 50843,
+ SPELL_SHATTER = 50810,
+ SPELL_STOMP = 50868,
+ SPELL_GROUND_SLAM = 50827,
+ SPELL_GROUND_SLAM_STONED_EFFECT = 50812,
+ SPELL_SHATTER_EFFECT = 50811,
};
enum events
@@ -105,7 +102,7 @@ public:
Map::PlayerList const& players = map->GetPlayers();
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (itr->GetSource()->IsAlive())
- itr->GetSource()->RemoveAura(GROUND_SLAM_STONED_EFFECT);
+ itr->GetSource()->RemoveAura(SPELL_GROUND_SLAM_STONED_EFFECT);
}
}
@@ -123,37 +120,38 @@ public:
{
case EVENT_BOULDER:
{
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
- me->CastSpell(target, DUNGEON_MODE(BOULDER_TOSS, BOULDER_TOSS_H), false);
-
+ DoCastRandomTarget(SPELL_BOULDER_TOSS, 0, 50.0f);
events.Repeat(5s, 7s);
break;
}
case EVENT_GROUND_SPIKE:
{
- me->CastSpell(me->GetVictim(), GROUND_SPIKE_H, false); // current enemy target
+ DoCastRandomTarget(SPELL_GROUND_SPIKE, 0, 50.0f);
events.Repeat(8s, 11s);
break;
}
case EVENT_STOMP:
{
- me->CastSpell(me, DUNGEON_MODE(STOMP, STOMP_H), false);
+ me->CastSpell(me, SPELL_STOMP, false);
events.Repeat(13s, 18s);
break;
}
case EVENT_GROUND_SLAM:
{
events.Repeat(10s, 13s);
- me->CastSpell(me->GetVictim(), GROUND_SLAM, true);
+ me->CastSpell(me->GetVictim(), SPELL_GROUND_SLAM, true);
+ me->SetReactState(REACT_PASSIVE);
+ me->AttackStop();
events.DelayEvents(10s);
events.RescheduleEvent(EVENT_SHATTER, 8s);
break;
}
case EVENT_SHATTER:
{
- me->CastSpell((Unit*)nullptr, DUNGEON_MODE(SHATTER, SHATTER_H), false);
+ me->CastSpell((Unit*)nullptr, SPELL_SHATTER, false);
Talk(SAY_SHATTER);
events.RescheduleEvent(EVENT_REMOVE_STONED, 1500ms);
+ me->SetReactState(REACT_AGGRESSIVE);
break;
}
case EVENT_REMOVE_STONED:
@@ -193,7 +191,7 @@ class spell_krystallus_shatter : public SpellScript
{
if (Unit* target = GetHitUnit())
{
- target->RemoveAurasDueToSpell(GROUND_SLAM_STONED_EFFECT);
+ target->RemoveAurasDueToSpell(SPELL_GROUND_SLAM_STONED_EFFECT);
target->CastSpell((Unit*)nullptr, SPELL_SHATTER_EFFECT, true);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
index 814daf759a..40bf8449d0 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
@@ -21,13 +21,10 @@
enum spells
{
- PARTING_SORROW = 59723,
- PILLAR_OF_WOE = 50761,
- PILLAR_OF_WOE_H = 59727,
- SHOCK_OF_SORROW = 50760,
- SHOCK_OF_SORROW_H = 59726,
- STORM_OF_GRIEF = 50752,
- STORM_OF_GRIEF_H = 59772,
+ SPELL_PARTING_SORROW = 59723,
+ SPELL_PILLAR_OF_WOE = 50761,
+ SPELL_SHOCK_OF_SORROW = 50760,
+ SPELL_STORM_OF_GRIEF = 50752,
ACHIEVEMENT_GOOD_GRIEF = 20383,
};
@@ -80,10 +77,11 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
- events.ScheduleEvent(EVENT_STORM, 5s);
- events.ScheduleEvent(EVENT_SHOCK, 26s, 32s);
- events.ScheduleEvent(EVENT_PILLAR, 12s, 20s);
- events.ScheduleEvent(EVENT_PARTING, 8s);
+ events.ScheduleEvent(EVENT_STORM, 6s, 10s);
+ events.ScheduleEvent(EVENT_SHOCK, 14s, 29s);
+ events.ScheduleEvent(EVENT_PILLAR, 7s, 15s);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_PARTING, 27s, 45s);
Talk(SAY_AGGRO);
if (pInstance)
@@ -107,32 +105,45 @@ public:
{
case EVENT_STORM:
{
- me->CastSpell(me->GetVictim(), DUNGEON_MODE(STORM_OF_GRIEF, STORM_OF_GRIEF_H), true);
- events.Repeat(10s);
+ me->CastSpell(me->GetVictim(), SPELL_STORM_OF_GRIEF, true);
+ events.Repeat(16s, 20s);
break;
}
case EVENT_SHOCK:
{
- me->CastSpell(me->GetVictim(), DUNGEON_MODE(SHOCK_OF_SORROW, SHOCK_OF_SORROW_H), false);
+ me->CastSpell(me->GetVictim(), SPELL_SHOCK_OF_SORROW, false);
Talk(SAY_STUN);
- events.Repeat(16s, 22s);
+ events.Repeat(19s, 33s);
break;
}
case EVENT_PILLAR:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
- me->CastSpell(target, DUNGEON_MODE(PILLAR_OF_WOE, PILLAR_OF_WOE_H), false);
+ me->CastSpell(target, SPELL_PILLAR_OF_WOE, false);
- events.Repeat(12s, 20s);
+ events.Repeat(8s, 31s);
break;
}
case EVENT_PARTING:
{
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
- me->CastSpell(target, PARTING_SORROW, false);
-
- events.Repeat(6s, 16s);
+ Unit* target = nullptr;
+ std::list<Unit*> targetList;
+
+ SelectTargetList(targetList, 10, SelectTargetMethod::Random, 0, 50.0f, true);
+ for (Unit* possibleTarget : targetList)
+ {
+ if (possibleTarget && possibleTarget->IsPlayer() && possibleTarget->getPowerType() == POWER_MANA)
+ {
+ target = possibleTarget;
+ break;
+ }
+ }
+
+ if (target)
+ me->CastSpell(target, SPELL_PARTING_SORROW, false);
+
+ events.Repeat(27s, 45s);
break;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index d51461f6a6..f5ceede61c 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -25,25 +25,18 @@ enum Spells
// SJONNIR
SPELL_FRENZY = 28747, //at 20% hp
SPELL_CHAIN_LIGHTNING = 50830,
- SPELL_CHAIN_LIGHTNING_H = 59844,
SPELL_LIGHTNING_SHIELD = 50831,
- SPELL_LIGHTNING_SHIELD_H = 59845,
SPELL_STATIC_CHARGE = 50834,
- SPELL_STATIC_CHARGE_H = 59846,
SPELL_LIGHTNING_RING = 50840,
- SPELL_LIGHTNING_RING_H = 59848,
// IRON SLUDGE
SPELL_TOXIC_VOLLEY = 50838,
- SPELL_TOXIC_VOLLEY_H = 59853,
// FORGED IRON DWARF
SPELL_LIGHTNING_TETHER = 50895,
- SPELL_LIGHTNING_TETHER_H = 59851,
// FORGED IRON TROGG
SPELL_LIGHTNING_SHOCK = 50900,
- SPELL_LIGHTNING_SHOCK_H = 59852,
};
enum Npc
@@ -241,14 +234,14 @@ public:
}
case EVENT_SHIELD:
{
- me->CastSpell(me, DUNGEON_MODE(SPELL_LIGHTNING_SHIELD, SPELL_LIGHTNING_SHIELD_H), false);
+ me->CastSpell(me, SPELL_LIGHTNING_SHIELD, false);
events.Repeat(14s, 19s);
break;
}
case EVENT_CHAIN_LIGHTNING:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
- me->CastSpell(target, DUNGEON_MODE(SPELL_CHAIN_LIGHTNING, SPELL_CHAIN_LIGHTNING_H), false);
+ me->CastSpell(target, SPELL_CHAIN_LIGHTNING, false);
events.Repeat(6s, 12s);
break;
@@ -256,14 +249,14 @@ public:
case EVENT_STATIC_CHARGE:
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
- me->CastSpell(target, DUNGEON_MODE(SPELL_STATIC_CHARGE, SPELL_STATIC_CHARGE_H), false);
+ me->CastSpell(target, SPELL_STATIC_CHARGE, false);
events.Repeat(20s);
break;
}
case EVENT_LIGHTNING_RING:
{
- me->CastSpell(me, DUNGEON_MODE(SPELL_LIGHTNING_RING, SPELL_LIGHTNING_RING_H), false);
+ me->CastSpell(me, SPELL_LIGHTNING_RING, false);
events.Repeat(25s, 31s);
events.DelayEvents(10s); // Channel duration
break;
@@ -399,7 +392,7 @@ public:
if (!UpdateVictim())
return;
- DoSpellAttackIfReady((me->GetEntry() == NPC_FORGED_IRON_DWARF) ? DUNGEON_MODE(SPELL_LIGHTNING_TETHER, SPELL_LIGHTNING_TETHER_H) : DUNGEON_MODE(SPELL_LIGHTNING_SHOCK, SPELL_LIGHTNING_SHOCK_H));
+ DoSpellAttackIfReady((me->GetEntry() == NPC_FORGED_IRON_DWARF) ? SPELL_LIGHTNING_TETHER : SPELL_LIGHTNING_SHOCK);
}
};
};
@@ -426,7 +419,7 @@ public:
void JustEngagedWith(Unit*) override
{
- events.ScheduleEvent(EVENT_TOXIC_VOLLEY, 5000);
+ events.ScheduleEvent(EVENT_TOXIC_VOLLEY, 5s);
}
void JustDied(Unit* /*killer*/) override
{
@@ -448,7 +441,7 @@ public:
// Every 5 seconds
case EVENT_TOXIC_VOLLEY:
{
- me->CastSpell(me, DUNGEON_MODE(SPELL_TOXIC_VOLLEY, SPELL_TOXIC_VOLLEY_H), false);
+ me->CastSpell(me, SPELL_TOXIC_VOLLEY, false);
events.Repeat(5s);
break;
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp
index 8202f673a7..e4305328f1 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp
@@ -48,13 +48,10 @@ enum Misc
{
// BRANN EVENT
SPELL_GLARE_OF_THE_TRIBUNAL = 50988,
- SPELL_GLARE_OF_THE_TRIBUNAL_H = 59870,
SPELL_DARK_MATTER_VISUAL = 51000,
SPELL_DARK_MATTER_VISUAL_CHANNEL= 51001,
SPELL_DARK_MATTER = 51012,
- SPELL_DARK_MATTER_H = 59868,
SPELL_SEARING_GAZE = 51136,
- SPELL_SEARING_GAZE_H = 59867,
// DARK RUNE PROTECTOR
SPELL_DRP_CHARGE = 22120,
@@ -62,14 +59,11 @@ enum Misc
// DARK RUNE STORMCALLER
SPELL_DRS_LIGHTING_BOLT = 12167,
- SPELL_DRS_LIGHTING_BOLT_H = 59863,
SPELL_DRS_SHADOW_WORD_PAIN = 15654,
- SPELL_DRS_SHADOW_WORD_PAIN_H = 59864,
// IRON GOLEM CUSTODIAN
SPELL_IGC_CRUSH_ARMOR = 33661,
SPELL_IGC_GROUND_SMASH = 12734,
- SPELL_IGC_GROUND_SMASH_H = 59865,
// QUESTS
QUEST_HALLS_OF_STONE = 13207,
@@ -391,11 +385,11 @@ public:
switch (action)
{
case ACTION_START_ESCORT_EVENT:
- Start(false, true, ObjectGuid::Empty, 0, true, false);
+ Start(false, ObjectGuid::Empty, 0, true, false);
Talk(SAY_BRANN_ESCORT_START);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
me->SetReactState(REACT_AGGRESSIVE);
- me->SetRegeneratingHealth(false);
+ me->SetRegeneratingHealth(true);
break;
case ACTION_START_TRIBUNAL:
{
@@ -443,8 +437,8 @@ public:
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
me->SetOrientation(3.132660f);
me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_YELL, 10000ms);
- events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_LAST_YELL, 22000ms);
+ events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_YELL, 10s);
+ events.ScheduleEvent(EVENT_SJONNIR_END_BRANN_LAST_YELL, 22s);
break;
case ACTION_SJONNIR_WIPE_START:
Reset();
@@ -456,7 +450,7 @@ public:
door->SetGoState(GO_STATE_READY);
break;
case ACTION_OPEN_DOOR:
- Start(false, true, ObjectGuid::Empty, 0, true, false);
+ Start(false, ObjectGuid::Empty, 0, true, false);
SetNextWaypoint(34, false);
SetEscortPaused(false);
me->RemoveAura(58506);
@@ -505,10 +499,10 @@ public:
if (Creature* kaddrak = GetKaddrak())
{
if (Player* plr = SelectTargetFromPlayerList(100.0f))
- kaddrak->CastSpell(plr, DUNGEON_MODE(SPELL_GLARE_OF_THE_TRIBUNAL, SPELL_GLARE_OF_THE_TRIBUNAL_H), true);
+ kaddrak->CastSpell(plr, SPELL_GLARE_OF_THE_TRIBUNAL, true);
}
- events.RescheduleEvent(EVENT_KADDRAK_SWITCH_EYE, 1000ms);
+ events.RescheduleEvent(EVENT_KADDRAK_SWITCH_EYE, 1s);
events.Repeat(1500ms);
break;
}
@@ -550,7 +544,7 @@ public:
darkMatterTargetGUID = cr->GetGUID();
- events.RescheduleEvent(EVENT_DARK_MATTER_START, 5000ms);
+ events.RescheduleEvent(EVENT_DARK_MATTER_START, 5s);
}
}
events.Repeat(30s);
@@ -571,11 +565,11 @@ public:
if (speed < tooFarAwaySpeed)
speed = tooFarAwaySpeed;
- darkMatterTarget->MonsterMoveWithSpeed(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), speed);
+ darkMatterTarget->GetMotionMaster()->MovePoint(0, plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), FORCED_MOVEMENT_NONE, speed);
if (darkMatterTarget->GetDistance(plr) < 15.0f)
{
- events.RescheduleEvent(EVENT_DARK_MATTER_END, 3000ms);
+ events.RescheduleEvent(EVENT_DARK_MATTER_END, 3s);
}
else if (darkMatterTarget->GetDistance(plr) < 30.0f)
{
@@ -593,8 +587,8 @@ public:
{
if (Creature* darkMatterTarget = ObjectAccessor::GetCreature(*me, darkMatterTargetGUID))
{
- darkMatterTarget->CastSpell(darkMatterTarget, darkMatterTarget->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true);
- darkMatterTarget->DespawnOrUnsummon(500);
+ darkMatterTarget->CastSpell(darkMatterTarget, SPELL_DARK_MATTER, true);
+ darkMatterTarget->DespawnOrUnsummon(500ms);
}
break;
}
@@ -612,7 +606,7 @@ public:
{
// summon another abedneum to create double beam, despawn just after trigger despawn
me->SummonCreature(NPC_ABEDNEUM, 897.0f, 326.9f, 223.5f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000);
- cr->CastSpell(cr, DUNGEON_MODE(SPELL_SEARING_GAZE, SPELL_SEARING_GAZE_H), true);
+ cr->CastSpell(cr, SPELL_SEARING_GAZE, true);
}
}
events.Repeat(15s);
@@ -622,15 +616,8 @@ public:
{
if (!canExecuteEvents)
return;
- uint32 Time = 40000 - (2500 * WaveNum);
SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3, 0);
- if (WaveNum > 2)
- events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, urand(10 - WaveNum, 15 - WaveNum) * 1000);
- if (WaveNum > 5)
- events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, urand(10 - WaveNum, 15 - WaveNum) * 1000);
-
- WaveNum++;
- events.RepeatEvent(Time);
+ events.Repeat(IsHeroic() ? 23500ms : 32500ms);
break;
}
case EVENT_SUMMON_STORMCALLER:
@@ -639,7 +626,7 @@ public:
return;
SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2, 1);
-
+ events.Repeat(IsHeroic() ? 32s : 41500ms);
break;
}
case EVENT_SUMMON_CUSTODIAN:
@@ -648,7 +635,7 @@ public:
return;
SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1, 1);
-
+ events.Repeat(IsHeroic() ? 32s : 45s);
break;
}
case EVENT_TRIBUNAL_END:
@@ -842,17 +829,14 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent()
Creature* cr = nullptr;
if ((cr = me->SummonCreature(NPC_KADDRAK, 923.7f, 326.9f, 219.5f, 2.1f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
{
- cr->SetInCombatWithZone();
KaddrakGUID = cr->GetGUID();
}
if ((cr = me->SummonCreature(NPC_MARNAK, 895.974f, 363.571f, 219.337f, 5.5f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
{
- cr->SetInCombatWithZone();
MarnakGUID = cr->GetGUID();
}
if ((cr = me->SummonCreature(NPC_ABEDNEUM, 892.25f, 331.25f, 223.86f, 0.6f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
{
- cr->SetInCombatWithZone();
AbedneumGUID = cr->GetGUID();
}
@@ -865,8 +849,9 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent()
events.ScheduleEvent(EVENT_MARNAK_VISUAL, 105s);
events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 207s);
- // Fight
- events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 47s);
+ events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 52s);
+ events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, 122s);
+ events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, 228s);
events.ScheduleEvent(EVENT_KADDRAK_HEAD, 47s);
events.ScheduleEvent(EVENT_MARNAK_HEAD, 115s);
events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 217s);
@@ -931,10 +916,10 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
SetEscortPaused(true);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_DOOR_OPEN, 1500);
+ events.ScheduleEvent(EVENT_DOOR_OPEN, 1500ms);
me->SetWalk(false);
me->SetSpeed(MOVE_RUN, 1.0f, false);
- events.ScheduleEvent(EVENT_RESUME_ESCORT, 3500);
+ events.ScheduleEvent(EVENT_RESUME_ESCORT, 3500ms);
break;
//Brann stops in front of Sjonnir and awaits the start of the battle.
case 36:
@@ -987,7 +972,6 @@ public:
void JustEngagedWith(Unit*) override
{
- events.ScheduleEvent(EVENT_DRP_CHARGE, 10s);
events.ScheduleEvent(EVENT_DRP_CLEAVE, 7s);
}
@@ -1002,14 +986,6 @@ public:
switch (events.ExecuteEvent())
{
- case EVENT_DRP_CHARGE:
- {
- if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(tgt, SPELL_DRP_CHARGE, false);
-
- events.Repeat(10s);
- break;
- }
case EVENT_DRP_CLEAVE:
{
me->CastSpell(me->GetVictim(), SPELL_DRP_CLEAVE, false);
@@ -1018,6 +994,14 @@ public:
}
}
+ if (Unit* victim = me->GetVictim())
+ {
+ if (!me->IsWithinMeleeRange(victim) && !me->HasUnitState(UNIT_STATE_CHARGING))
+ {
+ me->CastSpell(victim, SPELL_DRP_CHARGE, false);
+ }
+ }
+
DoMeleeAttackIfReady();
}
};
@@ -1062,13 +1046,13 @@ public:
{
case EVENT_DRS_LIGHTNING_BOLD:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_DRS_LIGHTING_BOLT_H : SPELL_DRS_LIGHTING_BOLT, false);
+ me->CastSpell(me->GetVictim(), SPELL_DRS_LIGHTING_BOLT, false);
events.Repeat(5s);
break;
}
case EVENT_DRS_SHADOW_WORD_PAIN:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_DRS_SHADOW_WORD_PAIN_H : SPELL_DRS_SHADOW_WORD_PAIN, false);
+ me->CastSpell(me->GetVictim(), SPELL_DRS_SHADOW_WORD_PAIN, false);
events.Repeat(12s);
break;
}
@@ -1101,7 +1085,7 @@ public:
void JustEngagedWith(Unit*) override
{
events.ScheduleEvent(EVENT_IGC_CRUSH, 6s);
- events.ScheduleEvent(EVENT_IGC_GROUND_SMASH, 4s);
+ events.ScheduleEvent(EVENT_IGC_GROUND_SMASH, 20s);
}
void UpdateAI(uint32 diff) override
{
@@ -1122,8 +1106,8 @@ public:
}
case EVENT_IGC_GROUND_SMASH:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_IGC_GROUND_SMASH_H : SPELL_IGC_GROUND_SMASH, false);
- events.Repeat(5s);
+ me->CastSpell(me->GetVictim(), SPELL_IGC_GROUND_SMASH, false);
+ events.Repeat(20s, 40s);
break;
}
}
@@ -1139,13 +1123,13 @@ class spell_hos_dark_matter : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return ValidateSpellInfo({ SPELL_DARK_MATTER_H, SPELL_DARK_MATTER });
+ return ValidateSpellInfo({ SPELL_DARK_MATTER });
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
- caster->CastSpell(caster, caster->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true);
+ caster->CastSpell(caster, SPELL_DARK_MATTER, true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
index 4a9e61ff3e..dd6cd84b8c 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
@@ -45,7 +45,6 @@ public:
ObjectGuid goSjonnirDoorGUID;
ObjectGuid goLeftPipeGUID;
ObjectGuid goRightPipeGUID;
- ObjectGuid goTribunalDoorGUID;
ObjectGuid SjonnirGUID;
ObjectGuid BrannGUID;
@@ -96,10 +95,6 @@ public:
case GO_TRIBUNAL_CONSOLE:
goTribunalConsoleGUID = go->GetGUID();
break;
- case GO_TRIBUNAL_ACCESS_DOOR:
- goTribunalDoorGUID = go->GetGUID();
- go->SetGoState(GO_STATE_READY);
- break;
case GO_SKY_FLOOR:
goSkyRoomFloorGUID = go->GetGUID();
if (Encounter[BOSS_TRIBUNAL_OF_AGES] == DONE)
@@ -141,8 +136,6 @@ public:
{
case GO_TRIBUNAL_CONSOLE:
return goTribunalConsoleGUID;
- case GO_TRIBUNAL_ACCESS_DOOR:
- return goTribunalDoorGUID;
case GO_SJONNIR_CONSOLE:
return goSjonnirConsoleGUID;
case GO_SJONNIR_DOOR:
@@ -208,10 +201,6 @@ public:
isKrystalusDead = type == BOSS_KRYSTALLUS || isKrystalusDead;
}
- if (isMaidenOfGriefDead && isKrystalusDead)
- if (GameObject* tribunalDoor = instance->GetGameObject(goTribunalDoorGUID))
- tribunalDoor->SetGoState(GO_STATE_ACTIVE);
-
if (type == BOSS_TRIBUNAL_OF_AGES && data == SPECIAL)
{
if (GameObject* pSkyRoomFloor = instance->GetGameObject(goSkyRoomFloorGUID))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index 9eec77e622..4d43d6f00c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -443,7 +443,7 @@ public:
if (me->IsInCombat())
events.ScheduleEvent(EVENT_DESPAWN_ALGALON_4, 26s);
events.ScheduleEvent(EVENT_DESPAWN_ALGALON_5, 32s);
- me->DespawnOrUnsummon(39000);
+ me->DespawnOrUnsummon(39s);
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
@@ -484,7 +484,7 @@ public:
return;
}
- uint32 introDelay = 0;
+ Milliseconds introDelay = 0ms;
me->setActive(true);
me->SetInCombatWithZone();
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
@@ -495,27 +495,27 @@ public:
if (!_firstPull)
{
events.ScheduleEvent(EVENT_START_COMBAT, 0ms);
- introDelay = 8000;
+ introDelay = 8s;
}
else
{
summons.DespawnEntry(NPC_AZEROTH);
_firstPull = false;
Talk(SAY_ALGALON_START_TIMER);
- introDelay = 22000;
+ introDelay = 22s;
events.ScheduleEvent(EVENT_START_COMBAT, 14s);
m_pInstance->SetData(DATA_DESPAWN_ALGALON, 0);
}
- events.ScheduleEvent(EVENT_REMOVE_UNNATTACKABLE, introDelay - 500);
+ events.ScheduleEvent(EVENT_REMOVE_UNNATTACKABLE, introDelay - 500ms);
events.ScheduleEvent(EVENT_INTRO_TIMER_DONE, introDelay);
- events.ScheduleEvent(EVENT_QUANTUM_STRIKE, 3500 + introDelay);
- events.ScheduleEvent(EVENT_PHASE_PUNCH, 15500 + introDelay);
- events.ScheduleEvent(EVENT_SUMMON_COLLAPSING_STAR, 16500 + introDelay);
- events.ScheduleEvent(EVENT_COSMIC_SMASH, 25000 + introDelay);
- events.ScheduleEvent(EVENT_ACTIVATE_LIVING_CONSTELLATION, 50500 + introDelay);
- events.ScheduleEvent(EVENT_BIG_BANG, 90000 + introDelay);
- events.ScheduleEvent(EVENT_ASCEND_TO_THE_HEAVENS, 360000 + introDelay);
+ events.ScheduleEvent(EVENT_QUANTUM_STRIKE, 3500ms + introDelay);
+ events.ScheduleEvent(EVENT_PHASE_PUNCH, 15500ms + introDelay);
+ events.ScheduleEvent(EVENT_SUMMON_COLLAPSING_STAR, 16500ms + introDelay);
+ events.ScheduleEvent(EVENT_COSMIC_SMASH, 25s + introDelay);
+ events.ScheduleEvent(EVENT_ACTIVATE_LIVING_CONSTELLATION, 50500ms + introDelay);
+ events.ScheduleEvent(EVENT_BIG_BANG, 90s + introDelay);
+ events.ScheduleEvent(EVENT_ASCEND_TO_THE_HEAVENS, 360s + introDelay);
events.ScheduleEvent(EVENT_CHECK_HERALD_ITEMS, 5s);
DoCheckHeraldOfTheTitans();
@@ -574,7 +574,7 @@ public:
summon->SetHomePosition(x, y, z, o);
summon->UpdatePosition(x, y, z, o, true);
summon->StopMovingOnCurrentPos();
- summon->m_Events.AddEvent(new CosmicSmashDamageEvent(summon), summon->m_Events.CalculateTime(4000));
+ summon->m_Events.AddEventAtOffset(new CosmicSmashDamageEvent(summon), 4s);
break;
}
case NPC_UNLEASHED_DARK_MATTER:
@@ -688,7 +688,7 @@ public:
break;
case EVENT_QUANTUM_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_QUANTUM_STRIKE, false);
- events.Repeat(3000ms, 4500ms);
+ events.Repeat(3s, 4500ms);
break;
case EVENT_PHASE_PUNCH:
me->CastSpell(me->GetVictim(), SPELL_PHASE_PUNCH, false);
@@ -795,7 +795,7 @@ public:
case EVENT_OUTRO_11:
me->SetStandState(UNIT_STAND_STATE_STAND);
me->CastSpell(me, SPELL_TELEPORT, false);
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
break;
case EVENT_DESPAWN_ALGALON_1:
Talk(SAY_ALGALON_DESPAWN_1);
@@ -812,7 +812,7 @@ public:
case EVENT_DESPAWN_ALGALON_5:
me->SetStandState(UNIT_STAND_STATE_STAND);
me->CastSpell(me, SPELL_TELEPORT, false);
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
break;
case EVENT_CHECK_HERALD_ITEMS:
if (!DoCheckHeraldOfTheTitans())
@@ -871,12 +871,12 @@ public:
if (movementType != POINT_MOTION_TYPE)
return;
- uint32 delay = 1;
+ Milliseconds delay = 1ms;
_currentPoint = pointId + 1;
switch (pointId)
{
case 2:
- delay = 8000;
+ delay = 8s;
me->SetWalk(true);
break;
case 6:
@@ -886,7 +886,7 @@ public:
events.ScheduleEvent(EVENT_SUMMON_ALGALON, 7500ms);
return;
case 10:
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
case POINT_BRANN_OUTRO:
case POINT_BRANN_OUTRO_END:
@@ -1010,7 +1010,7 @@ public:
break;
case ACTION_BIG_BANG:
events.SetPhase(PHASE_BIG_BANG);
- events.DelayEvents(9500);
+ events.DelayEvents(9500ms);
events.ScheduleEvent(EVENT_RESUME_UPDATING, 9500ms);
break;
}
@@ -1025,10 +1025,10 @@ public:
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_ID_SUPERMASSIVE_START);
caster->CastSpell((Unit*)nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
- caster->ToCreature()->DespawnOrUnsummon(1);
- me->DespawnOrUnsummon(1);
+ caster->ToCreature()->DespawnOrUnsummon(1ms);
+ me->DespawnOrUnsummon(1ms);
if (Creature* voidZone = caster->FindNearestCreature(NPC_ALGALON_VOID_ZONE_VISUAL_STALKER, 10.0f))
- voidZone->DespawnOrUnsummon(1);
+ voidZone->DespawnOrUnsummon(1ms);
}
void UpdateAI(uint32 diff) override
@@ -1146,7 +1146,7 @@ public:
_locked = true;
// Start Algalon event
me->SetGameObjectFlag(GO_FLAG_IN_USE);
- events.ScheduleEvent(EVENT_DESPAWN_CONSOLE, 5000ms);
+ events.ScheduleEvent(EVENT_DESPAWN_CONSOLE, 5s);
if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannIntroSpawnPos))
brann->AI()->DoAction(ACTION_START_INTRO);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
index c56188547b..0ef24cb14b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
@@ -31,55 +31,35 @@ enum AssemblySpells
SPELL_BERSERK = 47008,
// Steelbreaker
- SPELL_HIGH_VOLTAGE_10 = 61890,
- SPELL_HIGH_VOLTAGE_25 = 63498,
- SPELL_FUSION_PUNCH_10 = 61903,
- SPELL_FUSION_PUNCH_25 = 63493,
- SPELL_STATIC_DISRUPTION_10 = 61911,
- SPELL_STATIC_DISRUPTION_25 = 63495,
- SPELL_OVERWHELMING_POWER_10 = 64637,
- SPELL_OVERWHELMING_POWER_25 = 61888,
+ SPELL_HIGH_VOLTAGE = 61890,
+ SPELL_FUSION_PUNCH = 61903,
+ SPELL_STATIC_DISRUPTION = 61911,
+ SPELL_OVERWHELMING_POWER = 64637,
SPELL_ELECTRICAL_CHARGE = 61902,
// Runemaster Molgeim
SPELL_SHIELD_OF_RUNES_BUFF = 62277,
- SPELL_SHIELD_OF_RUNES_10 = 62274,
- SPELL_SHIELD_OF_RUNES_25 = 63489,
+ SPELL_SHIELD_OF_RUNES = 62274,
SPELL_RUNE_OF_POWER = 61973,
- SPELL_RUNE_OF_DEATH_10 = 62269,
- SPELL_RUNE_OF_DEATH_25 = 63490,
+ SPELL_RUNE_OF_DEATH = 62269,
SPELL_RUNE_OF_SUMMONING = 62273,
SPELL_RUNE_OF_SUMMONING_SUMMON = 62020,
- SPELL_LIGHTNING_BLAST_10 = 62054,
- SPELL_LIGHTNING_BLAST_25 = 63491,
+ SPELL_LIGHTNING_BLAST = 62054,
CREATURE_LIGHTNING_ELEMENTAL = 32958,
CREATURE_RUNE_OF_SUMMONING = 33051,
SPELL_RUNE_OF_POWER_OOC_CHANNEL = 61975,
// Stormcaller Brundir
- SPELL_CHAIN_LIGHTNING_10 = 61879,
- SPELL_CHAIN_LIGHTNING_25 = 63479,
- SPELL_OVERLOAD_10 = 61869,
- SPELL_OVERLOAD_25 = 63481,
- SPELL_LIGHTNING_WHIRL_10 = 61915,
- SPELL_LIGHTNING_WHIRL_25 = 63483,
- SPELL_LIGHTNING_TENDRILS_10 = 61887,
- SPELL_LIGHTNING_TENDRILS_25 = 63486,
+ SPELL_CHAIN_LIGHTNING = 61879,
+ SPELL_OVERLOAD = 61869,
+ SPELL_LIGHTNING_WHIRL = 61915,
+ SPELL_LIGHTNING_WHIRL_TRIGG = 61916,
+ SPELL_LIGHTNING_TENDRILS = 61887,
+ SPELL_LIGHTNING_TENDRILS_2 = 61883,
SPELL_STORMSHIELD = 64187,
SPELL_LIGHTNING_CHANNEL_PRE = 61942,
-};
-#define SPELL_HIGH_VOLTAGE RAID_MODE(SPELL_HIGH_VOLTAGE_10, SPELL_HIGH_VOLTAGE_25)
-#define SPELL_FUSION_PUNCH RAID_MODE(SPELL_FUSION_PUNCH_10, SPELL_FUSION_PUNCH_25)
-#define SPELL_STATIC_DISRUPTION RAID_MODE(SPELL_STATIC_DISRUPTION_10, SPELL_STATIC_DISRUPTION_25)
-#define SPELL_OVERWHELMING_POWER RAID_MODE(SPELL_OVERWHELMING_POWER_10, SPELL_OVERWHELMING_POWER_25)
-#define SPELL_SHIELD_OF_RUNES RAID_MODE(SPELL_SHIELD_OF_RUNES_10, SPELL_SHIELD_OF_RUNES_25)
-#define SPELL_RUNE_OF_DEATH RAID_MODE(SPELL_RUNE_OF_DEATH_10, SPELL_RUNE_OF_DEATH_25)
-#define SPELL_LIGHTNING_BLAST RAID_MODE(SPELL_LIGHTNING_BLAST_10, SPELL_LIGHTNING_BLAST_25)
-#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25)
-#define SPELL_OVERLOAD RAID_MODE(SPELL_OVERLOAD_10, SPELL_OVERLOAD_25)
-#define SPELL_LIGHTNING_WHIRL RAID_MODE(SPELL_LIGHTNING_WHIRL_10, SPELL_LIGHTNING_WHIRL_25)
-#define SPELL_LIGHTNING_TENDRILS RAID_MODE(SPELL_LIGHTNING_TENDRILS_10, SPELL_LIGHTNING_TENDRILS_25)
+};
enum eEnums
{
@@ -355,7 +335,7 @@ public:
case EVENT_OVERWHELMING_POWER:
Talk(SAY_STEELBREAKER_POWER);
me->CastSpell(me->GetVictim(), SPELL_OVERWHELMING_POWER, true);
- events.RepeatEvent(RAID_MODE(61000, 36000));
+ events.Repeat(RAID_MODE(61s, 36s));
break;
case EVENT_ENRAGE:
Talk(SAY_STEELBREAKER_BERSERK);
@@ -418,7 +398,7 @@ public:
if (pInstance)
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
- me->m_Events.AddEvent(new CastRunesEvent(*me), me->m_Events.CalculateTime(8000));
+ me->m_Events.AddEventAtOffset(new CastRunesEvent(*me), 8s);
}
void JustReachedHome() override
@@ -579,7 +559,7 @@ public:
if (Player* target = SelectTargetFromPlayerList(150))
me->GetMotionMaster()->MoveFollow(target, 0.0f, 0.0f);
else
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void MovementInform(uint32 type, uint32 /*id*/) override
@@ -588,7 +568,7 @@ public:
{
_boomed = true;
me->CastSpell(me, SPELL_LIGHTNING_BLAST, true);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
};
@@ -720,7 +700,7 @@ public:
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spellInfo) override
{
- if (spellInfo->Id == SPELL_CHAIN_LIGHTNING || spellInfo->Id == uint32(RAID_MODE(61916, 63482))) // Lightning Whirl triggered
+ if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_CHAIN_LIGHTNING, me) || spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_WHIRL_TRIGG, me))
_stunnedAchievement = false;
}
@@ -797,7 +777,7 @@ public:
me->SetUnitFlag(UNIT_FLAG_STUNNED);
me->CastSpell(me, SPELL_LIGHTNING_TENDRILS, true);
- me->CastSpell(me, 61883, true);
+ me->CastSpell(me, SPELL_LIGHTNING_TENDRILS_2, true);
events.ScheduleEvent(EVENT_LIGHTNING_LAND, 16s);
events.ScheduleEvent(EVENT_LIGHTNING_FLIGHT, 1s);
break;
@@ -805,7 +785,7 @@ public:
case EVENT_LIGHTNING_LAND:
{
float speed = me->GetDistance(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()) / (1000.0f * 0.001f);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), speed);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), FORCED_MOVEMENT_NONE, speed);
events.ScheduleEvent(EVENT_LAND_LAND, 1s);
break;
}
@@ -821,8 +801,8 @@ public:
me->SetRegeneratingHealth(true);
_flyTargetGUID.Clear();
- me->RemoveAura(SPELL_LIGHTNING_TENDRILS);
- me->RemoveAura(61883);
+ me->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_TENDRILS, me));
+ me->RemoveAura(SPELL_LIGHTNING_TENDRILS_2);
DoResetThreatList();
events.CancelEvent(EVENT_LIGHTNING_FLIGHT);
break;
@@ -902,7 +882,7 @@ class spell_assembly_rune_of_summoning_aura : public AuraScript
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (TempSummon* summ = GetTarget()->ToTempSummon())
- summ->DespawnOrUnsummon(1);
+ summ->DespawnOrUnsummon(1ms);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index 1011167987..587e591258 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -28,40 +28,25 @@ enum AuriayaSpells
{
// BASIC
SPELL_TERRIFYING_SCREECH = 64386,
- SPELL_SENTINEL_BLAST_10 = 64389,
- SPELL_SENTINEL_BLAST_25 = 64678,
- SPELL_SONIC_SCREECH_10 = 64422,
- SPELL_SONIC_SCREECH_25 = 64688,
+ SPELL_SENTINEL_BLAST = 64389,
+ SPELL_SONIC_SCREECH = 64422,
SPELL_GUARDIAN_SWARM = 64396,
SPELL_ENRAGE = 47008,
SPELL_ACTIVATE_FERAL_DEFENDER = 64449,
// Sanctum Sentry
- SPELL_SAVAGE_POUNCE_10 = 64666,
- SPELL_SAVAGE_POUNCE_25 = 64374,
- SPELL_RIP_FLESH_10 = 64375,
- SPELL_RIP_FLESH_25 = 64667,
+ SPELL_SAVAGE_POUNCE = 64666,
+ SPELL_RIP_FLESH = 64375,
SPELL_STRENGTH_OF_THE_PACK = 64369,
// Feral Defender
SPELL_FERAL_ESSENCE = 64455,
- SPELL_FERAL_POUNCE_10 = 64478,
- SPELL_FERAL_POUNCE_25 = 64669,
- SPELL_FERAL_RUSH_10 = 64496,
- SPELL_FERAL_RUSH_25 = 64674,
+ SPELL_FERAL_POUNCE = 64478,
+ SPELL_FERAL_RUSH = 64496,
//SPELL_SEEPING_FERAL_ESSENCE_SUMMON = 64457,
- SPELL_SEEPING_FERAL_ESSENCE_10 = 64458,
- SPELL_SEEPING_FERAL_ESSENCE_25 = 64676,
+ SPELL_SEEPING_FERAL_ESSENCE = 64458,
};
-#define SPELL_SONIC_SCREECH RAID_MODE(SPELL_SONIC_SCREECH_10, SPELL_SONIC_SCREECH_25)
-#define SPELL_SENTINEL_BLAST RAID_MODE(SPELL_SENTINEL_BLAST_10, SPELL_SENTINEL_BLAST_25)
-#define SPELL_SAVAGE_POUNCE RAID_MODE(SPELL_SAVAGE_POUNCE_10, SPELL_SAVAGE_POUNCE_25)
-#define SPELL_RIP_FLESH RAID_MODE(SPELL_RIP_FLESH_10, SPELL_RIP_FLESH_25)
-#define SPELL_FERAL_POUNCE RAID_MODE(SPELL_FERAL_POUNCE_10, SPELL_FERAL_POUNCE_25)
-#define SPELL_FERAL_RUSH RAID_MODE(SPELL_FERAL_RUSH_10, SPELL_FERAL_RUSH_25)
-//#define SPELL_SEEPING_FERAL_ESSENCE RAID_MODE(SPELL_SEEPING_FERAL_ESSENCE_10, SPELL_SEEPING_FERAL_ESSENCE_25)
-
enum AuriayaNPC
{
NPC_FERAL_DEFENDER = 34035,
@@ -255,7 +240,7 @@ public:
case EVENT_SENTINEL_BLAST:
me->CastSpell(me, SPELL_SENTINEL_BLAST, false);
events.Repeat(35s);
- events.DelayEvents(5000, 0);
+ events.DelayEvents(5s, 0);
break;
case EVENT_RESPAWN_FERAL_DEFENDER:
{
@@ -393,7 +378,7 @@ public:
else
{
summons.DespawnAll();
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
if (_feralEssenceStack)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index 77d1053fce..46f8e0bc40 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -381,8 +381,7 @@ public:
{
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
TurnGates(true, false);
- me->MonsterMoveWithSpeed(homePos.GetPositionX(), homePos.GetPositionY(), homePos.GetPositionZ(), 100.0f);
- me->UpdatePosition(homePos);
+ me->GetMotionMaster()->MovePoint(0, homePos.GetPositionX(), homePos.GetPositionY(), homePos.GetPositionZ(), FORCED_MOVEMENT_NONE, 100.0f);
_speakTimer = 60000;
}
else if (_speakTimer > 63500)
@@ -748,7 +747,7 @@ public:
_despawnTimer = 0;
if (Vehicle* veh = me->GetVehicle())
if (veh->GetPassenger(0) == me || veh->GetPassenger(1) == me)
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
@@ -1090,7 +1089,8 @@ public:
{
summons.DespawnAll();
_spellTimer = 0;
- Start(false, false, ObjectGuid::Empty, nullptr, false, true);
+ me->SetWalk(true);
+ Start(false, ObjectGuid::Empty, nullptr, false, true);
if (Aura* aur = me->AddAura(SPELL_FREYA_DUMMY_YELLOW, me))
{
aur->SetMaxDuration(-1);
@@ -1157,7 +1157,7 @@ public:
_beamTimer = 0;
_removeTimer = 1;
- me->DespawnOrUnsummon(5 * IN_MILLISECONDS);
+ me->DespawnOrUnsummon(5s);
}
}
if (_removeTimer)
@@ -1364,7 +1364,7 @@ public:
liquid->CastSpell(liquid, SPELL_DUST_CLOUD_IMPACT, true);
}
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
@@ -1416,7 +1416,7 @@ public:
_startTimer -= diff;
if (_startTimer <= 0)
{
- me->GetMotionMaster()->MovePath(3000000 + urand(0, 11), true);
+ me->GetMotionMaster()->MoveWaypoint(3000000 + urand(0, 11), true);
_startTimer = 0;
}
}
@@ -1750,7 +1750,7 @@ class spell_vehicle_grab_pyrite : public SpellScript
target->CastSpell(seat, GetEffectValue());
if (target->IsCreature())
- target->ToCreature()->DespawnOrUnsummon(1300);
+ target->ToCreature()->DespawnOrUnsummon(1300ms);
}
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index df194ce325..4b21752910 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -29,31 +29,23 @@ enum FreyaSpells
SPELL_AUTO_GROW = 62559,
SPELL_LIFEBINDER_PHERONOMES = 62619,
SPELL_LIFEBINDER_VISUAL = 62579,
- SPELL_LIFEBINDER_HEAL_10 = 62584,
- SPELL_LIFEBINDER_HEAL_25 = 64185,
+ SPELL_LIFEBINDER_HEAL = 62584,
// FREYA
- SPELL_TOUCH_OF_EONAR_10 = 62528,
- SPELL_TOUCH_OF_EONAR_25 = 62892,
+ SPELL_TOUCH_OF_EONAR = 62528,
SPELL_ATTUNED_TO_NATURE = 62519,
SPELL_SUMMON_LIFEBINDER = 62870,
- SPELL_SUNBEAM_10 = 62623,
- SPELL_SUNBEAM_25 = 62872,
+ SPELL_SUNBEAM = 62623,
SPELL_NATURE_BOMB_FLIGHT = 64648,
- SPELL_NATURE_BOMB_DAMAGE_10 = 64587,
- SPELL_NATURE_BOMB_DAMAGE_25 = 64650,
+ SPELL_NATURE_BOMB_DAMAGE = 64587,
SPELL_GREEN_BANISH_STATE = 32567,
SPELL_BERSERK = 47008,
// HARD MODE
- SPELL_GROUND_TREMOR_FREYA_10 = 62437,
- SPELL_GROUND_TREMOR_FREYA_25 = 62859,
- SPELL_IRON_ROOTS_FREYA_10 = 62862,
- SPELL_IRON_ROOTS_FREYA_25 = 62439,
- SPELL_IRON_ROOTS_FREYA_DAMAGE_10 = 62861,
- SPELL_IRON_ROOTS_FREYA_DAMAGE_25 = 62438,
- SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10 = 62451,
- SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25 = 62865,
+ SPELL_GROUND_TREMOR_FREYA = 62437,
+ SPELL_IRON_ROOTS_FREYA = 62862,
+ SPELL_IRON_ROOTS_FREYA_DAMAGE = 62861,
+ SPELL_UNSTABLE_SUN_FREYA_DAMAGE = 62451,
SPELL_UNSTABLE_SUN_VISUAL = 62216,
// ELDERS
@@ -64,86 +56,49 @@ enum FreyaSpells
// BRIGHTLEAF
SPELL_BRIGHTLEAF_FLUX = 62239,
- SPELL_SOLAR_FLARE_10 = 62240,
- SPELL_SOLAR_FLARE_25 = 64087,
+ SPELL_SOLAR_FLARE = 62240,
SPELL_UNSTABLE_SUN_BEAM_AURA = 62211,
SPELL_PHOTOSYNTHESIS = 62209,
- SPELL_UNSTABLE_SUN_DAMAGE_10 = 62217,
- SPELL_UNSTABLE_SUN_DAMAGE_25 = 62922,
+ SPELL_UNSTABLE_SUN_DAMAGE = 62217,
// IRONBRANCH
- SPELL_IMPALE_10 = 62310,
- SPELL_IMPALE_25 = 62928,
- SPELL_IRON_ROOTS_10 = 62275,
- SPELL_IRON_ROOTS_25 = 62929,
- SPELL_IRON_ROOTS_DAMAGE_10 = 62283,
- SPELL_IRON_ROOTS_DAMAGE_25 = 62930,
- SPELL_THORN_SWARM_10 = 62285,
- SPELL_THORN_SWARM_25 = 62931,
+ SPELL_IMPALE = 62310,
+ SPELL_IRON_ROOTS = 62275,
+ SPELL_IRON_ROOTS_DAMAGE = 62283,
+ SPELL_THORN_SWARM = 62285,
// STONEBARK
SPELL_FISTS_OF_STONE = 62344,
- SPELL_GROUND_TREMOR_10 = 62325,
- SPELL_GROUND_TREMOR_25 = 62932,
- SPELL_PETRIFIED_BARK_10 = 62337,
- SPELL_PETRIFIED_BARK_25 = 62933,
+ SPELL_GROUND_TREMOR = 62325,
+ SPELL_PETRIFIED_BARK = 62337,
// SNAPLASHER
- SPELL_HARDENED_BARK_10 = 62664,
- SPELL_HARDENED_BARK_25 = 64191,
+ SPELL_HARDENED_BARK = 62664,
// ANCIENT WATER SPIRIT
- SPELL_TIDAL_WAVE_10 = 62653,
- SPELL_TIDAL_WAVE_25 = 62935,
- SPELL_TIDAL_WAVE_DAMAGE_10 = 62654,
- SPELL_TIDAL_WAVE_DAMAGE_25 = 62936,
+ SPELL_TIDAL_WAVE = 62653,
+ SPELL_TIDAL_WAVE_DAMAGE = 62654,
SPELL_TIDAL_WAVE_AURA = 62655,
// STORM LASHER
- SPELL_LIGHTNING_LASH_10 = 62648,
- SPELL_LIGHTNING_LASH_25 = 62939,
- SPELL_STORMBOLT_10 = 62649,
- SPELL_STORMBOLT_25 = 62938,
+ SPELL_LIGHTNING_LASH = 62648,
+ SPELL_STORMBOLT = 62649,
// ANCIENT CONSERVATOR
SPELL_CONSERVATOR_GRIP = 62532,
- SPELL_NATURE_FURY_10 = 62589,
- SPELL_NATURE_FURY_25 = 63571,
+ SPELL_NATURE_FURY = 62589,
SPELL_POTENT_PHEROMONES = 62541,
SPELL_HEALTHY_SPORE_VISUAL = 62538,
SPELL_HEALTHY_SPORE_SUMMON = 62566,
// DETONATING LASHER
- SPELL_DETONATE_10 = 62598,
- SPELL_DETONATE_25 = 62937,
+ SPELL_DETONATE = 62598,
SPELL_FLAME_LASH = 62608,
// ACHIEVEMENT
SPELL_DEFORESTATION_CREDIT = 65015,
};
-#define SPELL_GROUND_TREMOR RAID_MODE(SPELL_GROUND_TREMOR_10, SPELL_GROUND_TREMOR_25)
-#define SPELL_PETRIFIED_BARK RAID_MODE(SPELL_PETRIFIED_BARK_10, SPELL_PETRIFIED_BARK_25)
-#define SPELL_IRON_ROOTS RAID_MODE(SPELL_IRON_ROOTS_10, SPELL_IRON_ROOTS_25)
-#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)
-#define SPELL_THORN_SWARM RAID_MODE(SPELL_THORN_SWARM_10, SPELL_THORN_SWARM_25)
-#define SPELL_UNSTABLE_SUN_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_DAMAGE_10, SPELL_UNSTABLE_SUN_DAMAGE_25)
-#define SPELL_SOLAR_FLARE RAID_MODE(SPELL_SOLAR_FLARE_10, SPELL_SOLAR_FLARE_25)
-#define SPELL_TOUCH_OF_EONAR RAID_MODE(SPELL_TOUCH_OF_EONAR_10, SPELL_TOUCH_OF_EONAR_25)
-#define SPELL_LIFEBINDER_HEAL RAID_MODE(SPELL_LIFEBINDER_HEAL_10, SPELL_LIFEBINDER_HEAL_25)
-#define SPELL_TIDAL_WAVE RAID_MODE(SPELL_TIDAL_WAVE_10, SPELL_TIDAL_WAVE_25)
-#define SPELL_TIDAL_WAVE_DAMAGE RAID_MODE(SPELL_TIDAL_WAVE_DAMAGE_10, SPELL_TIDAL_WAVE_DAMAGE_25)
-#define SPELL_NATURE_FURY RAID_MODE(SPELL_NATURE_FURY_10, SPELL_NATURE_FURY_25)
-#define SPELL_HARDENED_BARK RAID_MODE(SPELL_HARDENED_BARK_10, SPELL_HARDENED_BARK_25)
-#define SPELL_DETONATE RAID_MODE(SPELL_DETONATE_10, SPELL_DETONATE_25)
-//#define SPELL_NATURE_BOMB_DAMAGE RAID_MODE(SPELL_NATURE_BOMB_DAMAGE_10, SPELL_NATURE_BOMB_DAMAGE_25)
-#define SPELL_SUNBEAM RAID_MODE(SPELL_SUNBEAM_10, SPELL_SUNBEAM_25)
-#define SPELL_GROUND_TREMOR_FREYA RAID_MODE(SPELL_GROUND_TREMOR_FREYA_10, SPELL_GROUND_TREMOR_FREYA_25)
-#define SPELL_IRON_ROOTS_FREYA RAID_MODE(SPELL_IRON_ROOTS_FREYA_10, SPELL_IRON_ROOTS_FREYA_25)
-#define SPELL_UNSTABLE_SUN_FREYA_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10, SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25)
-#define SPELL_LIGHTNING_LASH RAID_MODE(SPELL_LIGHTNING_LASH_10, SPELL_LIGHTNING_LASH_25)
-#define SPELL_STORMBOLT RAID_MODE(SPELL_STORMBOLT_10, SPELL_STORMBOLT_25)
-
enum FreyaEvents
{
// FREYA
@@ -983,9 +938,9 @@ public:
if (Unit* target = ObjectAccessor::GetUnit(*me, me->ToTempSummon()->GetSummonerGUID()))
{
if (me->GetEntry() == NPC_IRON_ROOT_TRIGGER) // Iron Branch spell
- target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_DAMAGE_25 : SPELL_IRON_ROOTS_DAMAGE_10);
+ target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_DAMAGE, me));
else
- target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_FREYA_DAMAGE_25 : SPELL_IRON_ROOTS_FREYA_DAMAGE_10);
+ target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_FREYA_DAMAGE, me));
}
}
};
@@ -1023,8 +978,8 @@ public:
if (_healTimer >= 12000)
{
me->RemoveAurasDueToSpell(SPELL_AUTO_GROW);
- me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_LIFEBINDER_HEAL_25 : SPELL_LIFEBINDER_HEAL_10, true);
- me->DespawnOrUnsummon(2000);
+ me->CastSpell(me, SPELL_LIFEBINDER_HEAL, true);
+ me->DespawnOrUnsummon(2s);
_healTimer = 0;
}
}
@@ -1063,7 +1018,7 @@ public:
if (_despawnTimer >= 22000)
{
me->RemoveAurasDueToSpell(SPELL_AUTO_GROW);
- me->DespawnOrUnsummon(2200);
+ me->DespawnOrUnsummon(2200ms);
_despawnTimer = 0;
}
}
@@ -1203,7 +1158,7 @@ public:
if (Unit* target = SelectTargetFromPlayerList(80))
AttackStart(target);
else
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
events.Repeat(10s);
break;
}
@@ -1249,8 +1204,8 @@ public:
_explodeTimer += diff;
if (_explodeTimer >= 11000)
{
- me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_NATURE_BOMB_DAMAGE_25 : SPELL_NATURE_BOMB_DAMAGE_10, false);
- me->DespawnOrUnsummon(1000);
+ me->CastSpell(me, SPELL_NATURE_BOMB_DAMAGE, false);
+ me->DespawnOrUnsummon(1s);
_explodeTimer = 0;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index a4351a818e..cb7d6c5004 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -266,7 +266,7 @@ public:
Talk(SAY_EMOTE_SURGE_OF_DARKNESS);
me->CastSpell(me, SPELL_SURGE_OF_DARKNESS, false);
events.Repeat(63s);
- events.DelayEvents(10000, 1);
+ events.DelayEvents(10s, 1);
break;
case EVENT_SPELL_MARK_OF_THE_FACELESS:
{
@@ -312,8 +312,8 @@ public:
sv->GetMotionMaster()->MoveCharge(1852.78f, 81.38f, 342.461f, 28.0f);
}
- events.DelayEvents(12000, 0);
- events.DelayEvents(12000, 1);
+ events.DelayEvents(12s, 0);
+ events.DelayEvents(12s, 1);
events.ScheduleEvent(EVENT_SARONITE_VAPORS_SWIRL, 6s);
}
}
@@ -450,7 +450,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
if (pInstance)
if (Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_VEZAX)))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index b318a09207..6f037c289d 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -58,8 +58,7 @@ enum HodirSpellData
SPELL_ICE_SHARDS_BIG = 65370,
SPELL_SNOWDRIFT = 62463,
- SPELL_FROZEN_BLOWS_10 = 62478,
- SPELL_FROZEN_BLOWS_25 = 63512,
+ SPELL_FROZEN_BLOWS = 62478,
// Helpers:
SPELL_PRIEST_DISPELL_MAGIC = 63499,
@@ -70,9 +69,8 @@ enum HodirSpellData
SPELL_DRUID_STARLIGHT_AREA_AURA = 62807,
SPELL_SHAMAN_LAVA_BURST = 61924,
- SPELL_SHAMAN_STORM_CLOUD_10 = 65123,
- SPELL_SHAMAN_STORM_CLOUD_25 = 65133,
- SPELL_SHAMAN_STORM_POWER_10 = 63711,
+ SPELL_SHAMAN_STORM_CLOUD = 65123,
+ SPELL_SHAMAN_STORM_POWER = 63711,
SPELL_SHAMAN_STORM_POWER_25 = 65134,
SPELL_MAGE_FIREBALL = 61909,
@@ -153,9 +151,6 @@ enum HodirText
TEXT_EMOTE_BLOW = 8,
};
-#define SPELL_FROZEN_BLOWS RAID_MODE(SPELL_FROZEN_BLOWS_10, SPELL_FROZEN_BLOWS_25)
-#define SPELL_SHAMAN_STORM_CLOUD RAID_MODE(SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_CLOUD_25)
-
enum HodirSounds
{
SOUND_HODIR_AGGRO = 15552,
@@ -483,7 +478,7 @@ public:
{
Talk(TEXT_EMOTE_BLOW);
Talk(TEXT_STALACTITE);
- me->CastSpell(me, Is25ManRaid()? SPELL_FROZEN_BLOWS_25 : SPELL_FROZEN_BLOWS_10, true);
+ me->CastSpell(me, SPELL_FROZEN_BLOWS, true);
}
break;
case EVENT_FREEZE:
@@ -704,18 +699,18 @@ public:
if (Unit* s = me->ToTempSummon()->GetSummonerUnit())
{
if ((s->IsPlayer() && !s->HasAura(SPELL_FLASH_FREEZE_TRAPPED_PLAYER)) || (s->IsCreature() && !s->HasAura(SPELL_FLASH_FREEZE_TRAPPED_NPC)))
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
else if (s->IsPlayer())
if (InstanceScript* instanceScript = me->GetInstanceScript())
if (instanceScript->GetData(TYPE_HODIR) == NOT_STARTED)
{
s->CastSpell(s, SPELL_FLASH_FREEZE_INSTAKILL, true);
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
}
}
else
{
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
}
}
}
@@ -1008,8 +1003,9 @@ public:
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
- if (target && spell->Id == SPELL_SHAMAN_STORM_CLOUD)
- if (Aura* a = target->GetAura(SPELL_SHAMAN_STORM_CLOUD, me->GetGUID()))
+ uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me);
+ if (target && spell->Id == spellid)
+ if (Aura* a = target->GetAura(spellid, me->GetGUID()))
a->SetStackAmount(spell->StackAmount);
}
@@ -1044,10 +1040,13 @@ public:
events.Repeat(2600ms);
break;
case EVENT_SHAMAN_STORM_CLOUD:
- if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, SPELL_SHAMAN_STORM_CLOUD))
- me->CastSpell(target, SPELL_SHAMAN_STORM_CLOUD, false);
- events.Repeat(30s);
- break;
+ {
+ uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me);
+ if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, spellid))
+ me->CastSpell(target, spellid, false);
+ events.Repeat(30s);
+ break;
+ }
}
}
@@ -1403,7 +1402,7 @@ class spell_hodir_storm_power_aura : public AuraScript
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
- if (Aura* a = caster->GetAura(GetId() == SPELL_SHAMAN_STORM_POWER_10 ? SPELL_SHAMAN_STORM_CLOUD_10 : SPELL_SHAMAN_STORM_CLOUD_25))
+ if (Aura* a = caster->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, caster)))
a->ModStackAmount(-1);
}
@@ -1427,14 +1426,14 @@ class spell_hodir_storm_cloud_aura : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return ValidateSpellInfo({ SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_POWER_10, SPELL_SHAMAN_STORM_POWER_25 });
+ return ValidateSpellInfo({ SPELL_SHAMAN_STORM_POWER });
}
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
{
PreventDefaultAction();
if (Unit* target = GetTarget())
- target->CastSpell((Unit*)nullptr, (GetId() == SPELL_SHAMAN_STORM_CLOUD_10 ? SPELL_SHAMAN_STORM_POWER_10 : SPELL_SHAMAN_STORM_POWER_25), true);
+ target->CastSpell((Unit*)nullptr, (sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_POWER, GetCaster())), true);
}
void Register() override
@@ -1528,7 +1527,7 @@ public:
bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override
{
- return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER_10);
+ return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER);
}
};
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index cda5a3629c..9b6b35b114 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -26,37 +26,33 @@
#include "SpellScriptLoader.h"
#include "ulduar.h"
-#define SPELL_FLAME_JETS_10 62680
-#define SPELL_FLAME_JETS_25 63472
-#define S_FLAME_JETS RAID_MODE(SPELL_FLAME_JETS_10, SPELL_FLAME_JETS_25)
-#define SPELL_SCORCH_10 62546
-#define SPELL_SCORCH_25 63474
-#define S_SCORCH RAID_MODE(SPELL_SCORCH_10, SPELL_SCORCH_25)
-#define SPELL_ACTIVATE_CONSTRUCT 62488
-#define SPELL_STRENGTH_OF_THE_CREATOR 64473
-#define SPELL_SLAG_POT_10 62717
-#define SPELL_SLAG_POT_25 63477
-#define S_SLAG_POT RAID_MODE(SPELL_SLAG_POT_10, SPELL_SLAG_POT_25)
-#define SPELL_BERSERK 64238
-#define SPELL_GRAB 62707
-#define SPELL_GRAB_TRIGGERED 62708
-#define SPELL_GRAB_CONTROL_2 62711
-
-#define SPELL_SCORCHED_GROUND_10 62548
-#define SPELL_SCORCHED_GROUND_25 63476
-#define S_SCORCHED_GROUND RAID_MODE(SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25)
-#define SPELL_HEAT_AREA 62343
-#define SPELL_HEAT_BUFF 65667
-#define SPELL_MOLTEN 62373
-#define SPELL_BRITTLE_10 62382
-#define SPELL_BRITTLE_25 67114
-#define S_BRITTLE RAID_MODE(SPELL_BRITTLE_10, SPELL_BRITTLE_25)
-#define SPELL_SHATTER 62383
-
-#define BOSS_IGNIS 33118
-#define NPC_IRON_CONSTRUCT 33121
-#define NPC_SCORCHED_GROUND 33123
-#define NPC_WATER_TRIGGER 22515
+enum IgnisSpellData
+{
+ SPELL_FLAME_JETS = 62680,
+ SPELL_SCORCH = 62546,
+ SPELL_ACTIVATE_CONSTRUCT = 62488,
+ SPELL_STRENGTH_OF_THE_CREATOR = 64473,
+ SPELL_SLAG_POT = 62717,
+ SPELL_BERSERK = 64238,
+ SPELL_GRAB = 62707,
+ SPELL_GRAB_TRIGGERED = 62708,
+ SPELL_GRAB_CONTROL_2 = 62711,
+
+ SPELL_SCORCHED_GROUND = 62548,
+ SPELL_HEAT_AREA = 62343,
+ SPELL_HEAT_BUFF = 65667,
+ SPELL_MOLTEN = 62373,
+ SPELL_BRITTLE = 62382,
+ SPELL_SHATTER = 62383,
+};
+
+enum IgnisNPCs
+{
+ BOSS_IGNIS = 33118,
+ NPC_IRON_CONSTRUCT = 33121,
+ NPC_SCORCHED_GROUND = 33123,
+ NPC_WATER_TRIGGER = 22515,
+};
enum Texts
{
@@ -147,7 +143,7 @@ public:
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
- if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(S_BRITTLE))
+ if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_BRITTLE, me)))
{
me->CastSpell(me, SPELL_SHATTER, true);
Unit::Kill(attacker, me);
@@ -177,7 +173,7 @@ public:
if (me->FindNearestCreature(NPC_WATER_TRIGGER, 18.0f, true))
{
me->RemoveAura(a);
- me->CastSpell(me, S_BRITTLE, true);
+ me->CastSpell(me, SPELL_BRITTLE, true);
}
}
else
@@ -247,7 +243,7 @@ public:
bShattered = false;
lastShatterMSTime = 0;
events.Reset();
- events.ScheduleEvent(EVENT_ACTIVATE_CONSTRUCT, RAID_MODE(40000, 30000));
+ events.ScheduleEvent(EVENT_ACTIVATE_CONSTRUCT, RAID_MODE(40s, 30s));
events.ScheduleEvent(EVENT_SPELL_SCORCH, 10s);
events.ScheduleEvent(EVENT_SPELL_FLAME_JETS, 32s);
events.ScheduleEvent(EVENT_GRAB, 25s);
@@ -312,7 +308,7 @@ public:
if (caster && spell->Id == SPELL_GRAB_CONTROL_2)
{
//caster->ClearUnitState(UNIT_STATE_ONVEHICLE);
- me->CastSpell(caster, S_SLAG_POT, true);
+ me->CastSpell(caster, SPELL_SLAG_POT, true);
}
}
@@ -347,14 +343,14 @@ public:
me->CastSpell(me, SPELL_BERSERK, true);
break;
}
- events.RepeatEvent(RAID_MODE(40000, 30000));
+ events.Repeat(RAID_MODE(40s, 30s));
break;
case EVENT_SPELL_SCORCH:
Talk(SAY_SCORCH);
me->SetControlled(true, UNIT_STATE_ROOT);
me->DisableRotate(true);
me->SendMovementFlagUpdate();
- me->CastSpell(me->GetVictim(), S_SCORCH, false);
+ me->CastSpell(me->GetVictim(), SPELL_SCORCH, false);
events.Repeat(20s);
events.RescheduleEvent(EVENT_ENABLE_ROTATE, 3s);
break;
@@ -364,7 +360,7 @@ public:
break;
case EVENT_SPELL_FLAME_JETS:
Talk(EMOTE_JETS);
- me->CastSpell(me->GetVictim(), S_FLAME_JETS, false);
+ me->CastSpell(me->GetVictim(), SPELL_FLAME_JETS, false);
events.Repeat(25s);
break;
case EVENT_GRAB:
@@ -431,7 +427,7 @@ class spell_ignis_scorch_aura : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return ValidateSpellInfo({ SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25 });
+ return ValidateSpellInfo({ SPELL_SCORCHED_GROUND });
}
void HandleEffectPeriodic(AuraEffect const* aurEff)
@@ -441,7 +437,7 @@ class spell_ignis_scorch_aura : public AuraScript
if (Creature* summon = caster->SummonCreature(NPC_SCORCHED_GROUND, caster->GetPositionX() + 20.0f * cos(caster->GetOrientation()), caster->GetPositionY() + 20.0f * std::sin(caster->GetOrientation()), 361.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 30000))
{
if (!summon->FindNearestCreature(NPC_WATER_TRIGGER, 25.0f, true)) // must be away from the water
- summon->CastSpell(summon, (aurEff->GetId() == SPELL_SCORCH_10 ? SPELL_SCORCHED_GROUND_10 : SPELL_SCORCHED_GROUND_25), true);
+ summon->CastSpell(summon, SPELL_SCORCHED_GROUND, true);
}
}
@@ -474,12 +470,10 @@ class spell_ignis_grab_initial : public SpellScript
enum SlagPot
{
- SPELL_SLAG_POT_DAMAGE_1 = 65722,
- SPELL_SLAG_POT_DAMAGE_2 = 65723,
+ SPELL_SLAG_POT_DAMAGE = 65722,
SPELL_SCORCH_DAMAGE_1 = 62549,
SPELL_SCORCH_DAMAGE_2 = 63475,
- SPELL_SLAG_IMBUED_1 = 62836,
- SPELL_SLAG_IMBUED_2 = 63536
+ SPELL_SLAG_IMBUED = 62836,
};
class spell_ignis_slag_pot_aura : public AuraScript
@@ -490,12 +484,10 @@ class spell_ignis_slag_pot_aura : public AuraScript
{
return ValidateSpellInfo(
{
- SPELL_SLAG_POT_DAMAGE_1,
- SPELL_SLAG_POT_DAMAGE_2,
+ SPELL_SLAG_POT_DAMAGE,
SPELL_SCORCH_DAMAGE_1,
SPELL_SCORCH_DAMAGE_2,
- SPELL_SLAG_IMBUED_1,
- SPELL_SLAG_IMBUED_2
+ SPELL_SLAG_IMBUED
});
}
@@ -503,7 +495,7 @@ class spell_ignis_slag_pot_aura : public AuraScript
{
if (Unit* caster = GetCaster())
if (Unit* target = GetTarget())
- caster->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_POT_DAMAGE_1 : SPELL_SLAG_POT_DAMAGE_2), true);
+ caster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true);
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -522,7 +514,7 @@ class spell_ignis_slag_pot_aura : public AuraScript
target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_1, false);
target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_2, false);
if (target->IsAlive())
- target->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_IMBUED_1 : SPELL_SLAG_IMBUED_2), true);
+ target->CastSpell(target, SPELL_SLAG_IMBUED, true);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
index 34f5cf1555..ba2d626ca6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
@@ -45,56 +45,33 @@ enum KologarnSpells
SPELL_KOLOGARN_REDUCE_PARRY = 64651,
// BASIC
- SPELL_OVERHEAD_SMASH_10 = 63356,
- SPELL_OVERHEAD_SMASH_25 = 64003,
- SPELL_ONEARMED_OVERHEAD_SMASH_10 = 63573,
- SPELL_ONEARMED_OVERHEAD_SMASH_25 = 64006,
- SPELL_PETRIFYING_BREATH_10 = 62030,
- SPELL_PETRIFYING_BREATH_25 = 63980,
- SPELL_STONE_SHOUT_10 = 63716,
- SPELL_STONE_SHOUT_25 = 64005,
+ SPELL_OVERHEAD_SMASH = 63356,
+ SPELL_ONEARMED_OVERHEAD_SMASH = 63573,
+ SPELL_PETRIFYING_BREATH = 62030,
+ SPELL_STONE_SHOUT = 63716,
// EYEBEAM
SPELL_FOCUSED_EYEBEAM_SUMMON = 63342,
- SPELL_FOCUSED_EYEBEAM_10 = 63347,
- SPELL_FOCUSED_EYEBEAM_25 = 63977,
+ SPELL_FOCUSED_EYEBEAM = 63347,
SPELL_FOCUSED_EYEBEAM_RIGHT = 63702,
SPELL_FOCUSED_EYEBEAM_LEFT = 63676,
// ARMS
- SPELL_ARM_DEAD_10 = 63629,
- SPELL_ARM_DEAD_25 = 63979,
- SPELL_RUBBLE_FALL_10 = 63821,
- SPELL_RUBBLE_FALL_25 = 64001,
+ SPELL_ARM_DEAD = 63629,
+ SPELL_RUBBLE_FALL = 63821,
SPELL_ARM_RESPAWN_VISUAL = 64753,
// LEFT ARM
- SPELL_ARM_SWEEP_10 = 63766,
- SPELL_ARM_SWEEP_25 = 63983,
+ SPELL_ARM_SWEEP = 63766,
// RIGHT ARM
- SPELL_STONE_GRIP_10 = 62166,
- SPELL_STONE_GRIP_25 = 63981,
- SPELL_RIDE_RIGHT_ARM_10 = 62056,
- SPELL_RIDE_RIGHT_ARM_25 = 63985,
+ SPELL_STONE_GRIP = 62166,
+ SPELL_RIDE_RIGHT_ARM = 62056,
// RUBBLE TRASH
- SPELL_RUBBLE_ATTACK_10 = 63818,
- SPELL_RUBBLE_ATTACK_25 = 63978,
+ SPELL_RUBBLE_ATTACK = 63818,
};
-#define SPELL_PETRIFYING_BREATH RAID_MODE(SPELL_PETRIFYING_BREATH_10, SPELL_PETRIFYING_BREATH_25)
-#define SPELL_OVERHEAD_SMASH RAID_MODE(SPELL_OVERHEAD_SMASH_10, SPELL_OVERHEAD_SMASH_25)
-#define SPELL_ONEARMED_OVERHEAD_SMASH RAID_MODE(SPELL_ONEARMED_OVERHEAD_SMASH_10, SPELL_ONEARMED_OVERHEAD_SMASH_25)
-#define SPELL_ARM_DEAD RAID_MODE(SPELL_ARM_DEAD_10, SPELL_ARM_DEAD_25)
-#define SPELL_ARM_SWEEP RAID_MODE(SPELL_ARM_SWEEP_10, SPELL_ARM_SWEEP_25)
-#define SPELL_STONE_GRIP RAID_MODE(SPELL_STONE_GRIP_10, SPELL_STONE_GRIP_25)
-#define SPELL_FOCUSED_EYEBEAM RAID_MODE(SPELL_FOCUSED_EYEBEAM_10, SPELL_FOCUSED_EYEBEAM_25)
-#define SPELL_RUBBLE_FALL RAID_MODE(SPELL_RUBBLE_FALL_10, SPELL_RUBBLE_FALL_25)
-#define SPELL_RUBBLE_ATTACK RAID_MODE(SPELL_RUBBLE_ATTACK_10, SPELL_RUBBLE_ATTACK_25)
-#define SPELL_RIDE_RIGHT_ARM RAID_MODE(SPELL_RIDE_RIGHT_ARM_10, SPELL_RIDE_RIGHT_ARM_25)
-#define SPELL_STONE_SHOUT RAID_MODE(SPELL_STONE_SHOUT_10, SPELL_STONE_SHOUT_25)
-
enum KologarnEvents
{
EVENT_SMASH = 1,
@@ -339,9 +316,9 @@ public:
go->SetLootRecipient(me);
}
if (Creature* arm = ObjectAccessor::GetCreature(*me, _left))
- arm->DespawnOrUnsummon(3000); // visual
+ arm->DespawnOrUnsummon(3s); // visual
if (Creature* arm = ObjectAccessor::GetCreature(*me, _right))
- arm->DespawnOrUnsummon(3000); // visual
+ arm->DespawnOrUnsummon(3s); // visual
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetDisableGravity(true);
}
@@ -796,9 +773,7 @@ class spell_ulduar_stone_grip_cast_target : public SpellScript
// Remove "main tank" and non-player targets
targets.remove_if(StoneGripTargetSelector(GetCaster()->ToCreature(), GetCaster()->GetVictim()));
// Maximum affected targets per difficulty mode
- uint32 maxTargets = 1;
- if (GetSpellInfo()->Id == SPELL_STONE_GRIP_25)
- maxTargets = 3;
+ uint32 maxTargets = GetSpellInfo()->Id == SPELL_STONE_GRIP ? 1 : 3;
// Return a random amount of targets based on maxTargets
while (maxTargets < targets.size())
@@ -850,6 +825,7 @@ class spell_ulduar_squeezed_lifeless : public SpellScript
}
};
+// 63720, 64004
class spell_kologarn_stone_shout : public SpellScript
{
PrepareSpellScript(spell_kologarn_stone_shout);
@@ -861,7 +837,6 @@ class spell_kologarn_stone_shout : public SpellScript
void Register() override
{
- if (m_scriptSpellId != SPELL_STONE_SHOUT_10 && m_scriptSpellId != SPELL_STONE_SHOUT_25)
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_kologarn_stone_shout::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
}
};
@@ -879,7 +854,6 @@ class spell_kologarn_stone_shout_aura : public AuraScript
void Register() override
{
- if (m_scriptSpellId == SPELL_STONE_SHOUT_10 || m_scriptSpellId == SPELL_STONE_SHOUT_25)
OnEffectPeriodic += AuraEffectPeriodicFn(spell_kologarn_stone_shout_aura::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};
@@ -945,7 +919,8 @@ void AddSC_boss_kologarn()
RegisterSpellScript(spell_ulduar_stone_grip_aura);
RegisterSpellScript(spell_ulduar_squeezed_lifeless);
RegisterSpellScript(spell_kologarn_focused_eyebeam);
- RegisterSpellAndAuraScriptPair(spell_kologarn_stone_shout, spell_kologarn_stone_shout_aura);
+ RegisterSpellScript(spell_kologarn_stone_shout);
+ RegisterSpellScript(spell_kologarn_stone_shout_aura);
// Achievements
new achievement_kologarn_looks_could_kill();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 9823a3d9ed..ef53103da8 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -23,6 +23,7 @@
#include "PassiveAI.h"
#include "Player.h"
#include "ScriptedCreature.h"
+#include "SharedDefines.h"
#include "Spell.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
@@ -35,18 +36,15 @@ enum SpellData
SPELL_BERSERK = 64238,
// PHASE 1:
- SPELL_NAPALM_SHELL_25 = 65026,
- SPELL_NAPALM_SHELL_10 = 63666,
+ SPELL_NAPALM_SHELL = 63666,
- SPELL_PLASMA_BLAST_25 = 64529,
- SPELL_PLASMA_BLAST_10 = 62997,
+ SPELL_PLASMA_BLAST = 62997,
SPELL_SHOCK_BLAST = 63631,
SPELL_PROXIMITY_MINES = 63027,
NPC_PROXIMITY_MINE = 34362,
- SPELL_MINE_EXPLOSION_25 = 63009,
- SPELL_MINE_EXPLOSION_10 = 66351,
+ SPELL_MINE_EXPLOSION = 66351,
SPELL_SUMMON_PROXIMITY_MINE = 65347,
// PHASE 2:
@@ -57,17 +55,14 @@ enum SpellData
NPC_ROCKET_STRIKE_N = 34047,
SPELL_RAPID_BURST = 63382,
- SPELL_RAPID_BURST_DAMAGE_25_1 = 64531,
- SPELL_RAPID_BURST_DAMAGE_25_2 = 64532,
- SPELL_RAPID_BURST_DAMAGE_10_1 = 63387,
- SPELL_RAPID_BURST_DAMAGE_10_2 = 64019,
+ SPELL_RAPID_BURST_DAMAGE_1 = 63387,
+ SPELL_RAPID_BURST_DAMAGE_2 = 64019,
SPELL_SUMMON_BURST_TARGET = 64840,
SPELL_SPINNING_UP = 63414,
// PHASE 3:
- SPELL_PLASMA_BALL_25 = 64535,
- SPELL_PLASMA_BALL_10 = 63689,
+ SPELL_PLASMA_BALL = 63689,
SPELL_MAGNETIC_CORE = 64436,
SPELL_SPINNING = 64438,
@@ -80,10 +75,8 @@ enum SpellData
SPELL_BEAM_BLUE = 63294,
// PHASE 4:
- SPELL_HAND_PULSE_10_R = 64352,
- SPELL_HAND_PULSE_25_R = 64537,
- SPELL_HAND_PULSE_10_L = 64348,
- SPELL_HAND_PULSE_25_L = 64536,
+ SPELL_HAND_PULSE_R = 64352,
+ SPELL_HAND_PULSE_L = 64348,
SPELL_SELF_REPAIR = 64383,
SPELL_SLEEP_VISUAL_1 = 64393,
@@ -219,14 +212,6 @@ enum EVENTS
EVENT_EMERGENCY_BOT_ATTACK = 70,
};
-#define SPELL_NAPALM_SHELL RAID_MODE(SPELL_NAPALM_SHELL_10, SPELL_NAPALM_SHELL_25)
-#define SPELL_PLASMA_BLAST RAID_MODE(SPELL_PLASMA_BLAST_10, SPELL_PLASMA_BLAST_25)
-#define SPELL_MINE_EXPLOSION RAID_MODE(SPELL_MINE_EXPLOSION_10, SPELL_MINE_EXPLOSION_25)
-#define SPELL_PLASMA_BALL RAID_MODE(SPELL_PLASMA_BALL_10, SPELL_PLASMA_BALL_25)
-#define SPELL_HAND_PULSE_R RAID_MODE(SPELL_HAND_PULSE_10_R, SPELL_HAND_PULSE_25_R)
-#define SPELL_HAND_PULSE_L RAID_MODE(SPELL_HAND_PULSE_10_L, SPELL_HAND_PULSE_25_L)
-#define SPELL_FROST_BOMB_EXPLOSION RAID_MODE(SPELL_FROST_BOMB_EXPLOSION_10, SPELL_FROST_BOMB_EXPLOSION_25)
-
enum Texts
{
// Mimiron
@@ -378,8 +363,8 @@ public:
events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, 3s);
minutesTalkNum = Is25ManRaid() ? TALK_COMPUTER_TEN : TALK_COMPUTER_EIGHT;
for (uint32 i = 0; i < uint32(TALK_COMPUTER_ZERO - minutesTalkNum - 1); ++i)
- events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, (i + 1)*MINUTE * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, (TALK_COMPUTER_ZERO - minutesTalkNum)*MINUTE * IN_MILLISECONDS + 6000);
+ events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, Milliseconds((i + 1) * 60000));
+ events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, Milliseconds((TALK_COMPUTER_ZERO - minutesTalkNum) * 60000));
}
// ensure LMK2 is at proper position
@@ -601,7 +586,7 @@ public:
{
me->EnterVehicle(VX001, 4);
float speed = ACU->GetDistance(2737.75f, 2574.22f, 381.34f) / 2.0f;
- ACU->MonsterMoveWithSpeed(2737.75f, 2574.22f, 381.34f, speed);
+ ACU->GetMotionMaster()->MovePoint(0, 2737.75f, 2574.22f, 381.34f, FORCED_MOVEMENT_NONE, speed);
ACU->SetPosition(2737.75f, 2574.22f, 381.34f, M_PI);
events.ScheduleEvent(EVENT_SAY_VX001_DEAD, 2s);
break;
@@ -740,17 +725,17 @@ public:
LMK2->InterruptNonMeleeSpells(false);
LMK2->AttackStop();
LMK2->AI()->SetData(1, 0);
- LMK2->DespawnOrUnsummon(7000);
+ LMK2->DespawnOrUnsummon(7s);
LMK2->SetReactState(REACT_PASSIVE);
VX001->InterruptNonMeleeSpells(false);
VX001->AttackStop();
VX001->AI()->SetData(1, 0);
- VX001->DespawnOrUnsummon(7000);
+ VX001->DespawnOrUnsummon(7s);
VX001->SetReactState(REACT_PASSIVE);
ACU->InterruptNonMeleeSpells(false);
ACU->AttackStop();
ACU->AI()->SetData(1, 0);
- ACU->DespawnOrUnsummon(7000);
+ ACU->DespawnOrUnsummon(7s);
ACU->SetReactState(REACT_PASSIVE);
Position exitPos = me->GetPosition();
@@ -1221,7 +1206,7 @@ public:
if (p->GetEntry() == NPC_LEVIATHAN_MKII_CANNON && !apply)
{
Unit::Kill(p, p);
- p->ToCreature()->DespawnOrUnsummon(6000);
+ p->ToCreature()->DespawnOrUnsummon(6s);
}
}
@@ -1343,7 +1328,7 @@ public:
for (uint8 i = 0; i < 2; ++i)
if (Unit* r = vk->GetPassenger(5 + i))
if (r->IsCreature())
- r->ToCreature()->DespawnOrUnsummon(1);
+ r->ToCreature()->DespawnOrUnsummon(1ms);
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
@@ -1555,7 +1540,7 @@ public:
void PassengerBoarded(Unit* p, int8 /*seat*/, bool apply) override
{
if (p->GetEntry() == NPC_ROCKET_VISUAL && !apply)
- p->ToCreature()->DespawnOrUnsummon(8000);
+ p->ToCreature()->DespawnOrUnsummon(8s);
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
@@ -1681,8 +1666,7 @@ public:
me->InterruptNonMeleeSpells(false);
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE);
- me->MonsterMoveWithSpeed(2744.65f, 2569.46f, 381.34f, me->GetDistance(2744.65f, 2569.46f, 381.34f));
- me->UpdatePosition(2744.65f, 2569.46f, 381.34f, M_PI, false);
+ me->GetMotionMaster()->MovePoint(0, 2744.65f, 2569.46f, 381.34f);
if (Creature* c = GetMimiron())
c->AI()->SetData(0, 3);
@@ -1740,8 +1724,7 @@ public:
}
float speed = me->GetExactDist(x, y, 381.34f);
- me->MonsterMoveWithSpeed(x, y, 381.34f, speed);
- me->UpdatePosition(x, y, 381.34f, me->GetAngle(victim), false);
+ me->GetMotionMaster()->MovePoint(0, x, y, 381.34f, FORCED_MOVEMENT_NONE, speed);
if (mc)
{
mc->AI()->SetData(0, 0);
@@ -1793,14 +1776,12 @@ public:
case EVENT_MAGNETIC_CORE_PULL_DOWN:
me->CastSpell(me, SPELL_MAGNETIC_CORE, true);
me->CastSpell(me, SPELL_SPINNING, true);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 365.34f, me->GetExactDist(me->GetPositionX(), me->GetPositionY(), 365.34f));
- me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), 365.34f, me->GetOrientation(), false);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), 365.34f, FORCED_MOVEMENT_NONE, me->GetExactDist(me->GetPositionX(), me->GetPositionY(), 365.34f));
events.ScheduleEvent(EVENT_MAGNETIC_CORE_FREE, 20s);
break;
case EVENT_MAGNETIC_CORE_FREE:
me->RemoveAura(SPELL_SPINNING);
- me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 381.34f, me->GetDistance(me->GetPositionX(), me->GetPositionY(), 381.34f));
- me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), 381.34f, me->GetOrientation(), false);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), 381.34f, FORCED_MOVEMENT_NONE, me->GetDistance(me->GetPositionX(), me->GetPositionY(), 381.34f));
events.ScheduleEvent(EVENT_MAGNETIC_CORE_REMOVE_IMMOBILIZE, 1s);
break;
case EVENT_MAGNETIC_CORE_REMOVE_IMMOBILIZE:
@@ -1893,14 +1874,6 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {}
bool CanAIAttack(Unit const* /*target*/) const override { return false; }
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
- {
- if (target && spell && target->IsPlayer() && spell->Id == SPELL_MINE_EXPLOSION)
- if (InstanceScript* pInstance = me->GetInstanceScript())
- if (Creature* c = GetMimiron())
- c->AI()->SetData(0, 11);
- }
-
// MoveInLineOfSight is checked every few yards, can't use it
void UpdateAI(uint32 diff) override
{
@@ -1931,6 +1904,24 @@ public:
};
};
+class spell_ulduar_mimiron_mine_explosion : public SpellScript
+{
+ PrepareSpellScript(spell_ulduar_mimiron_mine_explosion);
+
+ void HandleDamage(SpellEffIndex /*effIndex*/)
+ {
+ if (GetHitPlayer())
+ if (InstanceScript* pInstance = GetCaster()->GetInstanceScript())
+ if (Creature* mimi = pInstance->GetCreature(TYPE_MIMIRON))
+ mimi->AI()->SetData(0, 11);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_ulduar_mimiron_mine_explosion::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
class npc_ulduar_mimiron_rocket : public CreatureScript
{
public:
@@ -1960,7 +1951,7 @@ public:
void SetData(uint32 /*id*/, uint32 /*value*/) override
{
- me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 100.0f, false, true);
+ me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 100.0f, FORCED_MOVEMENT_NONE, 0.f, false, true);
}
void UpdateAI(uint32 /*diff*/) override
@@ -2015,7 +2006,7 @@ public:
if (despawnTimer <= diff)
{
despawnTimer = 60000;
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
else
despawnTimer -= diff;
@@ -2081,7 +2072,7 @@ public:
bot->CastSpell(bot, SPELL_EMERGENCY_MODE, true);
}
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
timer = 99999;
}
else
@@ -2098,10 +2089,8 @@ class spell_mimiron_rapid_burst_aura : public AuraScript
{
return ValidateSpellInfo(
{
- SPELL_RAPID_BURST_DAMAGE_10_1,
- SPELL_RAPID_BURST_DAMAGE_10_2,
- SPELL_RAPID_BURST_DAMAGE_25_1,
- SPELL_RAPID_BURST_DAMAGE_25_2
+ SPELL_RAPID_BURST_DAMAGE_1,
+ SPELL_RAPID_BURST_DAMAGE_2,
});
}
@@ -2109,7 +2098,7 @@ class spell_mimiron_rapid_burst_aura : public AuraScript
{
if (Unit* caster = GetCaster())
{
- uint32 id = (caster->GetMap()->Is25ManRaid() ? ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_25_2 : SPELL_RAPID_BURST_DAMAGE_25_1) : ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_10_2 : SPELL_RAPID_BURST_DAMAGE_10_1));
+ uint32 id = (aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_2 : SPELL_RAPID_BURST_DAMAGE_1;
caster->CastSpell((Unit*)nullptr, id, true);
}
}
@@ -2346,7 +2335,7 @@ public:
CAST_AI(npc_ulduar_flames_initial::npc_ulduar_flames_initialAI, c->AI())->RemoveFlame(me->GetGUID());
me->RemoveAllAuras();
- me->DespawnOrUnsummon(2500);
+ me->DespawnOrUnsummon(2500ms);
}
break;
case SPELL_VX001_FROST_BOMB:
@@ -2502,6 +2491,7 @@ void AddSC_boss_mimiron()
new npc_ulduar_bot_summon_trigger();
RegisterSpellScript(spell_mimiron_rapid_burst_aura);
RegisterSpellScript(spell_mimiron_p3wx2_laser_barrage_aura);
+ RegisterSpellScript(spell_ulduar_mimiron_mine_explosion);
new go_ulduar_do_not_push_this_button();
new npc_ulduar_flames_initial();
new npc_ulduar_flames_spread();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 8d9dae387f..2ece43eb78 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -30,12 +30,10 @@
enum Spells
{
// Razorscale
- SPELL_FLAMEBUFFET_10 = 64016,
- SPELL_FLAMEBUFFET_25 = 64023,
+ SPELL_FLAMEBUFFET = 64016,
SPELL_FIREBALL = 63815,
SPELL_WINGBUFFET = 62666,
- SPELL_FLAMEBREATH_10 = 63317,
- SPELL_FLAMEBREATH_25 = 64021,
+ SPELL_FLAMEBREATH = 63317,
SPELL_FUSEARMOR = 64771,
SPELL_FUSED_ARMOR = 64774, // Applied on 5th stack of SPELL_FUSEARMOR
SPELL_DEVOURINGFLAME = 63236,
@@ -50,25 +48,17 @@ enum Spells
// Dark Rune Sentinel
SPELL_WHIRLWIND = 63808,
- SPELL_BATTLE_SHOUT_10 = 46763,
- SPELL_BATTLE_SHOUT_25 = 64062,
+ SPELL_BATTLE_SHOUT = 46763,
// Dark Rune Guardian
SPELL_STORMSTRIKE_DMG = 65971,
SPELL_STORMSTRIKE_DEBUFF = 64757,
// Dark Rune Watcher
- SPELL_LIGHTINGBOLT_10 = 63809,
- SPELL_LIGHTINGBOLT_25 = 64696,
- SPELL_CHAINLIGHTNING_10 = 64758,
- SPELL_CHAINLIGHTNING_25 = 64759,
+ SPELL_LIGHTINGBOLT = 63809,
+ SPELL_CHAINLIGHTNING = 64758,
};
-#define SPELL_FLAMEBUFFET RAID_MODE(SPELL_FLAMEBUFFET_10, SPELL_FLAMEBUFFET_25)
-#define SPELL_FLAMEBREATH RAID_MODE(SPELL_FLAMEBREATH_10, SPELL_FLAMEBREATH_25)
-#define SPELL_BATTLE_SHOUT RAID_MODE(SPELL_BATTLE_SHOUT_10, SPELL_BATTLE_SHOUT_25)
-#define SPELL_LIGHTINGBOLT RAID_MODE(SPELL_LIGHTINGBOLT_10, SPELL_LIGHTINGBOLT_25)
-#define SPELL_CHAINLIGHTNING RAID_MODE(SPELL_CHAINLIGHTNING_10, SPELL_CHAINLIGHTNING_25)
#define REQ_CHAIN_COUNT RAID_MODE(2, 4)
enum NPCs
@@ -354,17 +344,7 @@ public:
{
me->StopMoving();
startPath = false;
- if (WaypointPath const* i_path = sWaypointMgr->GetPath(me->GetWaypointPath()))
- {
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
- }
+ me->GetMotionMaster()->MovePath(me->GetWaypointPath(), FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
}
if (!UpdateVictim())
@@ -683,7 +663,7 @@ public:
{
razorscale->AI()->AttackStart(player);
razorscale->GetMotionMaster()->MoveIdle();
- razorscale->GetMotionMaster()->MovePoint(POINT_RAZORSCALE_INIT, 588.0f, -178.0f, 490.0f, false, false);
+ razorscale->GetMotionMaster()->MovePoint(POINT_RAZORSCALE_INIT, 588.0f, -178.0f, 490.0f, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, false);
}
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index d2b1aee4c4..160e8d3d50 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -23,6 +23,7 @@
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "SpellAuraEffects.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "ulduar.h"
@@ -34,8 +35,7 @@ enum ThorimSpells
SPELL_SHEATH_OF_LIGHTNING = 62276,
SPELL_STORMHAMMER = 62042,
SPELL_BERSERK_FRIENDS = 62560,
- SPELL_CHAIN_LIGHTNING_10 = 62131,
- SPELL_CHAIN_LIGHTNING_25 = 64390,
+ SPELL_CHAIN_LIGHTNING = 62131,
SPELL_UNBALANCING_STRIKE = 62130,
SPELL_BERSERK = 26662,
@@ -54,17 +54,13 @@ enum ThorimSpells
SPELL_SIF_CHANNEL_HOLOGRAM = 64324,
SPELL_FROSTBOLT = 62601,
SPELL_FROSTBOLT_VALLEY = 62604,
- SPELL_BLIZZARD_10 = 62577,
- SPELL_BLIZZARD_25 = 62603,
+ SPELL_BLIZZARD = 62577,
SPELL_FROST_NOVA = 62605,
// DARK RUNE ACOLYTE
- SPELL_GREATER_HEAL_10 = 62334,
- SPELL_GREATER_HEAL_25 = 62442,
- SPELL_HOLY_SMITE_10 = 62335,
- SPELL_HOLY_SMITE_25 = 62443,
- SPELL_RENEW_10 = 62333,
- SPELL_RENEW_25 = 62441,
+ SPELL_GREATER_HEAL = 62334,
+ SPELL_HOLY_SMITE = 62335,
+ SPELL_RENEW = 62333,
// CAPTURED MERCENARY SOLDIER
SPELL_BARBED_SHOT = 62318,
@@ -76,19 +72,15 @@ enum ThorimSpells
SPELL_HEROIC_STRIKE = 62444,
// JORMUNGAR BEHEMOTH
- SPELL_ACID_BREATH_10 = 62315,
- SPELL_ACID_BREATH_25 = 62415,
- SPELL_SWEEP_10 = 62316,
- SPELL_SWEEP_25 = 62417,
+ SPELL_ACID_BREATH = 62315,
+ SPELL_SWEEP = 62316,
// IRON RING GUARD
- SPELL_IMPALE_10 = 62331,
- SPELL_IMPALE_25 = 62418,
+ SPELL_IMPALE = 62331,
SPELL_WHIRLING_TRIP = 64151,
// IRON HONOR GUARD
- SPELL_SHIELD_SMASH_10 = 62332,
- SPELL_SHIELD_SMASH_25 = 62420,
+ SPELL_SHIELD_SMASH = 62332,
SPELL_CLEAVE = 42724,
SPELL_HAMSTRING = 48639,
@@ -97,12 +89,9 @@ enum ThorimSpells
SPELL_RUNIC_STRIKE = 62322,
// DARK RUNE EVOKER
- SPELL_RUNIC_LIGHTNING_10 = 62327,
- SPELL_RUNIC_LIGHTNING_25 = 62445,
- SPELL_RUNIC_MENDING_10 = 62328,
- SPELL_RUNIC_MENDING_25 = 62446,
- SPELL_RUNIC_SHIELD_10 = 62321,
- SPELL_RUNIC_SHIELD_25 = 62529,
+ SPELL_RUNIC_LIGHTNING = 62327,
+ SPELL_RUNIC_MENDING = 62328,
+ SPELL_RUNIC_SHIELD = 62321,
// DARK RUNE CHAMPION
SPELL_CHARGE = 32323,
@@ -114,8 +103,7 @@ enum ThorimSpells
SPELL_PUMMEL = 38313,
// RUNIC COLOSSUS
- SPELL_COLOSSUS_CHARGE_10 = 62613,
- SPELL_COLOSSUS_CHARGE_25 = 62614,
+ SPELL_COLOSSUS_CHARGE = 62613,
SPELL_RUNIC_BARRIER = 62338,
SPELL_SMASH = 62339,
SPELL_RUNIC_SMASH_LEFT = 62057,
@@ -125,8 +113,7 @@ enum ThorimSpells
// ANCIENT RUNE GIANT
SPELL_RUNE_DETONATION = 62526,
SPELL_RUNIC_FORTIFICATION = 62942,
- SPELL_STOMP_10 = 62411,
- SPELL_STOMP_25 = 62413,
+ SPELL_STOMP = 62411,
// TRAPS
SPELL_LIGHTNING_FIELD = 64972,
@@ -134,20 +121,6 @@ enum ThorimSpells
SPELL_PARALYTIC_FIELD_SECOND = 63540,
};
-#define SPELL_GREATER_HEAL RAID_MODE(SPELL_GREATER_HEAL_10, SPELL_GREATER_HEAL_25)
-#define SPELL_HOLY_SMITE RAID_MODE(SPELL_HOLY_SMITE_10, SPELL_HOLY_SMITE_25)
-#define SPELL_RENEW RAID_MODE(SPELL_RENEW_10, SPELL_RENEW_25)
-#define SPELL_ACID_BREATH RAID_MODE(SPELL_ACID_BREATH_10, SPELL_ACID_BREATH_25)
-#define SPELL_SWEEP RAID_MODE(SPELL_SWEEP_10, SPELL_SWEEP_25)
-#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)
-#define SPELL_COLOSSUS_CHARGE RAID_MODE(SPELL_COLOSSUS_CHARGE_10, SPELL_COLOSSUS_CHARGE_25)
-#define SPELL_STOMP RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25)
-#define SPELL_SHIELD_SMASH RAID_MODE(SPELL_SHIELD_SMASH_10, SPELL_SHIELD_SMASH_25)
-#define SPELL_RUNIC_LIGHTNING RAID_MODE(SPELL_RUNIC_LIGHTNING_10, SPELL_RUNIC_LIGHTNING_25)
-#define SPELL_RUNIC_MENDING RAID_MODE(SPELL_RUNIC_MENDING_10, SPELL_RUNIC_MENDING_25)
-#define SPELL_RUNIC_SHIELD RAID_MODE(SPELL_RUNIC_SHIELD_10, SPELL_RUNIC_SHIELD_25)
-#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25)
-
enum ThormNPCandGOs : uint32
{
// ARENA INIT
@@ -859,7 +832,7 @@ public:
else if (param == ACTION_SIF_TRANSFORM)
{
me->CastSpell(me, SPELL_SIF_TRANSFORM, true);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
events.Reset();
_allowCast = false;
}
@@ -875,7 +848,7 @@ public:
{
case EVENT_SIF_FINISH_DOMINION:
Talk(SAY_SIF_HM_MISSED);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
case EVENT_SIF_START_TALK:
Talk(SAY_SIF_AGGRO);
@@ -934,7 +907,7 @@ public:
{
InitWaypoint();
Reset();
- Start(false, true);
+ Start(false);
}
uint32 Timer;
@@ -1020,7 +993,7 @@ public:
{
InitWaypoint();
Reset();
- Start(false, true);
+ Start(false);
SetDespawnAtEnd(false);
}
@@ -1044,7 +1017,7 @@ public:
{
me->SetSpeed(MOVE_RUN, 1);
me->SetSpeed(MOVE_WALK, 1);
- me->CastSpell(me, RAID_MODE(SPELL_BLIZZARD_10, SPELL_BLIZZARD_25), true);
+ me->CastSpell(me, SPELL_BLIZZARD, true);
}
void WaypointReached(uint32 /*point*/) override
@@ -1206,7 +1179,7 @@ public:
events.Repeat(1600ms);
break;
case EVENT_DR_ACOLYTE_R:
- if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW))
+ if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me)))
me->CastSpell(me, SPELL_GREATER_HEAL, false);
else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10))
me->CastSpell(target, SPELL_RENEW, false);
@@ -1331,7 +1304,7 @@ public:
events.Repeat(1600ms);
break;
case EVENT_DR_ACOLYTE_R:
- if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW))
+ if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me)))
me->CastSpell(me, SPELL_GREATER_HEAL, false);
else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10))
me->CastSpell(target, SPELL_RENEW, false);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 750df991f1..ab7e276730 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -30,10 +30,8 @@
enum XT002Spells
{
// BASIC
- SPELL_GRAVITY_BOMB_10 = 63024,
- SPELL_GRAVITY_BOMB_25 = 64234,
- SPELL_SEARING_LIGHT_10 = 63018,
- SPELL_SEARING_LIGHT_25 = 65121,
+ SPELL_GRAVITY_BOMB = 63024,
+ SPELL_SEARING_LIGHT = 63018,
SPELL_TYMPANIC_TANTARUM = 62776,
SPELL_XT002_ENRAGE = 26662,
@@ -48,27 +46,18 @@ enum XT002Spells
SPELL_EXPOSED_HEART = 63849,
SPELL_ENERGY_ORB = 62790,
SPELL_ENERGY_ORB_TRIGGER = 62826,
- SPELL_HEARTBREAK_10 = 65737,
- SPELL_HEARTBREAK_25 = 64193,
+ SPELL_HEARTBREAK = 65737,
// VOID ZONE
- SPELL_VOID_ZONE_SUMMON_10 = 64203,
- SPELL_VOID_ZONE_SUMMON_25 = 64235,
- //SPELL_VOID_ZONE_SUMMON = RAID_MODE(SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25, SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25),
+ SPELL_VOID_ZONE_SUMMON = 64203,
SPELL_VOID_ZONE_DAMAGE = 46262,
// SPARK
SPELL_SPARK_SUMMON = 64210,
- SPELL_SPARK_DAMAGE_10 = 64227,
- SPELL_SPARK_DAMAGE_25 = 64236,
+ SPELL_SPARK_DAMAGE = 64227,
SPELL_SPARK_MELEE = 64230,
};
-#define SPELL_GRAVITY_BOMB RAID_MODE(SPELL_GRAVITY_BOMB_10, SPELL_GRAVITY_BOMB_25)
-#define SPELL_SEARING_LIGHT RAID_MODE(SPELL_SEARING_LIGHT_10, SPELL_SEARING_LIGHT_25)
-#define SPELL_HEARTBREAK RAID_MODE(SPELL_HEARTBREAK_10, SPELL_HEARTBREAK_25)
-#define SPELL_SPARK_DAMAGE RAID_MODE(SPELL_SPARK_DAMAGE_10, SPELL_SPARK_DAMAGE_25)
-
enum XT002Events
{
EVENT_HEALTH_CHECK = 1,
@@ -611,7 +600,7 @@ public:
if (!urand(0, 2))
pXT002->AI()->Talk(EMOTE_SCRAPBOT);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
}
@@ -657,7 +646,7 @@ public:
if (Unit* target = SelectTargetFromPlayerList(200))
AttackStart(target);
else
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
}
void UpdateAI(uint32 diff) override
@@ -769,12 +758,12 @@ public:
// so that can't be the issue
// See BoomEvent class
// Schedule 1s delayed
- me->m_Events.AddEvent(new BoomEvent(me), me->m_Events.CalculateTime(1 * IN_MILLISECONDS));
+ me->m_Events.AddEventAtOffset(new BoomEvent(me), 1s);
}
void JustDied(Unit* /*killer*/) override
{
- me->m_Events.AddEvent(new BoomEvent(me), me->m_Events.CalculateTime(1 * IN_MILLISECONDS));
+ me->m_Events.AddEventAtOffset(new BoomEvent(me), 1s);
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
index e2c684870c..b7dd602db3 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
@@ -24,6 +24,7 @@
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "SpellAuras.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "ulduar.h"
@@ -102,8 +103,7 @@ enum YoggSpells
// CONSTRICTOR TENTACLE
SPELL_LUNGE = 64123,
- SPELL_SQUEEZE_10 = 64125,
- SPELL_SQUEEZE_25 = 64126,
+ SPELL_SQUEEZE = 64125,
// CORRUPTOR TENTACLE
SPELL_APATHY = 64156,
@@ -142,15 +142,10 @@ enum YoggSpells
SPELL_SIMPLE_TELEPORT = 64195,
SPELL_EMPOWERED = 65294,
SPELL_EMPOWERED_PASSIVE = 64161,
- SPELL_DRAIN_LIFE_10 = 64159,
- SPELL_DRAIN_LIFE_25 = 64160,
+ SPELL_DRAIN_LIFE = 64159,
SPELL_RECENTLY_SPAWNED = 64497,
};
-#define SPELL_PSYCHOSIS RAID_MODE(SPELL_SARA_PSYCHOSIS_10, SPELL_SARA_PSYCHOSIS_25)
-#define SPELL_SQUEEZE RAID_MODE(SPELL_SQUEEZE_10, SPELL_SQUEEZE_25)
-#define SPELL_DRAIN_LIFE RAID_MODE(SPELL_DRAIN_LIFE_10, SPELL_DRAIN_LIFE_25)
-
enum YoggEvents
{
EVENT_SARA_P1_DOORS_CLOSE = 1,
@@ -696,11 +691,11 @@ public:
yoggb->AI()->Talk(EMOTE_YOGG_SARON_BRAIN_SHATTERED);
}
- uint32 timer = events.GetNextEventTime(EVENT_SARA_P2_OPEN_PORTALS);
- uint32 portalTime = (timer > events.GetTimer() ? timer - events.GetTimer() : 0);
- events.DelayEvents(param + 100);
+ Milliseconds timer = events.GetTimeUntilEvent(EVENT_SARA_P2_OPEN_PORTALS);
+ Milliseconds portalTime = (timer > 0ms ? timer : 0ms);
+ events.DelayEvents(Milliseconds(param + 100));
events.RescheduleEvent(EVENT_SARA_P2_OPEN_PORTALS, portalTime, 0, EVENT_PHASE_TWO);
- events.ScheduleEvent(EVENT_SARA_P2_REMOVE_STUN, param, 0, EVENT_PHASE_TWO);
+ events.ScheduleEvent(EVENT_SARA_P2_REMOVE_STUN, Milliseconds(param), 0, EVENT_PHASE_TWO);
me->CastSpell(me, SPELL_SHATTERED_ILLUSION, true);
}
@@ -804,7 +799,7 @@ public:
events.ScheduleEvent(EVENT_SARA_P1_SPELLS, 0ms, 1, EVENT_PHASE_ONE);
break;
case EVENT_SARA_P1_SUMMON:
- events.RepeatEvent(20000 - (std::min(_summonedGuardiansCount, (uint8)5) * 2000));
+ events.Repeat(Milliseconds(20000 - (std::min(_summonedGuardiansCount, (uint8)5) * 2000)));
++_summonedGuardiansCount;
InformCloud();
break;
@@ -824,14 +819,14 @@ public:
}
me->CastCustomSpell(spell, SPELLVALUE_MAX_TARGETS, 1, nullptr, false);
- events.RepeatEvent(me->GetMap()->Is25ManRaid() ? urand(0, 3000) : 4000 + urand(0, 2000));
+ events.Repeat(me->GetMap()->Is25ManRaid() ? randtime(0ms, 3s) : randtime(4s, 6s));
break;
}
case EVENT_SARA_P2_START:
{
EntryCheckPredicate pred(NPC_YOGG_SARON);
summons.DoAction(ACTION_YOGG_SARON_APPEAR, pred);
- events.RescheduleEvent(EVENT_SARA_P2_SPAWN_START_TENTACLES, 500, 0, EVENT_PHASE_TWO);
+ events.RescheduleEvent(EVENT_SARA_P2_SPAWN_START_TENTACLES, 500ms, 0, EVENT_PHASE_TWO);
// Spawn Brain!
me->SummonCreature(NPC_BRAIN_OF_YOGG_SARON, 1981.3f, -25.43f, 265);
@@ -846,7 +841,7 @@ public:
{
Talk(SAY_SARA_PSYCHOSIS_HIT);
}
- me->CastCustomSpell(SPELL_PSYCHOSIS, SPELLVALUE_MAX_TARGETS, 1, me, false);
+ me->CastCustomSpell(SPELL_SARA_PSYCHOSIS_10, SPELLVALUE_MAX_TARGETS, 1, me, false);
events.Repeat(3500ms);
break;
case EVENT_SARA_P2_DEATH_RAY:
@@ -856,15 +851,15 @@ public:
break;
case EVENT_SARA_P2_SUMMON_T1: // CRUSHER
SpawnTentacle(NPC_CRUSHER_TENTACLE);
- events.RepeatEvent((50000 + urand(0, 10000)) * _summonSpeed);
+ events.Repeat(Milliseconds(uint32((50000 + urand(0, 10000)) * _summonSpeed)));
break;
case EVENT_SARA_P2_SUMMON_T2: // CONSTRICTOR
SpawnTentacle(NPC_CONSTRICTOR_TENTACLE);
- events.RepeatEvent((15000 + urand(0, 5000)) * _summonSpeed);
+ events.Repeat(Milliseconds(uint32((15000 + urand(0, 5000))* _summonSpeed)));
break;
case EVENT_SARA_P2_SUMMON_T3: // CORRUPTOR
SpawnTentacle(NPC_CORRUPTOR_TENTACLE);
- events.RepeatEvent((30000 + urand(0, 10000)) * _summonSpeed);
+ events.Repeat(Milliseconds(uint32((30000 + urand(0, 10000))* _summonSpeed)));
break;
case EVENT_SARA_P2_BRAIN_LINK:
me->CastCustomSpell(SPELL_BRAIN_LINK, SPELLVALUE_MAX_TARGETS, 1, me, false);
@@ -901,9 +896,9 @@ public:
events.ScheduleEvent(EVENT_SARA_P2_DEATH_RAY, 15s, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T1, 50s, 60s, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T2, 15s, 20s, 0, EVENT_PHASE_TWO);
- events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T3, 30000 + urand(0, 10000), 0, EVENT_PHASE_TWO);
- events.ScheduleEvent(EVENT_SARA_P2_BRAIN_LINK, 0, 0, EVENT_PHASE_TWO);
- events.ScheduleEvent(EVENT_SARA_P2_OPEN_PORTALS, 60000, 0, EVENT_PHASE_TWO);
+ events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T3, 30s + randtime(0ms, 10s), 0, EVENT_PHASE_TWO);
+ events.ScheduleEvent(EVENT_SARA_P2_BRAIN_LINK, 0ms, 0, EVENT_PHASE_TWO);
+ events.ScheduleEvent(EVENT_SARA_P2_OPEN_PORTALS, 60s, 0, EVENT_PHASE_TWO);
break;
case EVENT_SARA_P1_BERSERK:
if (me->GetInstanceScript())
@@ -937,7 +932,7 @@ public:
{
InitWaypoint();
Reset();
- Start(false, true, ObjectGuid::Empty, nullptr, false, true);
+ Start(false, ObjectGuid::Empty, nullptr, false, true);
}
uint32 _checkTimer;
@@ -1167,20 +1162,20 @@ public:
me->RemoveAura(SPELL_SHADOW_BARRIER);
- events.ScheduleEvent(EVENT_YS_LUNATIC_GAZE, 7000);
- events.ScheduleEvent(EVENT_YS_SHADOW_BEACON, 20000);
- events.ScheduleEvent(EVENT_YS_SUMMON_GUARDIAN, 0);
+ events.ScheduleEvent(EVENT_YS_LUNATIC_GAZE, 7s);
+ events.ScheduleEvent(EVENT_YS_SHADOW_BEACON, 20s);
+ events.ScheduleEvent(EVENT_YS_SUMMON_GUARDIAN, 0ms);
_thirdPhase = true;
Talk(SAY_YOGG_SARON_PHASE_3);
}
else if (param == ACTION_YOGG_SARON_HARD_MODE)
{
- events.ScheduleEvent(EVENT_YS_DEAFENING_ROAR, 50000);
+ events.ScheduleEvent(EVENT_YS_DEAFENING_ROAR, 50s);
}
else if (param == ACTION_YOGG_SARON_SHADOW_BEACON)
{
- events.RescheduleEvent(EVENT_YS_SHADOW_BEACON, 40000);
+ events.RescheduleEvent(EVENT_YS_SHADOW_BEACON, 40s);
}
else if (param == ACTION_REMOVE_STUN)
{
@@ -1677,7 +1672,7 @@ public:
{
if (me->GetDistance(itr->GetSource()) > 10 || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
continue;
- if (itr->GetSource()->HasAura(SPELL_SQUEEZE) || itr->GetSource()->HasAura(SPELL_INSANE1))
+ if (itr->GetSource()->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me)) || itr->GetSource()->HasAura(SPELL_INSANE1))
continue;
if (count <= num || !target)
@@ -1719,7 +1714,7 @@ public:
void JustDied(Unit*) override
{
if (Unit* player = ObjectAccessor::GetUnit(*me, _playerGUID))
- player->RemoveAura(SPELL_SQUEEZE);
+ player->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me));
}
};
};
@@ -1807,7 +1802,7 @@ public:
}
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
private:
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp
index be980bd557..ff9e906924 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp
@@ -79,7 +79,11 @@ enum UldSpells
SPELL_SIMPLE_TELEPORT = 12980,
SPELL_KEEPER_TELEPORT = 62940,
SPELL_SNOW_MOUND_PARTICLES = 64615,
- SPELL_ENERGY_SAP_10 = 64740
+ SPELL_ENERGY_SAP_10 = 64740,
+
+ // Arachnopod Destroyer
+ SPELL_FLAME_SPRAY = 64717,
+ SPELL_MACHINE_GUN = 64776,
};
class npc_ulduar_keeper : public CreatureScript
@@ -473,11 +477,11 @@ public:
case 0:
break;
case 1:
- me->CastSpell(me->GetVictim(), RAID_MODE(64717, 65241), false);
+ me->CastSpell(me->GetVictim(), SPELL_FLAME_SPRAY, false);
events.Repeat(15s, 25s);
break;
case 2:
- me->CastSpell(me->GetVictim(), RAID_MODE(64776, 65240), false);
+ me->CastSpell(me->GetVictim(), SPELL_MACHINE_GUN, false);
events.Repeat(10s, 15s);
break;
case 3:
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index 868f8000f0..50fd08dd3d 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -56,28 +56,17 @@ enum eSpells
SPELL_RESURRECTION_HEAL = 42704,
SPELL_INGVAR_TRANSFORM = 42796,
- SPELL_STAGGERING_ROAR_N = 42708,
- SPELL_STAGGERING_ROAR_H = 59708,
+ SPELL_STAGGERING_ROAR = 42708,
SPELL_CLEAVE = 42724,
- SPELL_SMASH_N = 42669,
- SPELL_SMASH_H = 59706,
- SPELL_ENRAGE_N = 42705,
- SPELL_ENRAGE_H = 59707,
-
- SPELL_DREADFUL_ROAR_N = 42729,
- SPELL_DREADFUL_ROAR_H = 59734,
- SPELL_WOE_STRIKE_N = 42730,
- SPELL_WOE_STRIKE_H = 59735,
+ SPELL_SMASH = 42669,
+ SPELL_ENRAGE = 42705,
+
+ SPELL_DREADFUL_ROAR = 42729,
+ SPELL_WOE_STRIKE = 42730,
SPELL_DARK_SMASH = 42723,
SPELL_SHADOW_AXE = 42749,
};
-#define SPELL_STAGGERING_ROAR DUNGEON_MODE(SPELL_STAGGERING_ROAR_N, SPELL_STAGGERING_ROAR_H)
-#define SPELL_DREADFUL_ROAR DUNGEON_MODE(SPELL_DREADFUL_ROAR_N, SPELL_DREADFUL_ROAR_H)
-#define SPELL_WOE_STRIKE DUNGEON_MODE(SPELL_WOE_STRIKE_N, SPELL_WOE_STRIKE_H)
-#define SPELL_SMASH DUNGEON_MODE(SPELL_SMASH_N, SPELL_SMASH_H)
-#define SPELL_ENRAGE DUNGEON_MODE(SPELL_ENRAGE_N, SPELL_ENRAGE_H)
-
enum eEvents
{
EVENT_START_RESURRECTION = 1,
@@ -307,9 +296,6 @@ struct boss_ingvar_the_plunderer : public ScriptedAI
case EVENT_SPELL_ROAR:
Talk(EMOTE_ROAR);
- me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0);
- me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0);
-
if (me->GetDisplayId() == DISPLAYID_DEFAULT)
me->CastSpell((Unit*)nullptr, SPELL_STAGGERING_ROAR, false);
else
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
index a3d0626fa1..b5910adc49 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
@@ -45,12 +45,9 @@ enum eSpells
SPELL_FROST_TOMB_SUMMON = 42714,
SPELL_FROST_TOMB_AURA = 48400,
- SPELL_SHADOWBOLT_N = 43667,
- SPELL_SHADOWBOLT_H = 59389,
+ SPELL_SHADOWBOLT = 43667,
};
-#define SPELL_SHADOWBOLT DUNGEON_MODE(SPELL_SHADOWBOLT_N, SPELL_SHADOWBOLT_H)
-
struct npc_frost_tomb : public NullCreatureAI
{
npc_frost_tomb(Creature* c) : NullCreatureAI(c)
@@ -80,7 +77,7 @@ struct npc_frost_tomb : public NullCreatureAI
if (PrisonerGUID)
if (Unit* p = ObjectAccessor::GetUnit(*me, PrisonerGUID))
p->RemoveAurasDueToSpell(SPELL_FROST_TOMB_AURA);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
}
void UpdateAI(uint32 /*diff*/) override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
index 6e3ea7f52f..4e8ca024d6 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
@@ -44,8 +44,7 @@ enum eSpells
SPELL_ENRAGE = 48193,
SPELL_SUMMON_SKARVALD_GHOST = 48613,
// Dalronn
- SPELL_SHADOW_BOLT_N = 43649,
- SPELL_SHADOW_BOLT_H = 59575,
+ SPELL_SHADOW_BOLT = 43649,
SPELL_DEBILITATE = 43650,
SPELL_SUMMON_SKELETONS = 52611,
SPELL_SUMMON_DALRONN_GHOST = 48612
@@ -353,7 +352,7 @@ struct boss_dalronn_the_controller : public ScriptedAI
case EVENT_SHADOW_BOLT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
{
- me->CastSpell(target, DUNGEON_MODE(SPELL_SHADOW_BOLT_N, SPELL_SHADOW_BOLT_H), false);
+ me->CastSpell(target, SPELL_SHADOW_BOLT, false);
}
events.Repeat(2s);
break;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
index 62263725b5..48094eb270 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
@@ -95,7 +95,7 @@ enum EnslavedProtoDrake
SPELL_FLAME_BREATH = 50653,
SPELL_KNOCK_AWAY = 49722,
- POINT_LAST = 5,
+ POINT_LAST = 6,
};
const Position protodrakeCheckPos = {206.24f, -190.28f, 200.11f, 0.f};
@@ -111,8 +111,8 @@ struct npc_enslaved_proto_drake : public ScriptedAI
{
_events.Reset();
_events.ScheduleEvent(EVENT_REND, 2s, 3s);
- _events.ScheduleEvent(EVENT_FLAME_BREATH, 5500ms, 7000ms);
- _events.ScheduleEvent(EVENT_KNOCKAWAY, 3500ms, 6000ms);
+ _events.ScheduleEvent(EVENT_FLAME_BREATH, 5500ms, 7s);
+ _events.ScheduleEvent(EVENT_KNOCKAWAY, 3500ms, 6s);
}
void MovementInform(uint32 type, uint32 id) override
@@ -139,7 +139,7 @@ struct npc_enslaved_proto_drake : public ScriptedAI
_setData = true;
me->SetCanFly(true);
me->SetDisableGravity(true);
- me->GetMotionMaster()->MovePath(PATH_PROTODRAKE, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_PROTODRAKE, false);
}
}
@@ -167,7 +167,7 @@ struct npc_enslaved_proto_drake : public ScriptedAI
break;
case EVENT_KNOCKAWAY:
DoCast(SPELL_KNOCK_AWAY);
- _events.ScheduleEvent(EVENT_KNOCKAWAY, 7000ms, 8500ms);
+ _events.ScheduleEvent(EVENT_KNOCKAWAY, 7s, 8500ms);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 3229d8c96c..22e20f29a8 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -34,36 +34,28 @@ enum Misc
// PALEHOOF
SPELL_ARCING_SMASH = 48260,
- SPELL_IMPALE_N = 48261,
- SPELL_IMPALE_H = 59268,
- SPELL_WITHERING_ROAR_N = 48256,
- SPELL_WITHERING_ROAR_H = 59267,
+ SPELL_IMPALE = 48261,
+ SPELL_WITHERING_ROAR = 48256,
SPELL_FREEZE = 16245,
// Massive Jormungar
SPELL_ACID_SPIT = 48132,
- SPELL_ACID_SPLATTER_N = 48136,
- SPELL_ACID_SPLATTER_H = 59272,
- SPELL_POISON_BREATH_N = 48133,
- SPELL_POISON_BREATH_H = 59271,
+ SPELL_ACID_SPLATTER = 48136,
+ SPELL_POISON_BREATH = 48133,
NPC_JORMUNGAR_WORM = 27228,
// Ferocious Rhino
- SPELL_GORE_N = 48130,
- SPELL_GORE_H = 59264,
- SPELL_GRIEVOUS_WOUND_N = 48105,
- SPELL_GRIEVOUS_WOUND_H = 59263,
+ SPELL_GORE = 48130,
+ SPELL_GRIEVOUS_WOUND = 48105,
SPELL_STOMP = 48131,
// Ravenous Furbolg
- SPELL_CHAIN_LIGHTING_N = 48140,
- SPELL_CHAIN_LIGHTING_H = 59273,
+ SPELL_CHAIN_LIGHTNING = 48140,
SPELL_CRAZED = 48139,
SPELL_TERRIFYING_ROAR = 48144,
// Frenzied Worgen
- SPELL_MORTAL_WOUND_N = 48137,
- SPELL_MORTAL_WOUND_H = 59265,
+ SPELL_MORTAL_WOUND = 48137,
SPELL_ENRAGE_1 = 48138,
SPELL_ENRAGE_2 = 48142,
@@ -296,14 +288,14 @@ public:
}
case EVENT_PALEHOOF_WITHERING_ROAR:
{
- me->CastSpell(me, IsHeroic() ? SPELL_WITHERING_ROAR_H : SPELL_WITHERING_ROAR_N, false);
+ me->CastSpell(me, SPELL_WITHERING_ROAR, false);
events.Repeat(8s, 12s);
break;
}
case EVENT_PALEHOOF_IMPALE:
{
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(tgt, IsHeroic() ? SPELL_IMPALE_H : SPELL_IMPALE_N, false);
+ me->CastSpell(tgt, SPELL_IMPALE, false);
events.Repeat(8s, 12s);
break;
@@ -424,7 +416,7 @@ public:
}
case EVENT_JORMUNGAR_ACID_SPLATTER:
{
- me->CastSpell(me, IsHeroic() ? SPELL_ACID_SPLATTER_H : SPELL_ACID_SPLATTER_N, false);
+ me->CastSpell(me, SPELL_ACID_SPLATTER, false);
// Aura summon wont work because of duration
float x, y, z;
@@ -443,7 +435,7 @@ public:
case EVENT_JORMUNGAR_POISON_BREATH:
{
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(tgt, IsHeroic() ? SPELL_POISON_BREATH_H : SPELL_POISON_BREATH_N, false);
+ me->CastSpell(tgt, SPELL_POISON_BREATH, false);
events.Repeat(8s, 12s);
break;
@@ -546,14 +538,14 @@ public:
}
case EVENT_RHINO_GORE:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_GORE_H : SPELL_GORE_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_GORE, false);
events.Repeat(13s, 17s);
break;
}
case EVENT_RHINO_WOUND:
{
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(tgt, IsHeroic() ? SPELL_GRIEVOUS_WOUND_H : SPELL_GRIEVOUS_WOUND_N, false);
+ me->CastSpell(tgt, SPELL_GRIEVOUS_WOUND, false);
events.Repeat(18s, 22s);
break;
@@ -650,7 +642,7 @@ public:
{
case EVENT_FURBOLG_CHAIN:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CHAIN_LIGHTING_H : SPELL_CHAIN_LIGHTING_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
events.Repeat(4s, 7s);
break;
}
@@ -758,7 +750,7 @@ public:
{
case EVENT_WORGEN_MORTAL:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_MORTAL_WOUND_H : SPELL_MORTAL_WOUND_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
events.Repeat(4s, 7s);
break;
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index cf6318747d..1c4c577a3a 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -38,16 +38,12 @@ enum Misc
EMOTE_RANGE = 1,
// SPELLS
- SPELL_CRUSH_N = 50234,
- SPELL_CRUSH_H = 59330,
- SPELL_POISONED_SPEAR_N = 50255,
- SPELL_POISONED_SPEAR_H = 59331,
- SPELL_WHIRLWIND_N = 50228,
- SPELL_WHIRLWIND_H = 50228,
+ SPELL_CRUSH = 50234,
+ SPELL_POISONED_SPEAR = 50255,
+ SPELL_WHIRLWIND = 50228,
SPELL_FREEZING_CLOUD_VISUAL = 47592,
- SPELL_FREEZING_CLOUD_N = 47579,
- SPELL_FREEZING_CLOUD_H = 60020,
+ SPELL_FREEZING_CLOUD = 47579,
SPELL_LAUNCH_HARPOON = 48642,
@@ -181,6 +177,7 @@ public:
else if (param == ACTION_PHASE2)
{
SecondPhase = true;
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
events.ScheduleEvent(EVENT_SKADI_CRUSH, 8s);
events.ScheduleEvent(EVENT_SKADI_SPEAR, 10s);
events.ScheduleEvent(EVENT_SKADI_WHIRLWIND, 15s);
@@ -218,21 +215,21 @@ public:
}
case EVENT_SKADI_CRUSH:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CRUSH_H : SPELL_CRUSH_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_CRUSH, false);
events.Repeat(8s);
break;
}
case EVENT_SKADI_SPEAR:
{
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(tgt, IsHeroic() ? SPELL_POISONED_SPEAR_H : SPELL_POISONED_SPEAR_N, false);
+ me->CastSpell(tgt, SPELL_POISONED_SPEAR, false);
events.Repeat(10s);
break;
}
case EVENT_SKADI_WHIRLWIND:
{
- me->CastSpell(me, IsHeroic() ? SPELL_WHIRLWIND_H : SPELL_WHIRLWIND_N, false);
+ me->CastSpell(me, SPELL_WHIRLWIND, false);
events.Repeat(15s, 20s);
events.DelayEvents(10s);
break;
@@ -322,7 +319,7 @@ public:
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == 47593) // SPELL_FREEZING_CLOUD_VISUAL trigger
- target->CastSpell(target, me->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
+ target->CastSpell(target, SPELL_FREEZING_CLOUD, true);
}
void SpawnFlameTriggers(uint8 point)
@@ -339,13 +336,13 @@ public:
{
Creature* cr;
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 483, -484.9f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
- cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
+ cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 471.0f, -484.7f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
- cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
+ cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
for (uint8 j = 0; j < 7; j++)
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 477.0f, -507.0f + (j * 3), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
- cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
+ cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
}
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index 92fc069d45..485030dba2 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -47,8 +47,7 @@ enum Misc
SPELL_BALL_OF_FLAME = 48246,
SPELL_RITUAL_OF_THE_SWORD = 48276,
SPELL_RITUAL_STRIKE = 48331,
- SPELL_SINSTER_STRIKE_N = 15667,
- SPELL_SINSTER_STRIKE_H = 59409,
+ SPELL_SINISTER_STRIKE = 15667,
EQUIP_SWORD = 40343,
// CHANNELERS
@@ -157,7 +156,7 @@ public:
me->SetImmuneToAll(true);
Started = true;
me->setActive(true);
- events2.ScheduleEvent(EVENT_SVALA_START, 5000);
+ events2.ScheduleEvent(EVENT_SVALA_START, 5s);
if (Creature* pArthas = me->SummonCreature(NPC_ARTHAS, 295.81f, -366.16f, 92.57f, 1.58f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 59000))
ArthasGUID = pArthas->GetGUID();
@@ -303,7 +302,7 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_SORROWGRAVE_SS:
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SINSTER_STRIKE_H : SPELL_SINSTER_STRIKE_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_SINISTER_STRIKE, false);
events.ScheduleEvent(EVENT_SORROWGRAVE_SS, 3s, 5s);
break;
case EVENT_SORROWGRAVE_FLAMES:
@@ -339,7 +338,7 @@ public:
me->SetControlled(true, UNIT_STATE_ROOT);
}
- events.DelayEvents(25001); // +1 just to be sure
+ events.DelayEvents(25001ms); // +1 just to be sure
events.ScheduleEvent(EVENT_SORROWGRAVE_RITUAL_SPELLS, 0ms);
events.ScheduleEvent(EVENT_SORROWGRAVE_FINISH_RITUAL, 25s);
return;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index 0a1487f159..6c445644f5 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -32,16 +32,12 @@ enum Misc
SAY_SUMMON_TORGYN = 6,
// SPELLS
- SPELL_BANE_N = 48294,
- SPELL_BANE_H = 59301,
+ SPELL_BANE = 48294,
SPELL_DARK_SLASH = 48292,
- SPELL_FETID_ROT_N = 48291,
- SPELL_FETID_ROT_H = 59300,
+ SPELL_FETID_ROT = 48291,
SPELL_SCREAMS_OF_THE_DEAD = 51750,
- SPELL_SPIRIT_BURST_N = 48529, // when Ranulf
- SPELL_SPIRIT_BURST_H = 59305, // when Ranulf
- SPELL_SPIRIT_STRIKE_N = 48423, // when Haldor
- SPELL_SPIRIT_STRIKE_H = 59304, // when Haldor
+ SPELL_SPIRIT_BURST = 48529, // when Ranulf
+ SPELL_SPIRIT_STRIKE = 48423, // when Haldor
SPELL_SUMMON_AVENGING_SPIRIT = 48592,
SPELL_SUMMON_SPIRIT_FOUNT = 48386,
@@ -49,8 +45,7 @@ enum Misc
SPELL_CHANNEL_SPIRIT_TO_YMIRON = 48316,
SPELL_CHANNEL_YMIRON_TO_SPIRIT = 48307,
- SPELL_SPIRIT_FOUNT_N = 48380,
- SPELL_SPIRIT_FOUNT_H = 59320,
+ SPELL_SPIRIT_FOUNT = 48380,
SPELL_FLAMES = 39199,
@@ -217,7 +212,7 @@ public:
{
if (me->GetHealth() < std::max(0.0f, float(me->GetMaxHealth() * (1.0f - (IsHeroic() ? 0.2f : 0.334f)*float(BoatNum + 1)))))
{
- events.DelayEvents(12000);
+ events.DelayEvents(12s);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->InterruptNonMeleeSpells(true);
me->CastSpell(me, SPELL_SCREAMS_OF_THE_DEAD, true);
@@ -242,13 +237,13 @@ public:
}
case EVENT_YMIRON_BANE:
{
- me->CastSpell(me, IsHeroic() ? SPELL_BANE_H : SPELL_BANE_N, false);
+ me->CastSpell(me, SPELL_BANE, false);
events.Repeat(20s, 25s);
break;
}
case EVENT_YMIRON_FETID_ROT:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_FETID_ROT_H : SPELL_FETID_ROT_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_FETID_ROT, false);
events.Repeat(10s, 13s);
break;
}
@@ -297,7 +292,7 @@ public:
{
summons.Summon(sf);
sf->SetSpeed(MOVE_RUN, 0.4f);
- sf->AddAura(IsHeroic() ? SPELL_SPIRIT_FOUNT_H : SPELL_SPIRIT_FOUNT_N, sf);
+ sf->AddAura(SPELL_SPIRIT_FOUNT, sf);
sf->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
sf->GetMotionMaster()->MoveFollow(me->GetVictim(), 0, rand_norm()*M_PI * 2, MOTION_SLOT_ACTIVE, false, false);
}
@@ -305,13 +300,13 @@ public:
}
case EVENT_YMIRON_HALDOR_ABILITY:
{
- me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SPIRIT_STRIKE_H : SPELL_SPIRIT_STRIKE_N, false);
+ me->CastSpell(me->GetVictim(), SPELL_SPIRIT_STRIKE, false);
events.Repeat(5s);
break;
}
case EVENT_YMIRON_RANULF_ABILITY:
{
- me->CastSpell(me, IsHeroic() ? SPELL_SPIRIT_BURST_H : SPELL_SPIRIT_BURST_N, false);
+ me->CastSpell(me, SPELL_SPIRIT_BURST, false);
events.Repeat(10s);
break;
}
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
index 8e3d5372ed..333cb1f94f 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
@@ -27,14 +27,10 @@ enum Archavon
SPELL_ROCK_SHARDS = 58678,
SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL = 58689,
SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL = 58692,
- SPELL_ROCK_SHARDS_DAMAGE_10 = 58695,
- SPELL_ROCK_SHARDS_DAMAGE_25 = 60883,
- SPELL_CRUSHING_LEAP_10 = 58960,
- SPELL_CRUSHING_LEAP_25 = 60894, // Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris.
- SPELL_STOMP_10 = 58663,
- SPELL_STOMP_25 = 60880,
- SPELL_IMPALE_10 = 58666,
- SPELL_IMPALE_25 = 60882, // Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec.
+ SPELL_ROCK_SHARDS_DAMAGE = 58695,
+ SPELL_CRUSHING_LEAP = 58960,
+ SPELL_STOMP = 58663,
+ SPELL_IMPALE = 58666,
SPELL_BERSERK = 47008
};
@@ -145,7 +141,7 @@ class boss_archavon : public CreatureScript
case EVENT_CHOKING_CLOUD:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false))
{
- DoCast(target, RAID_MODE(SPELL_CRUSHING_LEAP_10, SPELL_CRUSHING_LEAP_25), true); //10y ~ 80y, ignore range
+ DoCast(target, SPELL_CRUSHING_LEAP, true); //10y ~ 80y, ignore range
}
events.Repeat(30s);
@@ -156,14 +152,14 @@ class boss_archavon : public CreatureScript
snprintf(buffer, sizeof(buffer), "Archavon the Stone Watcher lunges for %s!", me->GetVictim()->GetName().c_str());
me->TextEmote(buffer);
- DoCastVictim(RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25));
+ DoCastVictim(SPELL_STOMP);
events.Repeat(45s);
events.ScheduleEvent(EVENT_IMPALE, 3s);
break;
}
case EVENT_IMPALE:
- DoCastVictim(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25));
+ DoCastVictim(SPELL_IMPALE);
break;
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK, true);
@@ -205,17 +201,10 @@ class spell_archavon_rock_shards : public SpellScript
return;
}
- Map* map = caster->GetMap();
- if (!map)
- {
- return;
- }
-
caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true);
caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true);
- uint32 spellId = map->Is25ManRaid() ? SPELL_ROCK_SHARDS_DAMAGE_25 : SPELL_ROCK_SHARDS_DAMAGE_10;
- caster->CastSpell(target, spellId, true);
+ caster->CastSpell(target, SPELL_ROCK_SHARDS_DAMAGE, true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
index bf8da40c88..f9cb293697 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
@@ -29,10 +29,8 @@ enum Spells
SPELL_OVERCHARGE = 64218,
SPELL_BERSERK = 26662,
- SPELL_CHAIN_LIGHTNING_10 = 64213,
- SPELL_CHAIN_LIGHTNING_25 = 64215,
- SPELL_LIGHTNING_NOVA_10 = 64216,
- SPELL_LIGHTNING_NOVA_25 = 65279,
+ SPELL_CHAIN_LIGHTNING = 64213,
+ SPELL_LIGHTNING_NOVA = 64216,
};
enum Events
@@ -171,11 +169,11 @@ public:
{
case EVENT_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- me->CastSpell(target, RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false);
+ me->CastSpell(target, SPELL_CHAIN_LIGHTNING, false);
events.Repeat(25s);
break;
case EVENT_LIGHTNING_NOVA:
- me->CastSpell(me, RAID_MODE(SPELL_LIGHTNING_NOVA_10, SPELL_LIGHTNING_NOVA_25), false);
+ me->CastSpell(me, SPELL_LIGHTNING_NOVA, false);
events.Repeat(40s);
break;
case EVENT_OVERCHARGE:
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index 6ac9bdbf37..326ac6e7a0 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -344,7 +344,7 @@ public:
if (Creature* pIchoron = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_ICHORON_GUID)))
if (pIchoron->AI())
pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_KILLED);
- me->DespawnOrUnsummon(2500);
+ me->DespawnOrUnsummon(2500ms);
}
void AttackStart(Unit* /*who*/) override {}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
index 27b354bee4..7cfab3ed2e 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
@@ -121,7 +121,7 @@ public:
while (entry1 == entry2);
me->CastSpell((Unit*)nullptr, entry2, true);
}
- events.RepeatEvent(45000);
+ events.Repeat(45s);
events.RescheduleEvent(EVENT_SPELL_ARCANE_BUFFET, 5s);
events.RescheduleEvent(EVENT_CHECK_DISTANCE, 6s);
}
@@ -135,7 +135,7 @@ public:
if (me->GetDistance(c) < 3.0f)
{
c->CastSpell(me, SPELL_ARCANE_POWER, false);
- c->DespawnOrUnsummon(8000);
+ c->DespawnOrUnsummon(8s);
found = true;
}
if (found)
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index f7ec86e1b8..65263e655c 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -222,7 +222,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(SummonedGUID))
c->DespawnOrUnsummon();
}
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
}
void SummonedCreatureDespawn(Creature* pSummoned) override
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index 8406b3527c..4fa7bb52ce 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -92,7 +92,7 @@ public:
uiFirstBoss = 0;
uiSecondBoss = 0;
events.Reset();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0ms);
GateHealth = 100;
WaveCount = 0;
PortalLocation = 0;
@@ -666,7 +666,7 @@ public:
EncounterStatus = NOT_STARTED;
CLEANED = false;
events.Reset();
- events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
+ events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0ms);
data >> m_auiEncounter[0];
data >> m_auiEncounter[1];
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
index 1332cf6723..97fa245be4 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
@@ -205,7 +205,7 @@ public:
break;
case EVENT_SUMMON_SABOTEOUR:
DoSummon(NPC_SABOTEOUR, me, 2.0f, 0, TEMPSUMMON_CORPSE_DESPAWN);
- me->DespawnOrUnsummon(3000);
+ me->DespawnOrUnsummon(3s);
break;
}
@@ -372,7 +372,7 @@ struct violet_hold_trashAI : public npc_escortAI
break;
}
SetDespawnAtEnd(false);
- Start(true, true);
+ Start(true);
}
npc_escortAI::UpdateAI(diff);
@@ -422,73 +422,55 @@ struct violet_hold_trashAI : public npc_escortAI
enum AzureInvaderSpells
{
- SPELL_CLEAVE = 15496,
- SPELL_IMPALE_N = 58459,
- SPELL_IMPALE_H = 59256,
+ SPELL_CLEAVE = 15496,
+ SPELL_IMPALE = 58459,
SPELL_BRUTAL_STRIKE = 58460,
- SPELL_SUNDER_ARMOR = 58461,
+ SPELL_SUNDER_ARMOR = 58461,
};
-#define SPELL_IMPALE DUNGEON_MODE(SPELL_IMPALE_N, SPELL_IMPALE_H)
enum AzureSpellbreakerSpells
{
- SPELL_ARCANE_BLAST_N = 58462,
- SPELL_ARCANE_BLAST_H = 59257,
- SPELL_SLOW = 25603,
+ SPELL_ARCANE_BLAST = 58462,
+ SPELL_SLOW = 25603,
SPELL_CHAINS_OF_ICE = 58464,
- SPELL_CONE_OF_COLD_N = 58463,
- SPELL_CONE_OF_COLD_H = 59258
+ SPELL_CONE_OF_COLD = 58463,
};
-#define SPELL_ARCANE_BLAST DUNGEON_MODE(SPELL_ARCANE_BLAST_N, SPELL_ARCANE_BLAST_H)
-#define SPELL_CONE_OF_COLD DUNGEON_MODE(SPELL_CONE_OF_COLD_N, SPELL_CONE_OF_COLD_H)
enum AzureBinderSpells
{
- SPELL_ARCANE_BARRAGE_N = 58456,
- SPELL_ARCANE_BARRAGE_H = 59248,
- SPELL_ARCANE_EXPLOSION_N = 58455,
- SPELL_ARCANE_EXPLOSION_H = 59245,
- SPELL_FROST_NOVA_N = 58458,
- SPELL_FROST_NOVA_H = 59253,
- SPELL_FROSTBOLT_N = 58457,
- SPELL_FROSTBOLT_H = 59251,
+ SPELL_ARCANE_BARRAGE = 58456,
+ SPELL_ARCANE_EXPLOSION = 58455,
+ SPELL_FROST_NOVA = 58458,
+ SPELL_FROSTBOLT = 58457,
};
-#define SPELL_ARCANE_BARRAGE DUNGEON_MODE(SPELL_ARCANE_BARRAGE_N, SPELL_ARCANE_BARRAGE_H)
-#define SPELL_ARCANE_EXPLOSION DUNGEON_MODE(SPELL_ARCANE_EXPLOSION_N, SPELL_ARCANE_EXPLOSION_H)
-#define SPELL_FROST_NOVA DUNGEON_MODE(SPELL_FROST_NOVA_N, SPELL_FROST_NOVA_H)
-#define SPELL_FROSTBOLT DUNGEON_MODE(SPELL_FROSTBOLT_N, SPELL_FROSTBOLT_H)
enum AzureMageSlayerSpells
{
SPELL_ARCANE_EMPOWERMENT = 58469,
- SPELL_SPELL_LOCK = 30849
+ SPELL_SPELL_LOCK = 30849
};
enum AzureCaptainSpells
{
- SPELL_MORTAL_STRIKE = 32736,
+ SPELL_MORTAL_STRIKE = 32736,
SPELL_WHIRLWIND_OF_STEEL = 41056
};
enum AzureSorcerorSpells
{
- SPELL_ARCANE_STREAM_N = 60181,
- SPELL_ARCANE_STREAM_H = 60204,
- SPELL_MANA_DETONATION_N = 60182,
- SPELL_MANA_DETONATION_H = 60205
+ SPELL_ARCANE_STREAM = 60181,
+ SPELL_MANA_DETONATION = 60182,
};
-#define SPELL_ARCANE_STREAM DUNGEON_MODE(SPELL_ARCANE_STREAM_N, SPELL_ARCANE_STREAM_H)
-#define SPELL_MANA_DETONATION DUNGEON_MODE(SPELL_MANA_DETONATION_N, SPELL_MANA_DETONATION_H)
enum AzureRaiderSpells
{
- SPELL_CONCUSSION_BLOW = 52719,
+ SPELL_CONCUSSION_BLOW = 52719,
SPELL_MAGIC_REFLECTION = 60158
};
enum AzureStalkerSpells
{
- SPELL_BACKSTAB = 58471,
+ SPELL_BACKSTAB = 58471,
SPELL_TACTICAL_BLINK = 58470
};
@@ -1111,7 +1093,7 @@ public:
break;
}
SetDespawnAtEnd(false);
- Start(true, true);
+ Start(true);
}
if (bOpening)
@@ -1136,7 +1118,7 @@ public:
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetDisplayId(11686);
me->CastSpell(me, SPELL_TELEPORT_VISUAL, true);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
++count;
}
@@ -1198,11 +1180,11 @@ struct npc_violet_hold_defense_system : public ScriptedAI
{
case EVENT_ARCANE_LIGHTNING:
DoCastAOE(RAND(SPELL_ARCANE_LIGHTNING, SPELL_ARCANE_LIGHTNING_VISUAL));
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
case EVENT_ARCANE_LIGHTNING_INSTAKILL:
DoCastAOE(SPELL_ARCANE_LIGHTNING_INSTAKILL);
- events.RepeatEvent(1000);
+ events.Repeat(1s);
break;
}
}
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 8f352e8936..3ee7f22721 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -63,7 +63,7 @@ class spell_q11919_q11940_drake_hunt_aura : public AuraScript
GetCaster()->CastSpell(GetCaster(), SPELL_DRAKE_HATCHLING_SUBDUED, true);
owner->SetFaction(FACTION_FRIENDLY);
owner->SetImmuneToAll(true);
- owner->DespawnOrUnsummon(3 * MINUTE * IN_MILLISECONDS);
+ owner->DespawnOrUnsummon(180s);
}
void Register() override
@@ -464,7 +464,10 @@ public:
go->UseDoorOrButton();
if (npc_escortAI* pEscortAI = CAST_AI(npc_lurgglbr::npc_lurgglbrAI, creature->AI()))
- pEscortAI->Start(true, false, player->GetGUID());
+ {
+ creature->SetWalk(true);
+ pEscortAI->Start(true, player->GetGUID());
+ }
creature->SetFaction(player->GetTeamId() == TEAM_ALLIANCE ? FACTION_ESCORTEE_A_PASSIVE : FACTION_ESCORTEE_H_PASSIVE);
return true;
@@ -609,7 +612,7 @@ struct npc_beryl_sorcererAI : public CreatureAI
AttackStart(who);
}
- _events.ScheduleEvent(EVENT_FROSTBOLT, 3000, 4000);
+ _events.ScheduleEvent(EVENT_FROSTBOLT, 3s, 4s);
}
void SpellHit(Unit* unit, SpellInfo const* spell) override
@@ -914,7 +917,8 @@ public:
creature->SetFaction(player->GetTeamId() == TEAM_ALLIANCE ? FACTION_ESCORTEE_A_PASSIVE : FACTION_ESCORTEE_H_PASSIVE);
creature->SetStandState(UNIT_STAND_STATE_STAND);
creature->AI()->Talk(SAY_1, player);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
+ creature->SetWalk(true);
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, player->GetGUID());
}
return true;
}
@@ -959,7 +963,7 @@ public:
Talk(SAY_5);
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
player->GroupEventHappens(QUEST_ESCAPING_THE_MIST, me);
- SetRun(true);
+ me->SetWalk(false);
break;
}
}
@@ -995,7 +999,7 @@ public:
{
creature->SetStandState(UNIT_STAND_STATE_STAND);
creature->AI()->Talk(SAY_BONKER_2, player);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, player->GetGUID());
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, player->GetGUID());
}
return true;
}
@@ -1421,7 +1425,7 @@ public:
_playerGUID.Clear();
}
- void SetGUID(ObjectGuid guid, int32 /*action*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*action*/) override
{
if (_playerGUID)
return;
@@ -1431,7 +1435,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
me->SetFacingToObject(player);
- _events.ScheduleEvent(EVENT_TALK, 1000);
+ _events.ScheduleEvent(EVENT_TALK, 1s);
}
void UpdateAI(uint32 diff) override
@@ -1557,7 +1561,7 @@ public:
void Reset() override
{
me->SetImmuneToAll(true);
- _events.ScheduleEvent(EVENT_THASSARIAN_CAST, 1000);
+ _events.ScheduleEvent(EVENT_THASSARIAN_CAST, 1s);
}
void UpdateAI(uint32 diff) override
@@ -1648,7 +1652,7 @@ public:
void MovementInform(uint32 type, uint32 param) override
{
- if (type == WAYPOINT_MOTION_TYPE && param == 2)
+ if (type == WAYPOINT_MOTION_TYPE && param == 3)
{
me->SetWalk(false);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
@@ -1684,7 +1688,7 @@ public:
// Arthas load path
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
{
- arthas->GetMotionMaster()->MovePath(PATH_ARTHAS, false);
+ arthas->GetMotionMaster()->MoveWaypoint(PATH_ARTHAS, false);
}
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_3, 1s);
break;
@@ -1692,7 +1696,7 @@ public:
// Talbot load path
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
{
- talbot->GetMotionMaster()->MovePath(PATH_TALBOT, false);
+ talbot->GetMotionMaster()->MoveWaypoint(PATH_TALBOT, false);
}
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_4, 20s);
break;
@@ -1726,7 +1730,7 @@ public:
arlos->SetWalk(true);
arlos->SetImmuneToAll(true);
arlos->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
- arlos->GetMotionMaster()->MovePath(PATH_ARLOS, false);
+ arlos->GetMotionMaster()->MoveWaypoint(PATH_ARLOS, false);
}
if (Creature* leryssa = me->SummonCreature(NPC_LERYSSA, 3751.0986f, 3614.9219f, 473.4048f, 4.5029f, TEMPSUMMON_CORPSE_TIMED_DESPAWN))
{
@@ -1734,7 +1738,7 @@ public:
leryssa->SetWalk(true);
leryssa->SetImmuneToAll(true);
leryssa->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
- leryssa->GetMotionMaster()->MovePath(PATH_LERYSSA, false);
+ leryssa->GetMotionMaster()->MoveWaypoint(PATH_LERYSSA, false);
}
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_7, 7s);
break;
@@ -1884,7 +1888,7 @@ public:
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
{
leryssa->SetWalk(false);
- leryssa->MonsterMoveWithSpeed(3726.751f, 3568.1633f, 477.44086f, leryssa->GetSpeed(MOVE_RUN));
+ leryssa->GetMotionMaster()->MovePoint(0, 3726.751f, 3568.1633f, 477.44086f, FORCED_MOVEMENT_RUN);
}
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_23, 2s);
break;
@@ -1989,7 +1993,7 @@ public:
_playerGUID = player->GetGUID();
CloseGossipMenuFor(player);
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- me->GetMotionMaster()->MovePath(PATH_THASSARIAN, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_THASSARIAN, false);
}
}
@@ -2020,7 +2024,7 @@ public:
void MovementInform(uint32 type, uint32 param) override
{
- if (type == WAYPOINT_MOTION_TYPE && param == 2)
+ if (type == WAYPOINT_MOTION_TYPE && param == 3)
{
if (me->IsSummon())
{
diff --git a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
index a211b22028..c1829ccbd1 100644
--- a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
+++ b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
@@ -41,25 +41,7 @@ struct npc_preparations_for_war_vehicle : public NullCreatureAI
void InitializeAI() override
{
- WPPath* path = sSmartWaypointMgr->GetPath(me->GetEntry());
- if (!path || path->empty())
- {
- me->DespawnOrUnsummon(1);
- return;
- }
-
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
-
- uint32 wpCounter = 1;
- WPPath::const_iterator itr;
- while ((itr = path->find(wpCounter++)) != path->end())
- {
- WayPoint* wp = itr->second;
- pathPoints.push_back(G3D::Vector3(wp->x, wp->y, wp->z));
- }
-
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(me->GetEntry(), FORCED_MOVEMENT_NONE, PathSource::SMART_WAYPOINT_MGR);
NullCreatureAI::InitializeAI();
pointId = 0;
@@ -108,7 +90,7 @@ struct npc_preparations_for_war_vehicle : public NullCreatureAI
if (me->GetDistance2d(x, y) < 10.0f)
{
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
if (Vehicle* vehicle = me->GetVehicleKit())
if (Unit* passenger = vehicle->GetPassenger(0))
{
@@ -117,7 +99,7 @@ struct npc_preparations_for_war_vehicle : public NullCreatureAI
}
}
else
- me->GetMotionMaster()->MovePoint(0, x, y, z, false, false);
+ me->GetMotionMaster()->MovePoint(0, x, y, z, FORCED_MOVEMENT_NONE, 0.f, 0.f, false, false);
break;
}
}
diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp
index d34530709d..e561a8e07a 100644
--- a/src/server/scripts/Northrend/zone_dalaran.cpp
+++ b/src/server/scripts/Northrend/zone_dalaran.cpp
@@ -592,7 +592,7 @@ struct npc_minigob_manabonk : public ScriptedAI
case EVENT_MOVE:
{
Position pos = me->GetRandomNearPosition((urand(15, 40)));
- me->GetMotionMaster()->MovePoint(0, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), true);
+ me->GetMotionMaster()->MovePoint(0, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ());
}
events.ScheduleEvent(EVENT_DESPAWN_VISUAL, 3s);
events.ScheduleEvent(EVENT_DESPAWN, 4s);
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 52aac2193b..f7b1252a61 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -491,9 +491,9 @@ public:
HideNozdormu();
if (Creature* cr = GetCopy())
cr->AI()->Talk(SAY_HOURGLASS_END_2, GetPlayer());
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
if (GetCopy())
- GetCopy()->DespawnOrUnsummon(500);
+ GetCopy()->DespawnOrUnsummon(500ms);
break;
}
}
@@ -614,7 +614,7 @@ public:
uint32 path = me->GetEntry() * 10 + urand(0, 4);
if (me->GetPositionY() > -1150.0f)
path += 5;
- me->GetMotionMaster()->MovePath(path, false);
+ me->GetMotionMaster()->MoveWaypoint(path, false);
}
void MovementInform(uint32 type, uint32 point) override
@@ -622,11 +622,11 @@ public:
if (type != WAYPOINT_MOTION_TYPE)
return;
- if (point == 8) // max-1
+ if (point == 9)
{
Talk(0);
me->RemoveAllAuras();
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
if (TempSummon* summon = me->ToTempSummon())
if (Unit* owner = summon->GetSummonerUnit())
if (Player* player = owner->ToPlayer())
@@ -726,7 +726,7 @@ public:
}
case EVENT_TAKE_OFF:
{
- me->DespawnOrUnsummon(4050);
+ me->DespawnOrUnsummon(4050ms);
me->SetOrientation(2.5f);
me->SetSpeedRate(MOVE_FLIGHT, 1.0f);
Position pos = me->GetPosition();
@@ -1055,12 +1055,12 @@ public:
if (fromReset)
{
if (Creature* c = me->FindNearestCreature(NPC_SAC_LIGHTS_VENGEANCE, 150.0f, true))
- c->DespawnOrUnsummon(1);
+ c->DespawnOrUnsummon(1ms);
if (Creature* c = me->FindNearestCreature(NPC_SAC_LIGHTS_VENGEANCE_VEH_1, 150.0f, true))
c->RemoveAllAuras();
}
if (Creature* c = me->FindNearestCreature(NPC_SAC_LIGHTS_VENGEANCE_VEH_2, 150.0f, true))
- c->DespawnOrUnsummon(1);
+ c->DespawnOrUnsummon(1ms);
if (GameObject* go = me->FindNearestGameObject(GO_SAC_LIGHTS_VENGEANCE_1, 150.0f))
go->Delete();
if (GameObject* go = me->FindNearestGameObject(GO_SAC_LIGHTS_VENGEANCE_2, 150.0f))
@@ -1093,9 +1093,9 @@ public:
me->GetMotionMaster()->Clear();
}
- void SetGUID(ObjectGuid guid, int32 /*id*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
{
- if (playerGUID || events.GetNextEventTime(998) || events.GetNextEventTime(2))
+ if (playerGUID || events.HasTimeUntilEvent(998) || events.HasTimeUntilEvent(2))
return;
me->setActive(true);
@@ -1289,18 +1289,18 @@ public:
{
c->CastSpell(v, SPELL_SAC_KILL_VEGARD, true);
v->SetDisplayId(11686);
- v->DespawnOrUnsummon(1000);
+ v->DespawnOrUnsummon(1s);
b->CastSpell(b, SPELL_SAC_HOLY_BOMB_EXPLOSION, true);
b->CastSpell(b, SPELL_SAC_SUMMON_GO_2, true);
if (Unit* vb = c->GetVehicleBase())
{
if (Unit* pass = vb->GetVehicleKit()->GetPassenger(0))
if (pass->IsCreature())
- pass->ToCreature()->DespawnOrUnsummon(1);
+ pass->ToCreature()->DespawnOrUnsummon(1ms);
vb->RemoveAllAuras();
- vb->ToCreature()->DespawnOrUnsummon(1);
+ vb->ToCreature()->DespawnOrUnsummon(1ms);
}
- c->ToCreature()->DespawnOrUnsummon(1);
+ c->ToCreature()->DespawnOrUnsummon(1ms);
}
}
break;
@@ -1325,7 +1325,7 @@ public:
if (spell->Id == SPELL_SAC_REPEL_HAMMER && target->IsCreature())
{
target->CastSpell((Unit*)nullptr, SPELL_SAC_THROW_HAMMER, true);
- target->ToCreature()->DespawnOrUnsummon(1);
+ target->ToCreature()->DespawnOrUnsummon(1ms);
if (Unit* c = target->GetVehicleBase())
c->RemoveAurasDueToSpell(SPELL_SAC_HOLY_ZONE_AURA);
}
@@ -1439,7 +1439,7 @@ public:
{
me->SetDisplayId(me->GetNativeDisplayId());
me->CastSpell(me, SPELL_SAC_EMERGE, true);
- me->m_Events.AddEvent(new SACActivateEvent(me), me->m_Events.CalculateTime(4000));
+ me->m_Events.AddEventAtOffset(new SACActivateEvent(me), 4s);
}
void Deactivate()
@@ -1452,7 +1452,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
me->RemoveAurasDueToSpell(SPELL_SAC_GHOUL_AREA_AURA);
- me->m_Events.AddEvent(new SACDeactivateEvent(me), me->m_Events.CalculateTime(4000));
+ me->m_Events.AddEventAtOffset(new SACDeactivateEvent(me), 4s);
}
void JustRespawned() override
@@ -1559,7 +1559,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
Talk(1);
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
if (Creature* c = me->FindNearestCreature(NPC_SAC_LICH_KING, 200.0f, true))
c->AI()->SetData(3, 3);
}
@@ -2062,7 +2062,7 @@ class spell_q12096_q12092_dummy : public SpellScript
{
tree->CastSpell(player, SPELL_CREATE_ITEM_BARK);
tree->AI()->Talk(SAY_WALKER_FRIENDLY, player);
- tree->DespawnOrUnsummon(1000);
+ tree->DespawnOrUnsummon(1s);
}
else if (roll == 0) // enemy version
{
@@ -2114,8 +2114,8 @@ public:
void JustEngagedWith(Unit* who) override
{
- _events.ScheduleEvent(EVENT_HEMORRHAGE, urand(5000, 8000));
- _events.ScheduleEvent(EVENT_KIDNEY_SHOT, urand(12000, 15000));
+ _events.ScheduleEvent(EVENT_HEMORRHAGE, 5s, 8s);
+ _events.ScheduleEvent(EVENT_KIDNEY_SHOT, 12s, 15s);
if (Player* player = who->ToPlayer())
Talk (SAY_AGGRO, player);
@@ -2321,7 +2321,7 @@ class spell_dragonblight_devour_ghoul_periodic : public AuraScript
if (GetUnitOwner() && GetUnitOwner()->ToCreature())
{
GetUnitOwner()->ExitVehicle();
- GetUnitOwner()->ToCreature()->DespawnOrUnsummon(2000);
+ GetUnitOwner()->ToCreature()->DespawnOrUnsummon(2s);
}
}
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index 1084acac01..81ae014d58 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -207,7 +207,7 @@ public:
Mrfloppy->GetMotionMaster()->MoveFollow(creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
if (npc_escortAI* pEscortAI = CAST_AI(npc_emily::npc_emilyAI, (creature->AI())))
- pEscortAI->Start(true, false, player->GetGUID());
+ pEscortAI->Start(true, player->GetGUID());
}
return true;
}
@@ -589,78 +589,78 @@ public:
case EVENT_WOUNDED_MOVE:
if (me->GetPositionY() == -2835.11f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(20000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(20s);
}
if (me->GetPositionY() == -2981.89f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_3, false);
- me->DespawnOrUnsummon(18000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_3, false);
+ me->DespawnOrUnsummon(18s);
}
if (me->GetPositionY() == -2934.44f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_3, false);
- me->DespawnOrUnsummon(9000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_3, false);
+ me->DespawnOrUnsummon(9s);
}
if (me->GetPositionY() == -3020.99f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(22000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(22s);
}
if (me->GetPositionY() == -2964.73f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_2, false);
- me->DespawnOrUnsummon(15000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_2, false);
+ me->DespawnOrUnsummon(15s);
}
if (me->GetPositionY() == -2940.50f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(20000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(20s);
}
if (me->GetPositionY() == -2847.93f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(30000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(30s);
}
if (me->GetPositionY() == -2835.31f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(27000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(27s);
}
if (me->GetPositionY() == -2822.20f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(25000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(25s);
}
if (me->GetPositionY() == -2846.31f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_1, false);
- me->DespawnOrUnsummon(21000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_1, false);
+ me->DespawnOrUnsummon(21s);
}
if (me->GetPositionY() == -2897.23f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_3, false);
- me->DespawnOrUnsummon(15000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_3, false);
+ me->DespawnOrUnsummon(15s);
}
if (me->GetPositionY() == -2886.01f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_3, false);
- me->DespawnOrUnsummon(25000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_3, false);
+ me->DespawnOrUnsummon(25s);
}
if (me->GetPositionY() == -2906.89f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_3, false);
- me->DespawnOrUnsummon(25000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_3, false);
+ me->DespawnOrUnsummon(25s);
}
if (me->GetPositionY() == -3048.94f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_2, false);
- me->DespawnOrUnsummon(30000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_2, false);
+ me->DespawnOrUnsummon(30s);
}
if (me->GetPositionY() == -2961.08f)
{
- me->GetMotionMaster()->MovePath(WOUNDED_MOVE_2, false);
- me->DespawnOrUnsummon(25000);
+ me->GetMotionMaster()->MoveWaypoint(WOUNDED_MOVE_2, false);
+ me->DespawnOrUnsummon(25s);
}
break;
case EVENT_CLEAVE:
@@ -871,7 +871,7 @@ public:
{
if (_following)
if (!me->HasAura(SPELL_FROG_LOVE))
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
_events.Update(diff);
@@ -898,7 +898,7 @@ public:
break;
case EVENT_LAKEFROG_5:
Talk(SAY_MAIDEN_1);
- me->DespawnOrUnsummon(4000);
+ me->DespawnOrUnsummon(4s);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp
index 6022af4bca..ef005b6158 100644
--- a/src/server/scripts/Northrend/zone_howling_fjord.cpp
+++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp
@@ -44,9 +44,9 @@ public:
if (Creature* cow = me->FindNearestCreature(24797, 5.0f, true))
{
me->CastSpell(me, 44460, true);
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
cow->CastSpell(cow, 44460, true);
- cow->DespawnOrUnsummon(10000);
+ cow->DespawnOrUnsummon(10s);
if (me->IsSummon())
if (Unit* owner = me->ToTempSummon()->GetSummonerUnit())
owner->CastSpell(owner, 44463, true);
@@ -191,7 +191,8 @@ public:
if (quest->GetQuestId() == QUEST_TRAIL_OF_FIRE)
{
creature->SetFaction(player->GetTeamId() == TEAM_ALLIANCE ? FACTION_ESCORTEE_A_PASSIVE : FACTION_ESCORTEE_H_PASSIVE);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
+ creature->SetWalk(true);
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, player->GetGUID());
}
return true;
}
@@ -238,7 +239,7 @@ public:
{
case 1:
me->SetReactState(REACT_AGGRESSIVE);
- SetRun(true);
+ me->SetWalk(false);
break;
case 23:
player->GroupEventHappens(QUEST_TRAIL_OF_FIRE, me);
@@ -247,32 +248,32 @@ public:
case 5:
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER, 10.0f))
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
- SetRun(false);
+ me->SetWalk(true);
break;
case 6:
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER, 10.0f))
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
- SetRun(true);
+ me->SetWalk(false);
break;
case 8:
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER, 10.0f))
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
- SetRun(false);
+ me->SetWalk(true);
break;
case 9:
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER, 10.0f))
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
break;
case 10:
- SetRun(true);
+ me->SetWalk(false);
break;
case 13:
- SetRun(false);
+ me->SetWalk(true);
break;
case 14:
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER, 10.0f))
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
- SetRun(true);
+ me->SetWalk(false);
break;
}
}
@@ -309,7 +310,7 @@ public:
return;
me->SetWalk(true);
- Start(false, false, summonerGUID);
+ Start(false, summonerGUID);
}
void WaypointReached(uint32 waypointId) override
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 7db4f389ce..17e0e9589d 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -501,7 +501,7 @@ public:
events.RescheduleEvent(EVENT_SOUL_COAX, 5s);
}
else
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
break;
case EVENT_SOUL_COAX:
Talk(SAY_ARETE_1);
@@ -523,11 +523,8 @@ public:
{
soul->SetCanFly(true);
soul->SetVisible(true);
- Movement::MoveSplineInit init(soul);
- init.MoveTo(soul->GetPositionX(), soul->GetPositionY(), soul->GetPositionZ() + 5.0f);
- init.SetVelocity(1.0f);
- init.Launch();
soul->CastSpell(soul, 64462, true); // Drown
+ soul->GetMotionMaster()->MovePoint(0, soul->GetPositionX(), soul->GetPositionY(), soul->GetPositionZ() + 5.0f, FORCED_MOVEMENT_NONE, 1.f);
}
events.ScheduleEvent(EVENT_SCENE_1, 6s);
break;
@@ -580,14 +577,14 @@ public:
if (Creature* soul = ObjectAccessor::GetCreature(*me, _landgrenSoulGUID))
{
soul->AI()->Talk(SAY_SOUL_4);
- soul->DespawnOrUnsummon(2000);
+ soul->DespawnOrUnsummon(2s);
}
events.ScheduleEvent(EVENT_SCENE_10, 3s);
break;
case EVENT_SCENE_10:
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_QUESTGIVER);
Talk(SAY_ARETE_6);
- me->DespawnOrUnsummon(60000);
+ me->DespawnOrUnsummon(60s);
break;
}
}
@@ -718,7 +715,8 @@ public:
Talk(0);
events.Reset();
summons.DespawnAll();
- Start(false, false);
+ me->SetWalk(true);
+ Start(false);
int8 i = -1;
std::list<Creature*> cList;
@@ -796,7 +794,7 @@ public:
summon->SetUInt32Value(UNIT_NPC_EMOTESTATE, param);
break;
case ACTION_SUMMON_DESPAWN:
- summon->DespawnOrUnsummon(param);
+ summon->DespawnOrUnsummon(Milliseconds(param));
break;
case ACTION_SUMMON_ORIENTATION:
summon->SetFacingTo(param / 100.0f);
@@ -1022,9 +1020,9 @@ public:
{
if (summon->GetEntry() == NPC_TIRION_LICH_KING)
summon->CastSpell(summon, SPELL_LICH_KINGS_FURY, false);
- summon->DespawnOrUnsummon(summon->GetEntry() == NPC_TIRION_LICH_KING ? 10000 : 4000);
+ summon->DespawnOrUnsummon(summon->GetEntry() == NPC_TIRION_LICH_KING ? 10s : 4s);
}
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
break;
}
}
@@ -1257,8 +1255,8 @@ public:
player->CastSpell(player, SPELL_WAITING_FOR_A_BOMBER, true);
player->CastSpell(player, SPELL_FLIGHT_ORDERS, true);
- events.ScheduleEvent(EVENT_START_FLIGHT, 0);
- events.ScheduleEvent(EVENT_TAKE_PASSENGER, 3000);
+ events.ScheduleEvent(EVENT_START_FLIGHT, 0ms);
+ events.ScheduleEvent(EVENT_TAKE_PASSENGER, 3s);
me->SetCanFly(true);
me->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
me->SetSpeed(MOVE_FLIGHT, 0.1f);
@@ -1310,29 +1308,11 @@ public:
turret->HandleSpellClick(owner, 0);
return;
}
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
break;
case EVENT_START_FLIGHT:
{
- WPPath* path = sSmartWaypointMgr->GetPath(me->GetEntry());
- if (!path || path->empty())
- {
- me->DespawnOrUnsummon(1);
- return;
- }
-
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
-
- uint32 wpCounter = 1;
- WPPath::const_iterator itr;
- while ((itr = path->find(wpCounter++)) != path->end())
- {
- WayPoint* wp = itr->second;
- pathPoints.push_back(G3D::Vector3(wp->x, wp->y, wp->z));
- }
-
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(me->GetEntry(), FORCED_MOVEMENT_NONE, PathSource::SMART_WAYPOINT_MGR);
events.ScheduleEvent(EVENT_CHECK_PATH_REGEN_HEALTH_BURN_DAMAGE, 1min);
events.ScheduleEvent(EVENT_SYNCHRONIZE_SHIELDS, 5s);
break;
@@ -1342,7 +1322,7 @@ public:
// Check if path is finished
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() != ESCORT_MOTION_TYPE)
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
return;
}
@@ -1381,7 +1361,7 @@ public:
station->RemoveAurasDueToSpell(SPELL_INFRA_GREEN_SHIELD);
}
if (!playerPresent)
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
events.ScheduleEvent(EVENT_SYNCHRONIZE_SHIELDS, 1s);
break;
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index 100a90a869..329ab98c09 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -605,7 +605,8 @@ public:
creature->GetMotionMaster()->MoveJumpTo(0, 0.4f, 0.4f);
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
- pEscortAI->Start(false, false, player->GetGUID());
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID());
creature->AI()->Talk(SAY_WP_1);
}
}
@@ -1147,17 +1148,7 @@ public:
{
if (apply && passenger->IsPlayer())
{
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
-
- WaypointPath const* i_path = sWaypointMgr->GetPath(NPC_PLANE);
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
-
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(NPC_PLANE, FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
}
}
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index d43a29a5e9..5a50bee8a3 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -57,7 +57,7 @@ struct npc_frosthound : public npc_escortAI
{
me->SetFaction(who->GetFaction());
me->CastSpell(me, SPELL_SUMMON_PURSUERS_PERIODIC, true);
- Start(false, true, who->GetGUID());
+ Start(false, who->GetGUID());
Talk(TALK_EMOTE_FROSTHOUND_SNIFF, me);
}
}
@@ -159,7 +159,7 @@ public:
me->RemoveAllAurasExceptType(SPELL_AURA_MECHANIC_IMMUNITY);
Talk(1);
caster->ToPlayer()->KilledMonsterCredit(me->GetEntry());
- me->DespawnOrUnsummon(8000);
+ me->DespawnOrUnsummon(8s);
me->GetMotionMaster()->MoveJump(8721.94f, -1955, 963, 70.0f, 30.0f);
}
}
@@ -246,7 +246,7 @@ public:
void RollPath()
{
me->SetEntry(NPC_TIME_LOST_PROTO_DRAKE);
- Start(true, true, ObjectGuid::Empty, 0, false, true, true);
+ Start(true, ObjectGuid::Empty, 0, false, true, true);
SetNextWaypoint(urand(0, 250), true);
me->UpdateEntry(roll_chance_i(25) ? NPC_TIME_LOST_PROTO_DRAKE : NPC_VYRAGOSA, 0, false);
}
@@ -467,17 +467,7 @@ public:
if (startPath)
{
startPath = false;
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
-
- WaypointPath const* i_path = sWaypointMgr->GetPath(me->GetWaypointPath());
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
-
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(me->GetWaypointPath(), FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
}
if (setCharm)
{
@@ -849,17 +839,7 @@ public:
{
Talk(TEXT_EMOTE, passenger);
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
-
- WaypointPath const* i_path = sWaypointMgr->GetPath(NPC_DRAKE);
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
-
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(NPC_DRAKE, FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
}
}
else
@@ -912,7 +892,10 @@ public:
if (who->IsPlayer())
{
if (apply)
- Start(false, true, who->GetGUID());
+ {
+ me->SetWalk(false);
+ Start(false, who->GetGUID());
+ }
}
}
@@ -970,7 +953,7 @@ public:
};
if (who->IsPlayer())
- who->m_Events.AddEvent(new DelayedTransportPositionOffsets(who), who->m_Events.CalculateTime(500));
+ who->m_Events.AddEventAtOffset(new DelayedTransportPositionOffsets(who), 500ms);
return;
}
@@ -1084,15 +1067,7 @@ public:
{
if (apply)
{
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
- WaypointPath const* i_path = sWaypointMgr->GetPath(me->GetEntry() * 100);
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
+ me->GetMotionMaster()->MovePath(me->GetEntry() * 100, FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SetSpeed(MOVE_RUN, 6.0f);
@@ -1149,13 +1124,13 @@ public:
}
else
{
- me->DespawnOrUnsummon(100);
+ me->DespawnOrUnsummon(100ms);
}
break;
case 24:
if (me->GetEntry() == NPC_PROPELLED_DEVICE_1)
{
- me->DespawnOrUnsummon(100);
+ me->DespawnOrUnsummon(100ms);
}
break;
default:
diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp
index cc42869104..276683cd62 100644
--- a/src/server/scripts/Northrend/zone_wintergrasp.cpp
+++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp
@@ -184,7 +184,7 @@ public:
data << spellId;
data << uint8(SPELL_FAILED_CUSTOM_ERROR);
data << uint32(SPELL_CUSTOM_ERROR_CANT_BUILD_MORE_VEHICLES);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
}
return true;
}
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 8b36a31062..3a91af290b 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -591,7 +591,7 @@ public:
// pointer check not needed
DoCast(rageclaw, SPELL_FREE_RAGECLAW, true);
_rageclawGUID.Clear();
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void SpellHit(Unit* caster, SpellInfo const* spell) override
@@ -660,7 +660,7 @@ public:
DoCast(me, SPELL_UNSHACKLED, true);
Talk(SAY_RAGECLAW);
me->GetMotionMaster()->MoveRandom(10);
- me->DespawnOrUnsummon(10000);
+ me->DespawnOrUnsummon(10s);
}
}
};
@@ -755,7 +755,7 @@ public:
case EVENT_RECRUIT_2:
me->SetWalk(true);
me->GetMotionMaster()->MovePoint(0, me->GetPositionX() + (cos(_heading) * 10), me->GetPositionY() + (std::sin(_heading) * 10), me->GetPositionZ());
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
default:
break;
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
index 3b7a60e266..df5dd8c7d3 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
@@ -241,7 +241,7 @@ struct npc_stolen_soul : public ScriptedAI
});
}
- void SetGUID(ObjectGuid guid, int32 /*id*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
{
_targetGuid = guid;
}
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
index a9afd481c0..155dc6cb37 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
@@ -66,7 +66,7 @@ struct boss_ambassador_hellmaw : public BossAI
}
else
{
- me->GetMotionMaster()->MovePath(PATH_ID_START, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_ID_START, false);
}
}
@@ -88,7 +88,7 @@ struct boss_ambassador_hellmaw : public BossAI
DoPlaySoundToSet(me, SOUND_INTRO);
isBanished = false;
me->SetImmuneToAll(false);
- me->GetMotionMaster()->MovePath(PATH_ID_START, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_ID_START, false);
}
void JustEngagedWith(Unit*) override
@@ -142,7 +142,7 @@ struct boss_ambassador_hellmaw : public BossAI
{
me->m_Events.AddEventAtOffset([this]()
{
- me->GetMotionMaster()->MovePath(PATH_ID_PATHING, true);
+ me->GetMotionMaster()->MoveWaypoint(PATH_ID_PATHING, true);
}, 20s);
}
}
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
index 1717a518d0..76c3d86efd 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
@@ -111,7 +111,7 @@ struct boss_grandmaster_vorpil : public BossAI
case 8:
return 7200ms;
case 9:
- return 6000ms;
+ return 6s;
default:
return 4800ms;
}
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
index fcf8f38c5c..a4c40812fa 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
@@ -114,7 +114,7 @@ struct boss_murmur : public BossAI
return true;
}
- void SetGUID(ObjectGuid guid, int32 index) override
+ void SetGUID(ObjectGuid const& guid, int32 index) override
{
if (index == GUID_MURMUR_NPCS)
{
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index da92628e0f..c1c9723055 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -507,7 +507,7 @@ struct boss_illidan_stormrage : public BossAI
Talk(SAY_ILLIDAN_EYE_BLAST);
me->SummonCreature(NPC_ILLIDAN_DB_TARGET, eyeBeamPos[beamPosId], TEMPSUMMON_TIMED_DESPAWN, 30000);
if (Creature* trigger = summons.GetCreatureWithEntry(NPC_ILLIDAN_DB_TARGET))
- trigger->GetMotionMaster()->MovePoint(0, eyeBeamPos[beamPosId + MAX_EYE_BEAM_POS], false, true);
+ trigger->GetMotionMaster()->MovePoint(0, eyeBeamPos[beamPosId + MAX_EYE_BEAM_POS], FORCED_MOVEMENT_NONE, 0.f, false, true);
// Reposition
me->m_Events.AddEventAtOffset([&] {
@@ -515,7 +515,7 @@ struct boss_illidan_stormrage : public BossAI
me->InterruptNonMeleeSpells(false);
me->SetControlled(false, UNIT_STATE_ROOT);
CycleBeamPos(beamPosId);
- me->GetMotionMaster()->MovePoint(POINT_ILLIDAN_HOVER, airHoverPos[beamPosId], false, true);
+ me->GetMotionMaster()->MovePoint(POINT_ILLIDAN_HOVER, airHoverPos[beamPosId], FORCED_MOVEMENT_NONE, 0.f, false, true);
}, 20s, GROUP_PHASE_FLYING);
});
// Check for Phase Transition
@@ -794,7 +794,7 @@ struct npc_akama_illidan : public ScriptedAI
if (instance->GetBossState(DATA_AKAMA_ILLIDAN) != DONE)
{
- me->GetMotionMaster()->MovePath(PATH_AKAMA_ILLIDARI_COUNCIL_2, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_AKAMA_ILLIDARI_COUNCIL_2, false);
}
else
{
@@ -811,7 +811,7 @@ struct npc_akama_illidan : public ScriptedAI
{
me->NearTeleportTo(AkamaIllidariCouncilTeleport);
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- me->GetMotionMaster()->MovePath(PATH_AKAMA_ILLIDARI_COUNCIL_1, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_AKAMA_ILLIDARI_COUNCIL_1, false);
}
break;
case ACTION_AKAMA_MINIONS:
@@ -904,7 +904,7 @@ struct npc_akama_illidan : public ScriptedAI
else if (type == WAYPOINT_MOTION_TYPE)
{
if (me->GetCurrentWaypointID() == PATH_AKAMA_MINIONS)
- if (id == 2)
+ if (id == 3)
DoCastSelf(SPELL_AKAMA_TELEPORT);
}
}
@@ -923,7 +923,7 @@ struct npc_akama_illidan : public ScriptedAI
me->m_Events.AddEventAtOffset([&] {
Talk(SAY_AKAMA_COUNCIL_2);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- }, 8000ms); // 7800ms
+ }, 8s); // 7800ms
}
break;
// Reached Door
@@ -974,7 +974,7 @@ struct npc_akama_illidan : public ScriptedAI
Talk(SAY_AKAMA_SALUTE);
}, 56955ms); // 6275ms
me->m_Events.AddEventAtOffset([&] {
- me->GetMotionMaster()->MovePath(PATH_AKAMA_ILLIDARI_COUNCIL_3, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_AKAMA_ILLIDARI_COUNCIL_3, false);
}, 64030ms); // 7075ms
}
break;
@@ -1013,7 +1013,7 @@ struct npc_akama_illidan : public ScriptedAI
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
}, 9530ms); // 2830ms
me->m_Events.AddEventAtOffset([&] {
- me->GetMotionMaster()->MovePath(PATH_AKAMA_MINIONS, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_AKAMA_MINIONS, false);
}, 14400ms); // 4870ms
}
}
@@ -1436,7 +1436,7 @@ class spell_illidan_parasitic_shadowfiend_trigger : public SpellScript
{
PreventHitDefaultEffect(effIndex);
if (Creature* target = GetHitCreature())
- target->DespawnOrUnsummon(1);
+ target->DespawnOrUnsummon(1ms);
}
void Register() override
@@ -1692,7 +1692,7 @@ class spell_illidan_cage_trap : public SpellScript
if (GetCaster()->GetExactDist2d(target) < 4.0f)
{
target->AI()->DoAction(ACTION_ILLIDAN_CAGED);
- GetCaster()->ToCreature()->DespawnOrUnsummon(1);
+ GetCaster()->ToCreature()->DespawnOrUnsummon(1ms);
if (GameObject* gobject = GetCaster()->FindNearestGameObject(GO_CAGE_TRAP, 10.0f))
gobject->SetLootState(GO_JUST_DEACTIVATED);
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
index 8c22b8d04e..880a39615d 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
@@ -262,7 +262,7 @@ struct boss_illidari_council_memberAI : public ScriptedAI
void KilledUnit(Unit*) override
{
- if (events.GetNextEventTime(EVENT_KILL_TALK) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_KILL_TALK))
{
Talk(SAY_COUNCIL_SLAY);
events.ScheduleEvent(EVENT_KILL_TALK, 6s);
@@ -582,7 +582,7 @@ struct boss_veras_darkshadow : public boss_illidari_council_memberAI
break;
}
- if (events.GetNextEventTime(EVENT_SPELL_VANISH_OUT) == 0)
+ if (!events.HasTimeUntilEvent(EVENT_SPELL_VANISH_OUT))
DoMeleeAttackIfReady();
}
};
@@ -771,7 +771,7 @@ class spell_illidari_council_deadly_strike_aura : public AuraScript
if (Unit* target = GetUnitOwner()->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
{
GetUnitOwner()->CastSpell(target, GetSpellInfo()->Effects[effect->GetEffIndex()].TriggerSpell, true);
- GetUnitOwner()->m_Events.AddEvent(new VerasEnvenom(*GetUnitOwner(), target->GetGUID()), GetUnitOwner()->m_Events.CalculateTime(urand(1500, 3500)));
+ GetUnitOwner()->m_Events.AddEventAtOffset(new VerasEnvenom(*GetUnitOwner(), target->GetGUID()), randtime(1500ms, 3500ms));
}
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
index 79d68ebfa0..9710a8382b 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
@@ -107,7 +107,7 @@ public:
{
summoner->GetAI()->DoAction(_action);
_owner.SetStandState(UNIT_STAND_STATE_SUBMERGED);
- _owner.DespawnOrUnsummon(200);
+ _owner.DespawnOrUnsummon(200ms);
}
return true;
}
@@ -284,7 +284,7 @@ public:
if (type != POINT_MOTION_TYPE || id != POINT_GO_BACK)
return;
- me->m_Events.AddEvent(new SuckBackEvent(*me, ACTION_ESSENCE_OF_SUFFERING), me->m_Events.CalculateTime(1500));
+ me->m_Events.AddEventAtOffset(new SuckBackEvent(*me, ACTION_ESSENCE_OF_SUFFERING), 1500ms);
me->SetTarget();
me->SetFacingTo(M_PI / 2.0f);
}
@@ -301,7 +301,7 @@ public:
Talk(SUFF_SAY_RECAP);
me->SetReactState(REACT_PASSIVE);
me->GetMotionMaster()->Clear();
- me->GetMotionMaster()->MovePoint(POINT_GO_BACK, me->GetHomePosition(), false);
+ me->GetMotionMaster()->MovePoint(POINT_GO_BACK, me->GetHomePosition(), FORCED_MOVEMENT_NONE, 0.f, false);
scheduler.CancelAll();
}
}
@@ -392,7 +392,7 @@ public:
if (type != POINT_MOTION_TYPE || id != POINT_GO_BACK)
return;
- me->m_Events.AddEvent(new SuckBackEvent(*me, ACTION_ESSENCE_OF_DESIRE), me->m_Events.CalculateTime(1500));
+ me->m_Events.AddEventAtOffset(new SuckBackEvent(*me, ACTION_ESSENCE_OF_DESIRE), 1500ms);
me->SetTarget();
me->SetFacingTo(M_PI / 2.0f);
}
@@ -408,7 +408,7 @@ public:
Talk(DESI_SAY_RECAP);
me->SetReactState(REACT_PASSIVE);
me->GetMotionMaster()->Clear();
- me->GetMotionMaster()->MovePoint(POINT_GO_BACK, me->GetHomePosition(), false);
+ me->GetMotionMaster()->MovePoint(POINT_GO_BACK, me->GetHomePosition(), FORCED_MOVEMENT_NONE, 0.f, false);
scheduler.CancelAll();
}
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
index 1cc778b25a..a8c18e4aa8 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
@@ -251,7 +251,7 @@ struct npc_akama_shade : public ScriptedAI
{
Talk(SAY_BROKEN_FREE_2);
}, 3);
- ScheduleUniqueTimedEvent(52000ms, [&]
+ ScheduleUniqueTimedEvent(52s, [&]
{
std::list<Creature*> brokens;
me->GetCreatureListWithEntryInGrid(brokens, NPC_ASHTONGUE_BROKEN, 40.0f);
@@ -391,7 +391,7 @@ struct npc_creature_generator_akama : public ScriptedAI
void SummonedCreatureDies(Creature* summon, Unit*) override
{
spawnCounter--;
- summon->DespawnOrUnsummon(10000);
+ summon->DespawnOrUnsummon(10s);
summons.Despawn(summon);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
index 8ec98b72fb..319e588f72 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
@@ -139,7 +139,7 @@ struct boss_fathomlord_karathress : public BossAI
if (Creature* olum = instance->GetCreature(DATA_SEER_OLUM))
{
olum->SetWalk(true);
- olum->GetMotionMaster()->MovePoint(0, olumWalk, false);
+ olum->GetMotionMaster()->MovePoint(0, olumWalk, FORCED_MOVEMENT_NONE, 0.f, false);
olum->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
olum->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
}
@@ -269,7 +269,7 @@ struct boss_fathomguard_sharkkis : public ScriptedAI
{
me->CastSpell(karathress, SPELL_POWER_OF_SHARKKIS, true);
karathress->AI()->Talk(SAY_GAIN_ABILITY2);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
@@ -452,7 +452,7 @@ struct boss_fathomguard_tidalvess : public ScriptedAI
{
me->CastSpell(karathress, SPELL_POWER_OF_TIDALVESS, true);
karathress->AI()->Talk(SAY_GAIN_ABILITY1);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
@@ -546,7 +546,7 @@ struct boss_fathomguard_caribdis : public ScriptedAI
{
me->CastSpell(karathress, SPELL_POWER_OF_CARIBDIS, true);
karathress->AI()->Talk(SAY_GAIN_ABILITY3);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp
index 060c627ee5..93d497d6eb 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp
@@ -81,8 +81,8 @@ enum Misc
enum WaterElementalPathIds
{
- PATH_CENTER = 5,
- PATH_END = 12
+ PATH_CENTER = 6,
+ PATH_END = 13
};
struct boss_hydross_the_unstable : public BossAI
@@ -273,7 +273,7 @@ struct boss_hydross_the_unstable : public BossAI
else if (summon->GetEntry() == NPC_TAINTED_HYDROSS_ELEMENTAL)
{
summon->setActive(true);
- summon->GetMotionMaster()->MovePath(summon->GetEntry() * 10, false);
+ summon->GetMotionMaster()->MoveWaypoint(summon->GetEntry() * 10, false);
}
else
{
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp
index d631825a7f..da30b3d031 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp
@@ -93,7 +93,7 @@ struct boss_lady_vashj : public BossAI
scheduler.CancelAll();
me->CastStop();
me->SetReactState(REACT_PASSIVE);
- me->GetMotionMaster()->MovePoint(POINT_HOME, me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY(), me->GetHomePosition().GetPositionZ(), true, true);
+ me->GetMotionMaster()->MovePoint(POINT_HOME, me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY(), me->GetHomePosition().GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, true, true);
});
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index 08bdae70af..9d25ba77d1 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -88,7 +88,7 @@ struct boss_the_lurker_below : public BossAI
pool->SetRespawnTime(10);
pool->SaveRespawnTime(10);
}
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*type*/, SpellSchoolMask /*school*/) override
@@ -129,7 +129,7 @@ struct boss_the_lurker_below : public BossAI
{
BossAI::JustEngagedWith(who);
- SchedulerPhaseOne(38800ms, 91000ms);
+ SchedulerPhaseOne(38800ms, 91s);
}
void SummonedCreatureDies(Creature* /*summon*/, Unit* /*killer*/) override
@@ -191,7 +191,7 @@ struct boss_the_lurker_below : public BossAI
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
scheduler.CancelAll();
- SchedulerPhaseOne(10000ms, 90750ms);
+ SchedulerPhaseOne(10s, 90750ms);
});
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
index 1551d7c818..15b91e685e 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
@@ -234,7 +234,7 @@ class spell_serpentshrine_cavern_serpentshrine_parasite_trigger : public SpellSc
{
PreventHitDefaultEffect(effIndex);
if (Creature* target = GetHitCreature())
- target->DespawnOrUnsummon(1);
+ target->DespawnOrUnsummon(1ms);
}
void Register() override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp
index 95bba3d499..9f837911cd 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp
@@ -188,7 +188,7 @@ struct boss_ahune : public BossAI
{
BossAI::JustEngagedWith(who);
events.ScheduleEvent(EVENT_INITIAL_EMERGE, 4ms);
- events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3000);
+ events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3s);
}
void EnterEvadeMode(EvadeReason /*why*/) override
@@ -318,7 +318,7 @@ struct npc_frozen_core : public ScriptedAI
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetImmuneToPC(false);
me->RemoveAurasDueToSpell(SPELL_ICE_SPEAR_CONTROL_AURA);
- _events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3000, 0, PHASE_TWO);
+ _events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3s, 0, PHASE_TWO);
}
else if (action == ACTION_AHUNE_RESURFACE)
{
@@ -342,7 +342,7 @@ struct npc_frozen_core : public ScriptedAI
DoCast(ahune, SPELL_SYNCH_HEALTH, true);
else
DoCastSelf(SPELL_SUICIDE);
- _events.Repeat(3000ms, 3000ms);
+ _events.Repeat(3s, 3s);
break;
default:
break;
@@ -394,11 +394,11 @@ struct npc_ahune_bunny : public ScriptedAI
_submerged = false;
_events.Reset();
_events.SetPhase(PHASE_ONE);
- _events.ScheduleEvent(EVENT_SUMMON_AHUNE, 10000);
- _events.ScheduleEvent(EVENT_START_LOOKING_FOR_OPENING, 14000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_SUMMON_COLDWEAVE, 22000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_SUMMON_HAILSTONE, 14000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_AHUNE_PHASE_TWO, 108000, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_AHUNE, 10s);
+ _events.ScheduleEvent(EVENT_START_LOOKING_FOR_OPENING, 14s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_COLDWEAVE, 22s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_HAILSTONE, 14s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_AHUNE_PHASE_TWO, 108s, 0, PHASE_ONE);
}
else if (action == ACTION_STOP_EVENT)
{
@@ -430,9 +430,9 @@ struct npc_ahune_bunny : public ScriptedAI
case EVENT_SUMMON_COLDWEAVE:
DoCast(SPELL_SUMMON_COLDWEAVE);
DoCast(SPELL_SUMMON_COLDWEAVE);
- _events.Repeat(8000ms);
+ _events.Repeat(8s);
if (_submerged)
- _events.ScheduleEvent(EVENT_SUMMON_FROSTWIND, 4000, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_FROSTWIND, 4s, 0, PHASE_ONE);
break;
case EVENT_SUMMON_FROSTWIND:
DoCast(SPELL_SUMMON_FROSTWIND);
@@ -458,17 +458,17 @@ struct npc_ahune_bunny : public ScriptedAI
ahune->AI()->DoAction(ACTION_AHUNE_RETREAT);
_events.Reset();
_events.SetPhase(PHASE_TWO);
- _events.ScheduleEvent(EVENT_CLOSE_OPENING, 25000, 0, PHASE_TWO);
- _events.ScheduleEvent(EVENT_AHUNE_PHASE_ONE, 35000, 0, PHASE_TWO);
+ _events.ScheduleEvent(EVENT_CLOSE_OPENING, 25s, 0, PHASE_TWO);
+ _events.ScheduleEvent(EVENT_AHUNE_PHASE_ONE, 35s, 0, PHASE_TWO);
break;
case EVENT_AHUNE_PHASE_ONE:
_submerged = true;
_events.Reset();
_events.SetPhase(PHASE_ONE);
- _events.ScheduleEvent(EVENT_SUMMON_COLDWEAVE, 8000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_SUMMON_HAILSTONE, 5000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_START_LOOKING_FOR_OPENING, 5000, 0, PHASE_ONE);
- _events.ScheduleEvent(EVENT_AHUNE_PHASE_TWO, 100000, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_COLDWEAVE, 8s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_SUMMON_HAILSTONE, 5s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_START_LOOKING_FOR_OPENING, 5s, 0, PHASE_ONE);
+ _events.ScheduleEvent(EVENT_AHUNE_PHASE_TWO, 100s, 0, PHASE_ONE);
break;
default:
break;
@@ -534,7 +534,7 @@ struct npc_earthen_ring_flamecaller : public ScriptedAI
switch (spellInfo->Id)
{
case SPELL_SHAMANS_LOOK_FOR_OPENING:
- _events.ScheduleEvent(EVENT_LOOKFOROPENING_0, 17000);
+ _events.ScheduleEvent(EVENT_LOOKFOROPENING_0, 17s);
break;
case SPELL_FOUND_OPENING:
Talk(EMOTE_RETREAT);
@@ -560,15 +560,15 @@ struct npc_earthen_ring_flamecaller : public ScriptedAI
{
case EVENT_LOOKFOROPENING_0:
LookOpening(true, 0);
- _events.ScheduleEvent(EVENT_LOOKFOROPENING_1, 26000);
+ _events.ScheduleEvent(EVENT_LOOKFOROPENING_1, 26s);
break;
case EVENT_LOOKFOROPENING_1:
LookOpening(true, 1);
- _events.ScheduleEvent(EVENT_LOOKFOROPENING_2, 25000);
+ _events.ScheduleEvent(EVENT_LOOKFOROPENING_2, 25s);
break;
case EVENT_LOOKFOROPENING_2:
LookOpening(true, 2);
- _events.ScheduleEvent(EVENT_STOP_LOOKING_FOR_OPENING, 27000);
+ _events.ScheduleEvent(EVENT_STOP_LOOKING_FOR_OPENING, 27s);
break;
case EVENT_STOP_LOOKING_FOR_OPENING:
LookOpening(false, _mySpot);
@@ -619,7 +619,7 @@ struct npc_ahune_ice_spear_bunny : public ScriptedAI
_scheduler.Schedule(2500ms, [this](TaskContext /*task*/)
{
DoCastSelf(SPELL_ICE_SPEAR_DELAY);
- me->DespawnOrUnsummon(3500);
+ me->DespawnOrUnsummon(3500ms);
});
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_rokmar_the_crackler.cpp b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_rokmar_the_crackler.cpp
index 1486bf0bd6..f9dca0c401 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_rokmar_the_crackler.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/boss_rokmar_the_crackler.cpp
@@ -23,8 +23,7 @@ enum Spells
{
SPELL_ENSNARING_MOSS = 31948,
SPELL_FRENZY = 34970,
- SPELL_GRIEVOUS_WOUND_N = 31956,
- SPELL_GRIEVOUS_WOUND_H = 38801,
+ SPELL_GRIEVOUS_WOUND = 31956,
SPELL_WATER_SPIT = 35008
};
@@ -53,7 +52,7 @@ struct boss_rokmar_the_crackler : public BossAI
scheduler.Schedule(8s, [this] (TaskContext context)
{
- DoCastVictim(DUNGEON_MODE(SPELL_GRIEVOUS_WOUND_N, SPELL_GRIEVOUS_WOUND_H));
+ DoCastVictim(SPELL_GRIEVOUS_WOUND);
context.Repeat(20700ms);
}).Schedule(15300ms, [this](TaskContext context)
{
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/the_slave_pens.cpp b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/the_slave_pens.cpp
index 741a8e78f5..c7e4525c8f 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/the_slave_pens.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/the_slave_pens.cpp
@@ -31,7 +31,7 @@ public:
{
if (Creature* quagmirran = instance->GetCreature(DATA_QUAGMIRRAN))
{
- quagmirran->GetMotionMaster()->MovePath(quagmirran->GetEntry() * 100, true);
+ quagmirran->GetMotionMaster()->MoveWaypoint(quagmirran->GetEntry() * 100, true);
}
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_ghazan.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_ghazan.cpp
index 0510e6b91e..5a9fe60fd2 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_ghazan.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_ghazan.cpp
@@ -86,13 +86,13 @@ struct boss_ghazan : public BossAI
if (type == ACTION_MOVE_TO_PLATFORM && !_movedToPlatform)
{
_movedToPlatform = true;
- me->GetMotionMaster()->MovePath((me->GetSpawnId() * 10) + 1, false);
+ me->GetMotionMaster()->MoveWaypoint((me->GetSpawnId() * 10) + 1, false);
}
}
void MovementInform(uint32 type, uint32 pointId) override
{
- if (!_movedToPlatform || type != WAYPOINT_MOTION_TYPE || pointId != 19)
+ if (!_movedToPlatform || type != WAYPOINT_MOTION_TYPE || pointId != 20)
{
return;
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp
index 73beb4eb0b..a8b98b64c0 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp
@@ -123,7 +123,7 @@ struct npc_underbog_mushroom : public ScriptedAI
context.Schedule(4s, [this](TaskContext /*context*/)
{
me->RemoveAurasDueToSpell(SPELL_GROW);
- me->DespawnOrUnsummon(2000);
+ me->DespawnOrUnsummon(2s);
});
}
else
diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
index dfbdf0d915..355f2abad4 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
@@ -68,7 +68,7 @@ struct boss_gruul : public BossAI
{
_Reset();
_recentlySpoken = false;
- _caveInTimer = 29000ms;
+ _caveInTimer = 29s;
}
void JustEngagedWith(Unit* /*who*/) override
@@ -84,7 +84,7 @@ struct boss_gruul : public BossAI
}).Schedule(_caveInTimer, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_CAVE_IN);
- if (_caveInTimer > 4000ms)
+ if (_caveInTimer > 4s)
{
_caveInTimer = _caveInTimer - 1500ms;
}
diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
index c6624521f4..c7397da3e2 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
@@ -146,7 +146,7 @@ struct boss_high_king_maulgar : public BossAI
{
DoCastVictim(SPELL_MIGHTY_BLOW);
context.Repeat(16200ms, 19s);
- }).Schedule(67000ms, [this](TaskContext context)
+ }).Schedule(67s, [this](TaskContext context)
{
scheduler.DelayAll(15s);
DoCastSelf(SPELL_WHIRLWIND);
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
index 26a0c780b7..864d18a9a1 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
@@ -102,7 +102,7 @@ struct boss_vazruden_the_herald : public BossAI
if (summon->GetEntry() == NPC_HELLFIRE_SENTRY && summons.size() == 0)
{
Talk(SAY_INTRO);
- me->GetMotionMaster()->MovePoint(POINT_MIDDLE, -1406.5f, 1746.5f, 85.0f, false);
+ me->GetMotionMaster()->MovePoint(POINT_MIDDLE, -1406.5f, 1746.5f, 85.0f, FORCED_MOVEMENT_NONE, 0.f, false);
_JustEngagedWith();
}
else if (summons.size() == 0)
@@ -155,7 +155,7 @@ struct boss_nazan : public ScriptedAI
void EnterEvadeMode(EvadeReason /*why*/) override
{
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void JustEngagedWith(Unit*) override
@@ -163,7 +163,7 @@ struct boss_nazan : public ScriptedAI
_scheduler.CancelAll();
_scheduler.Schedule(5ms, GROUP_PHASE_1, [this](TaskContext context)
{
- me->GetMotionMaster()->MovePoint(POINT_FLIGHT, NazanPos[urand(0, 2)], false);
+ me->GetMotionMaster()->MovePoint(POINT_FLIGHT, NazanPos[urand(0, 2)], FORCED_MOVEMENT_NONE, 0.f, false);
_scheduler.DelayAll(7s);
context.Repeat(30s);
}).Schedule(5s, GROUP_PHASE_1, [this](TaskContext context)
@@ -193,7 +193,7 @@ struct boss_nazan : public ScriptedAI
Talk(EMOTE_NAZAN);
me->SetReactState(REACT_PASSIVE);
me->InterruptNonMeleeSpells(true);
- me->GetMotionMaster()->MovePoint(POINT_MIDDLE, -1406.5f, 1746.5f, 81.2f, false);
+ me->GetMotionMaster()->MovePoint(POINT_MIDDLE, -1406.5f, 1746.5f, 81.2f, FORCED_MOVEMENT_NONE, 0.f, false);
}
}
@@ -262,7 +262,7 @@ struct boss_vazruden : public ScriptedAI
void EnterEvadeMode(EvadeReason /*why*/) override
{
Talk(SAY_WIPE);
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
}
void JustEngagedWith(Unit*) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index e37234663f..df645e4ecd 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -284,7 +284,7 @@ struct npc_target_trigger : public ScriptedAI
_scheduler.Schedule(5s, [this](TaskContext /*context*/)
{
DoCastSelf(SPELL_DEBRIS_DAMAGE);
- me->DespawnOrUnsummon(6000);
+ me->DespawnOrUnsummon(6s);
});
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_porung.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_porung.cpp
index 77982ad4e7..457dc69e7c 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_porung.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_porung.cpp
@@ -43,7 +43,7 @@ enum Says
enum Misc
{
- POINT_SCOUT_WP_END = 3,
+ POINT_SCOUT_WP_END = 4,
SET_DATA_ARBITRARY_VALUE = 1,
SET_DATA_ENCOUNTER_DONE = 2
@@ -100,7 +100,7 @@ struct npc_shattered_hand_scout : public ScriptedAI
DoCastSelf(SPELL_CLEAR_ALL);
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
Talk(SAY_INVADERS_BREACHED);
- me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
+ me->GetMotionMaster()->MoveWaypoint(me->GetEntry() * 10, false);
_firstZealots.clear();
std::list<Creature*> creatureList;
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index dab0d05907..327664c2bd 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -140,7 +140,7 @@ struct boss_alar : public BossAI
_noQuillTimes = 0;
_platformRoll = RAND(0, 1);
_platform = _platformRoll ? 0 : 3;
- me->GetMotionMaster()->MovePoint(POINT_QUILL, alarPoints[POINT_QUILL], false, true);
+ me->GetMotionMaster()->MovePoint(POINT_QUILL, alarPoints[POINT_QUILL], FORCED_MOVEMENT_NONE, 0.f, false, true);
_platformMoveRepeatTimer = 16s;
}
else
@@ -150,7 +150,7 @@ struct boss_alar : public BossAI
me->SetOrientation(alarPoints[_platform].GetOrientation());
SpawnPhoenixes(1, me);
}
- me->GetMotionMaster()->MovePoint(POINT_PLATFORM, alarPoints[_platform], false, true);
+ me->GetMotionMaster()->MovePoint(POINT_PLATFORM, alarPoints[_platform], FORCED_MOVEMENT_NONE, 0.f, false, true);
_platform = (_platform+1)%4;
_platformMoveRepeatTimer = 30s;
}
@@ -258,7 +258,7 @@ struct boss_alar : public BossAI
}, 30s);
ScheduleTimedEvent(34s, [&]
{
- me->GetMotionMaster()->MovePoint(POINT_DIVE, alarPoints[POINT_DIVE], false, true);
+ me->GetMotionMaster()->MovePoint(POINT_DIVE, alarPoints[POINT_DIVE], FORCED_MOVEMENT_NONE, 0.f, false, true);
scheduler.DelayAll(15s);
}, 57s);
@@ -355,17 +355,7 @@ struct boss_alar : public BossAI
void ConstructWaypointsAndMove()
{
me->StopMoving();
- if (WaypointPath const* i_path = sWaypointMgr->GetPath(me->GetWaypointPath()))
- {
- Movement::PointsArray pathPoints;
- pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
- for (uint8 i = 0; i < i_path->size(); ++i)
- {
- WaypointData const* node = i_path->at(i);
- pathPoints.push_back(G3D::Vector3(node->x, node->y, node->z));
- }
- me->GetMotionMaster()->MoveSplinePath(&pathPoints);
- }
+ me->GetMotionMaster()->MovePath(me->GetWaypointPath(), FORCED_MOVEMENT_NONE, PathSource::WAYPOINT_MGR);
}
void UpdateAI(uint32 diff) override
@@ -452,10 +442,10 @@ class spell_alar_flame_quills : public AuraScript
// 24 spells in total
for (uint8 i = 0; i < 21; ++i)
- GetUnitOwner()->m_Events.AddEvent(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_1 + i), GetUnitOwner()->m_Events.CalculateTime(i * 40));
- GetUnitOwner()->m_Events.AddEvent(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 0), GetUnitOwner()->m_Events.CalculateTime(22 * 40));
- GetUnitOwner()->m_Events.AddEvent(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 1), GetUnitOwner()->m_Events.CalculateTime(23 * 40));
- GetUnitOwner()->m_Events.AddEvent(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 2), GetUnitOwner()->m_Events.CalculateTime(24 * 40));
+ GetUnitOwner()->m_Events.AddEventAtOffset(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_1 + i), Milliseconds(i * 40));
+ GetUnitOwner()->m_Events.AddEventAtOffset(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 0), Milliseconds(22 * 40));
+ GetUnitOwner()->m_Events.AddEventAtOffset(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 1), Milliseconds(23 * 40));
+ GetUnitOwner()->m_Events.AddEventAtOffset(new CastQuill(GetUnitOwner(), SPELL_QUILL_MISSILE_2 + 2), Milliseconds(24 * 40));
}
void Register() override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index 117712e48f..0280250238 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -269,7 +269,7 @@ struct boss_kaelthas : public BossAI
void AttackStart(Unit* who) override
{
- if (_phase == PHASE_FINAL /* check is scheduled&& events.GetNextEventTime(EVENT_GRAVITY_LAPSE_END) == 0*/)
+ if (_phase == PHASE_FINAL /* check is scheduled&& !events.HasTimeUntilEvent(EVENT_GRAVITY_LAPSE_END)*/)
BossAI::AttackStart(who);
}
@@ -347,7 +347,7 @@ struct boss_kaelthas : public BossAI
}
else if (point == POINT_AIR)
{
- me->SetDisableGravity(true, false, false); // updating AnimationTier will break drowning animation later
+ me->SetDisableGravity(true); // updating AnimationTier will break drowning animation later
}
else if (point == POINT_START_LAST_PHASE)
{
@@ -364,11 +364,11 @@ struct boss_kaelthas : public BossAI
{
DoCastVictim(SPELL_FIREBALL);
}, 2400ms, 7500ms);
- ScheduleTimedEvent(10000ms, [&]
+ ScheduleTimedEvent(10s, [&]
{
DoCastRandomTarget(SPELL_FLAME_STRIKE, 0, 100.0f);
}, 30250ms, 50650ms);
- ScheduleTimedEvent(50000ms, [&]
+ ScheduleTimedEvent(50s, [&]
{
Talk(SAY_SUMMON_PHOENIX);
DoCastSelf(SPELL_PHOENIX);
@@ -429,7 +429,7 @@ struct boss_kaelthas : public BossAI
DoCastSelf(SPELL_KAEL_EXPLODES1, true);
DoCastSelf(SPELL_KAEL_GAINING_POWER);
}, EVENT_SCENE_2);
- ScheduleUniqueTimedEvent(4000ms, [&]
+ ScheduleUniqueTimedEvent(4s, [&]
{
me->SetTarget();
for (uint8 i = 0; i < 2; ++i)
@@ -440,7 +440,7 @@ struct boss_kaelthas : public BossAI
me->GetMotionMaster()->MoveTakeoff(POINT_AIR, me->GetPositionX(), me->GetPositionY(), 75.0f, 2.99, true); // AnimType Movement::ToFly does not exist for Kael
DoCastSelf(SPELL_GROW, true);
}, EVENT_SCENE_3);
- ScheduleUniqueTimedEvent(7000ms, [&]
+ ScheduleUniqueTimedEvent(7s, [&]
{
me->SetTarget();
DoCastSelf(SPELL_GROW, true);
@@ -450,7 +450,7 @@ struct boss_kaelthas : public BossAI
if (Creature* trigger = me->SummonCreature(WORLD_TRIGGER, triggersPos[i + 2], TEMPSUMMON_TIMED_DESPAWN, 60000))
trigger->CastSpell(me, SPELL_NETHERBEAM1 + i, false);
}, EVENT_SCENE_4);
- ScheduleUniqueTimedEvent(10000ms, [&]
+ ScheduleUniqueTimedEvent(10s, [&]
{
me->SetTarget();
DoCastSelf(SPELL_GROW, true);
@@ -460,7 +460,7 @@ struct boss_kaelthas : public BossAI
if (Creature* trigger = me->SummonCreature(WORLD_TRIGGER, triggersPos[i + 4], TEMPSUMMON_TIMED_DESPAWN, 60000))
trigger->CastSpell(me, SPELL_NETHERBEAM1 + i, false);
}, EVENT_SCENE_5);
- ScheduleUniqueTimedEvent(14000ms, [&]
+ ScheduleUniqueTimedEvent(14s, [&]
{
DoCastSelf(SPELL_GROW, true);
DoCastSelf(SPELL_KAEL_EXPLODES4, true);
@@ -470,7 +470,7 @@ struct boss_kaelthas : public BossAI
{
SetRoomState(GO_STATE_ACTIVE);
}, EVENT_SCENE_7);
- ScheduleUniqueTimedEvent(19000ms, [&]
+ ScheduleUniqueTimedEvent(19s, [&]
{
summons.DespawnEntry(WORLD_TRIGGER);
me->RemoveAurasDueToSpell(SPELL_NETHERBEAM_AURA1);
@@ -478,7 +478,7 @@ struct boss_kaelthas : public BossAI
me->RemoveAurasDueToSpell(SPELL_NETHERBEAM_AURA3);
DoCastSelf(SPELL_KAEL_EXPLODES5, true);
}, EVENT_SCENE_8);
- ScheduleUniqueTimedEvent(22000ms, [&]
+ ScheduleUniqueTimedEvent(22s, [&]
{
DoCastSelf(SPELL_DARK_BANISH_STATE, true);
DoCastSelf(SPELL_ARCANE_EXPLOSION_VISUAL, true);
@@ -528,14 +528,14 @@ struct boss_kaelthas : public BossAI
me->CastStop();
DoCastSelf(SPELL_KAEL_FULL_POWER);
}, EVENT_SCENE_16);
- ScheduleUniqueTimedEvent(32000ms, [&]
+ ScheduleUniqueTimedEvent(32s, [&]
{
DoCastSelf(SPELL_KAEL_PHASE_TWO, true);
DoCastSelf(SPELL_PURE_NETHER_BEAM4, true);
DoCastSelf(SPELL_PURE_NETHER_BEAM5, true);
DoCastSelf(SPELL_PURE_NETHER_BEAM6, true);
}, EVENT_SCENE_17);
- ScheduleUniqueTimedEvent(36000ms, [&]
+ ScheduleUniqueTimedEvent(36s, [&]
{
summons.DespawnEntry(WORLD_TRIGGER);
me->CastStop();
@@ -559,7 +559,7 @@ struct boss_kaelthas : public BossAI
switch (kaelAction)
{
case ACTION_START_THALADRED:
- attackStartTimer = 7000ms;
+ attackStartTimer = 7s;
advisorNPCId = NPC_THALADRED;
break;
case ACTION_START_SANGUINAR:
@@ -567,7 +567,7 @@ struct boss_kaelthas : public BossAI
advisorNPCId = NPC_LORD_SANGUINAR;
break;
case ACTION_START_CAPERNIAN:
- attackStartTimer = 9000ms;
+ attackStartTimer = 9s;
advisorNPCId = NPC_CAPERNIAN;
break;
case ACTION_START_TELONICUS:
@@ -655,18 +655,18 @@ struct boss_kaelthas : public BossAI
me->AttackStop();
me->CastStop();
me->SetReactState(REACT_PASSIVE);
- me->GetMotionMaster()->MovePoint(POINT_MIDDLE, me->GetHomePosition(), true, true);
+ me->GetMotionMaster()->MovePoint(POINT_MIDDLE, me->GetHomePosition(), FORCED_MOVEMENT_NONE, 0.f, true, true);
}
});
- ScheduleTimedEvent(1000ms, [&]
+ ScheduleTimedEvent(1s, [&]
{
DoCastVictim(SPELL_FIREBALL);
}, 2400ms, 7500ms);
- ScheduleTimedEvent(15000ms, [&]
+ ScheduleTimedEvent(15s, [&]
{
DoCastRandomTarget(SPELL_FLAME_STRIKE, 0, 100.0f);
}, 30250ms, 50650ms);
- ScheduleTimedEvent(50000ms, [&]
+ ScheduleTimedEvent(50s, [&]
{
Talk(SAY_SUMMON_PHOENIX);
DoCastSelf(SPELL_PHOENIX);
@@ -855,7 +855,7 @@ struct npc_capernian : public advisor_baseAI
DoCastVictim(SPELL_CAPERNIAN_FIREBALL);
}
}, 2500ms);
- ScheduleTimedEvent(7000ms, 10000ms, [&]{
+ ScheduleTimedEvent(7s, 10s, [&]{
DoCastRandomTarget(SPELL_CONFLAGRATION, 0, 30.0f);
}, 18500ms, 20500ms);
ScheduleTimedEvent(3s, [&]{
@@ -893,16 +893,16 @@ struct npc_thaladred : public advisor_baseAI
me->AddThreat(target, 10000000.0f);
Talk(EMOTE_THALADRED_FIXATE, target);
}
- }, 10000ms);
- ScheduleTimedEvent(4000ms, 19350ms, [&]
+ }, 10s);
+ ScheduleTimedEvent(4s, 19350ms, [&]
{
DoCastVictim(SPELL_PSYCHIC_BLOW);
}, 15700ms, 48900ms);
- ScheduleTimedEvent(3000ms, 6050ms, [&]
+ ScheduleTimedEvent(3s, 6050ms, [&]
{
DoCastVictim(SPELL_REND);
}, 15700ms, 48900ms);
- ScheduleTimedEvent(3000ms, 6050ms, [&]
+ ScheduleTimedEvent(3s, 6050ms, [&]
{
if (Unit* victim = me->GetVictim())
{
@@ -1013,7 +1013,7 @@ class spell_kaelthas_flame_strike : public AuraScript
{
GetUnitOwner()->RemoveAllAuras();
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_FLAME_STRIKE_DAMAGE, true);
- GetUnitOwner()->ToCreature()->DespawnOrUnsummon(2000);
+ GetUnitOwner()->ToCreature()->DespawnOrUnsummon(2s);
}
void Register() override
@@ -1032,7 +1032,7 @@ public:
bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override
{
if (_owner->IsBeingTeleportedNear())
- _owner->m_Events.AddEvent(new lapseTeleport(_owner), _owner->m_Events.CalculateTime(1));
+ _owner->m_Events.AddEventAtOffset(new lapseTeleport(_owner), 1ms);
else if (!_owner->IsBeingTeleported())
{
_owner->CastSpell(_owner, SPELL_GRAVITY_LAPSE_KNOCKBACK, true);
@@ -1062,7 +1062,7 @@ class spell_kaelthas_gravity_lapse : public SpellScript
if (Player* target = GetHitPlayer())
{
GetCaster()->CastSpell(target, _currentSpellId++, true);
- target->m_Events.AddEvent(new lapseTeleport(target), target->m_Events.CalculateTime(1));
+ target->m_Events.AddEventAtOffset(new lapseTeleport(target), 1ms);
}
}
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
index 1aa95aa7d3..8c992b8808 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
@@ -97,8 +97,8 @@ public:
me->SetReactState(REACT_PASSIVE);
me->SetImmuneToAll(true);
events2.Reset();
- events2.ScheduleEvent(EVENT_TELEPORT_VISUAL, 0);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO1, 3000);
+ events2.ScheduleEvent(EVENT_TELEPORT_VISUAL, 0ms);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO1, 3s);
}
void Reset() override
@@ -125,9 +125,9 @@ public:
void JustEngagedWith(Unit*) override
{
- events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
- events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
- events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 2000);
+ events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1s);
+ events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30s);
+ events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 2s);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*type*/, SpellSchoolMask /*school*/) override
@@ -150,52 +150,52 @@ public:
break;
case EVENT_MILLHOUSE_INTRO1:
Talk(SAY_INTRO_1);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO2, 18000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO2, 18s);
break;
case EVENT_MILLHOUSE_INTRO2:
Talk(SAY_INTRO_2);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO3, 8000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO3, 8s);
break;
case EVENT_MILLHOUSE_INTRO3:
Talk(SAY_INTRO_3);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO4, 6000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO4, 6s);
break;
case EVENT_MILLHOUSE_INTRO4:
Talk(SAY_INTRO_4);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO5, 8000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO5, 8s);
break;
case EVENT_MILLHOUSE_INTRO5:
Talk(SAY_WATER);
me->CastSpell(me, SPELL_CONJURE_WATER, false);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO6, 7000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO6, 7s);
break;
case EVENT_MILLHOUSE_INTRO6:
Talk(SAY_BUFFS);
me->CastSpell(me, SPELL_ICE_ARMOR, false);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO7, 7000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO7, 7s);
break;
case EVENT_MILLHOUSE_INTRO7:
Talk(SAY_DRINK);
me->CastSpell(me, SPELL_ARCANE_INTELLECT, false);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO8, 7000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO8, 7s);
break;
case EVENT_MILLHOUSE_INTRO8:
Talk(SAY_READY);
me->GetMotionMaster()->MovePoint(1, 445.82f, -158.38f, 43.067f);
- events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO9, 5000);
+ events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO9, 5s);
break;
case EVENT_MILLHOUSE_INTRO9:
me->SetFacingTo(M_PI * 1.5f);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), M_PI * 1.5f);
me->SetImmuneToAll(false);
me->SetReactState(REACT_AGGRESSIVE);
- events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
+ events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1s);
break;
case EVENT_SEARCH_FIGHT:
if (!me->IsInCombat() && !me->IsInEvadeMode())
if (Unit* target = me->SelectNearbyTarget(nullptr, 30.0f))
AttackStart(target);
- events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
+ events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1s);
break;
}
@@ -214,27 +214,27 @@ public:
Talk(SAY_LOWHP);
break;
}
- events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000);
+ events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1s);
break;
case EVENT_MILL_PYROBLAST:
Talk(SAY_PYRO);
me->CastSpell(me->GetVictim(), SPELL_PYROBLAST, false);
- events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000);
+ events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30s);
break;
case EVENT_MILL_BASE_SPELL:
switch (RAND(SPELL_FIREBALL, SPELL_ARCANE_MISSILES, SPELL_FROSTBOLT))
{
case SPELL_FIREBALL:
me->CastSpell(me->GetVictim(), SPELL_FIREBALL, false);
- events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
+ events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4s);
break;
case SPELL_ARCANE_MISSILES:
me->CastSpell(me->GetVictim(), SPELL_ARCANE_MISSILES, false);
- events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 9000);
+ events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 9s);
break;
case SPELL_FROSTBOLT:
me->CastSpell(me->GetVictim(), SPELL_FROSTBOLT, false);
- events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4000);
+ events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 4s);
break;
default:
break;
@@ -390,8 +390,8 @@ public:
me->setActive(true);
me->InterruptNonMeleeSpells(false);
me->SetImmuneToAll(true);
- events.ScheduleEvent(EVENT_WARDEN_INTRO1, 1500);
- events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO1, 1500ms);
+ events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1s);
instance->SetBossState(DATA_WARDEN_MELLICHAR, IN_PROGRESS);
}
damage = 0;
@@ -410,13 +410,13 @@ public:
switch (type)
{
case DATA_WARDEN_1:
- events.ScheduleEvent(EVENT_WARDEN_INTRO8, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO8, 2s);
break;
case DATA_WARDEN_3:
- events.ScheduleEvent(EVENT_WARDEN_INTRO19, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO19, 2s);
break;
case DATA_WARDEN_4:
- events.ScheduleEvent(EVENT_WARDEN_INTRO24, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO24, 2s);
break;
}
}
@@ -432,35 +432,35 @@ public:
CreatureAI::EnterEvadeMode();
return;
}
- events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
+ events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1s);
break;
case EVENT_WARDEN_INTRO1:
Talk(YELL_INTRO1);
me->SetFacingTo(M_PI / 2.0f);
me->CastSpell(me, SPELL_BUBBLE_VISUAL, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO2, 1400);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO2, 1400ms);
break;
case EVENT_WARDEN_INTRO2:
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO3, 20000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO3, 20s);
break;
case EVENT_WARDEN_INTRO3:
Talk(YELL_INTRO2);
- events.ScheduleEvent(EVENT_WARDEN_INTRO4, 5000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO4, 5s);
break;
case EVENT_WARDEN_INTRO4:
me->SetFacingTo(0.5f);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_ALPHA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO5, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO5, 2s);
break;
case EVENT_WARDEN_INTRO5:
instance->SetData(DATA_WARDEN_1, IN_PROGRESS);
- events.ScheduleEvent(EVENT_WARDEN_INTRO6, 3000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO6, 3s);
break;
case EVENT_WARDEN_INTRO6:
me->SetFacingTo(M_PI * 1.5f);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO7, 5000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO7, 5s);
break;
case EVENT_WARDEN_INTRO7:
me->SummonCreature(RAND(NPC_TRICKSTER, NPC_PH_HUNTER), 478.326f, -148.505f, 42.56f, 3.19f, TEMPSUMMON_MANUAL_DESPAWN);
@@ -470,44 +470,44 @@ public:
Talk(YELL_RELEASE1);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(2.6f);
- events.ScheduleEvent(EVENT_WARDEN_INTRO10, 4000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO10, 4s);
break;
case EVENT_WARDEN_INTRO10:
me->CastSpell((Unit*)nullptr, SPELL_TARGET_BETA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO11, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO11, 2s);
break;
case EVENT_WARDEN_INTRO11:
Talk(YELL_RELEASE2A);
instance->SetData(DATA_WARDEN_2, IN_PROGRESS);
- events.ScheduleEvent(EVENT_WARDEN_INTRO12, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO12, 2s);
break;
case EVENT_WARDEN_INTRO12:
me->SetFacingTo(M_PI * 1.5f);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO13, 6000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO13, 6s);
break;
case EVENT_WARDEN_INTRO13:
me->SummonCreature(NPC_MILLHOUSE, 413.292f, -148.378f, 42.56f, 6.27f, TEMPSUMMON_MANUAL_DESPAWN);
- events.ScheduleEvent(EVENT_WARDEN_INTRO14, 14000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO14, 14s);
break;
case EVENT_WARDEN_INTRO14:
Talk(YELL_RELEASE2B);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(3.3f);
- events.ScheduleEvent(EVENT_WARDEN_INTRO15, 5000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO15, 5s);
break;
case EVENT_WARDEN_INTRO15:
me->CastSpell((Unit*)nullptr, SPELL_TARGET_DELTA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO16, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO16, 2s);
break;
case EVENT_WARDEN_INTRO16:
instance->SetData(DATA_WARDEN_3, IN_PROGRESS);
- events.ScheduleEvent(EVENT_WARDEN_INTRO17, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO17, 2s);
break;
case EVENT_WARDEN_INTRO17:
me->SetFacingTo(M_PI * 1.5f);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO18, 6000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO18, 6s);
break;
case EVENT_WARDEN_INTRO18:
me->SummonCreature(RAND(NPC_AKKIRIS, NPC_SULFURON), 420.179f, -174.396f, 42.58f, 0.02f, TEMPSUMMON_MANUAL_DESPAWN);
@@ -517,20 +517,20 @@ public:
Talk(YELL_RELEASE3);
me->InterruptNonMeleeSpells(false);
me->SetFacingTo(6.05f);
- events.ScheduleEvent(EVENT_WARDEN_INTRO20, 4000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO20, 4s);
break;
case EVENT_WARDEN_INTRO20:
me->CastSpell((Unit*)nullptr, SPELL_TARGET_GAMMA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO21, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO21, 2s);
break;
case EVENT_WARDEN_INTRO21:
instance->SetData(DATA_WARDEN_4, IN_PROGRESS);
- events.ScheduleEvent(EVENT_WARDEN_INTRO22, 2000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO22, 2s);
break;
case EVENT_WARDEN_INTRO22:
me->SetFacingTo(M_PI * 1.5f);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO23, 6000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO23, 6s);
break;
case EVENT_WARDEN_INTRO23:
me->SummonCreature(RAND(NPC_TW_DRAK, NPC_BL_DRAK), 471.795f, -174.58f, 42.58f, 3.06f, TEMPSUMMON_MANUAL_DESPAWN);
@@ -540,7 +540,7 @@ public:
instance->SetData(DATA_WARDEN_5, IN_PROGRESS);
Talk(YELL_RELEASE4);
me->InterruptNonMeleeSpells(false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO25, 8000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO25, 8s);
break;
case EVENT_WARDEN_INTRO25:
if (Creature* cr = me->SummonCreature(NPC_HARBINGER_SKYRISS, 445.763f, -191.639f, 44.64f, 1.60f, TEMPSUMMON_MANUAL_DESPAWN))
@@ -548,22 +548,22 @@ public:
cr->SetImmuneToAll(true);
cr->CastSpell(cr, SPELL_TELEPORT_VISUAL, true);
}
- events.ScheduleEvent(EVENT_WARDEN_INTRO26, 1000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO26, 1s);
break;
case EVENT_WARDEN_INTRO26:
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->AI()->Talk(SAY_HARBINGER_INTRO);
- events.ScheduleEvent(EVENT_WARDEN_INTRO27, 23000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO27, 23s);
break;
case EVENT_WARDEN_INTRO27:
Talk(YELL_WELCOME);
- events.ScheduleEvent(EVENT_WARDEN_INTRO28, 5000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO28, 5s);
break;
case EVENT_WARDEN_INTRO28:
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), true);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->CastSpell((Unit*)nullptr, SPELL_MIND_REND, false);
- events.ScheduleEvent(EVENT_WARDEN_INTRO29, 4000);
+ events.ScheduleEvent(EVENT_WARDEN_INTRO29, 4s);
break;
case EVENT_WARDEN_INTRO29:
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp
index 799272204e..4d5329ac0b 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp
@@ -165,7 +165,7 @@ struct boss_wrath_scryer_soccothrates : public BossAI
if (!preFight && who->IsPlayer() && me->IsWithinDistInMap(who, 70.0f))
{
Talk(SAY_SOCCOTHRATES_CONVO_1);
- events2.ScheduleEvent(EVENT_PREFIGHT_1, 2000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_1, 2s);
preFight = true;
}
}
@@ -178,38 +178,38 @@ struct boss_wrath_scryer_soccothrates : public BossAI
case EVENT_PREFIGHT_1:
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_1);
- events2.ScheduleEvent(EVENT_PREFIGHT_2, 3000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_2, 3s);
break;
case EVENT_PREFIGHT_2:
Talk(SAY_SOCCOTHRATES_CONVO_2);
- events2.ScheduleEvent(EVENT_PREFIGHT_3, 3000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_3, 3s);
break;
case EVENT_PREFIGHT_3:
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_2);
- events2.ScheduleEvent(EVENT_PREFIGHT_4, 6000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_4, 6s);
break;
case EVENT_PREFIGHT_4:
Talk(SAY_SOCCOTHRATES_CONVO_3);
- events2.ScheduleEvent(EVENT_PREFIGHT_5, 2000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_5, 2s);
break;
case EVENT_PREFIGHT_5:
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_3);
- events2.ScheduleEvent(EVENT_PREFIGHT_6, 3000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_6, 3s);
break;
case EVENT_PREFIGHT_6:
Talk(SAY_SOCCOTHRATES_CONVO_4);
- events2.ScheduleEvent(EVENT_PREFIGHT_7, 2000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_7, 2s);
break;
case EVENT_PREFIGHT_7:
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
dalliah->GetMotionMaster()->MovePoint(0, 118.6048f, 96.84852f, 22.44115f);
- events2.ScheduleEvent(EVENT_PREFIGHT_8, 4000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_8, 4s);
break;
case EVENT_PREFIGHT_8:
me->GetMotionMaster()->MovePoint(0, 122.1035f, 192.7203f, 22.44115f);
- events2.ScheduleEvent(EVENT_PREFIGHT_9, 4000);
+ events2.ScheduleEvent(EVENT_PREFIGHT_9, 4s);
break;
case EVENT_PREFIGHT_9:
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 16e37a698d..f9f862fd3a 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -98,7 +98,7 @@ public:
CannonGUID = caster->GetGUID();
PartyTime = true;
- events.ScheduleEvent(EVENT_PARTY_TIMER, 3000);
+ events.ScheduleEvent(EVENT_PARTY_TIMER, 3s);
}
if (count >= 3)
@@ -116,7 +116,7 @@ public:
if (Creature* bunny = GetClosestCreatureWithEntry(me, NPC_EXPLOSION_BUNNY, 200.0f))
bunny->CastSpell(nullptr, SPELL_EXPLOSION, TRIGGERED_NONE);
if (Creature* cannon = ObjectAccessor::GetCreature(*me, CannonGUID))
- cannon->DespawnOrUnsummon(5000);
+ cannon->DespawnOrUnsummon(5s);
}
me->SummonGameObject(GO_BIG_FIRE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 60);
@@ -160,7 +160,7 @@ public:
me->SummonCreature(NPC_HOUND, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
else
me->SummonCreature(NPC_FEL_IMP, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
- events.ScheduleEvent(EVENT_PARTY_TIMER, 3000);
+ events.ScheduleEvent(EVENT_PARTY_TIMER, 3s);
break;
}
}
@@ -460,7 +460,7 @@ public:
Talk(SAY_SPELL_INFLUENCE, who);
/// @todo Move the below to updateAI and run if this statement == true
DoCast(who, SPELL_DISPELLING_ANALYSIS, true);
- bird->DespawnOrUnsummon(2000);
+ bird->DespawnOrUnsummon(2s);
}
}
}
@@ -577,18 +577,18 @@ public:
if (!CheckPlayer())
ResetNode();
else
- _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2000);
+ _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2s);
break;
case EVENT_SIMON_SETUP_PRE_GAME:
SetUpPreGame();
_events.CancelEvent(EVENT_SIMON_GAME_TICK);
- _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1000);
+ _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1s);
break;
case EVENT_SIMON_PLAY_SEQUENCE:
if (!playableSequence.empty())
{
PlayNextColor();
- _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1500);
+ _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1500ms);
}
else
{
@@ -597,16 +597,16 @@ public:
playerSequence.clear();
PrepareClusters();
gameTicks = 0;
- _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3000);
+ _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3s);
}
break;
case EVENT_SIMON_GAME_TICK:
DoCast(SPELL_AUDIBLE_GAME_TICK);
if (gameTicks > gameLevel)
- _events.ScheduleEvent(EVENT_SIMON_TOO_LONG_TIME, 500);
+ _events.ScheduleEvent(EVENT_SIMON_TOO_LONG_TIME, 500ms);
else
- _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3000);
+ _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3s);
gameTicks++;
break;
case EVENT_SIMON_RESET_CLUSTERS:
@@ -633,7 +633,7 @@ public:
if (gameLevel == 10)
ResetNode();
else
- _events.ScheduleEvent(EVENT_SIMON_SETUP_PRE_GAME, 1000);
+ _events.ScheduleEvent(EVENT_SIMON_SETUP_PRE_GAME, 1s);
break;
case ACTION_SIMON_CORRECT_FULL_SEQUENCE:
gameLevel++;
@@ -665,12 +665,12 @@ public:
PlayColor(pressedColor);
playerSequence.push_back(pressedColor);
- _events.ScheduleEvent(EVENT_SIMON_RESET_CLUSTERS, 500);
+ _events.ScheduleEvent(EVENT_SIMON_RESET_CLUSTERS, 500ms);
CheckPlayerSequence();
}
// Used for getting involved player guid. Parameter id is used for defining if is a large(Monument) or small(Relic) node
- void SetGUID(ObjectGuid guid, int32 id) override
+ void SetGUID(ObjectGuid const& guid, int32 id) override
{
me->SetCanFly(true);
@@ -752,8 +752,8 @@ public:
}
_events.Reset();
- _events.ScheduleEvent(EVENT_SIMON_ROUND_FINISHED, 1000);
- _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2000);
+ _events.ScheduleEvent(EVENT_SIMON_ROUND_FINISHED, 1s);
+ _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2s);
if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
relic->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
@@ -775,7 +775,7 @@ public:
if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
relic->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
/*
@@ -1086,7 +1086,7 @@ public:
// Spell 37392 does not exist in dbc, manually spawning
me->SummonCreature(NPC_OSCILLATING_FREQUENCY_SCANNER_TOP_BUNNY, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 50000);
me->SummonGameObject(GO_OSCILLATING_FREQUENCY_SCANNER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), 0, 0, 0, 0, 50);
- me->DespawnOrUnsummon(50000);
+ me->DespawnOrUnsummon(50s);
}
timer = 500;
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
index 66a12acc65..e9457b0e0f 100644
--- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
+++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
@@ -171,7 +171,10 @@ public:
npc_ancestral_wolfAI(Creature* creature) : npc_escortAI(creature)
{
if (creature->GetOwner() && creature->GetOwner()->IsPlayer())
- Start(false, false, creature->GetOwner()->GetGUID());
+ {
+ creature->SetWalk(true);
+ Start(false, creature->GetOwner()->GetGUID());
+ }
creature->SetSpeed(MOVE_WALK, 1.5f);
DoCast(SPELL_GUIDED_BY_THE_SPIRITS);
Reset();
@@ -209,7 +212,7 @@ public:
{
ryga->SetWalk(true);
ryga->SetSpeed(MOVE_WALK, 1.0f);
- ryga->GetMotionMaster()->MovePoint(0, 515.877991f, 3885.67627f, 190.470535f, true);
+ ryga->GetMotionMaster()->MovePoint(0, 515.877991f, 3885.67627f, 190.470535f, FORCED_MOVEMENT_NONE, 0.f, true);
Reset();
}
}
@@ -234,7 +237,7 @@ public:
ryga->SetStandState(UNIT_STAND_STATE_STAND);
ryga->SetWalk(true);
ryga->SetSpeed(MOVE_WALK, 1.0f);
- ryga->GetMotionMaster()->MovePoint(0, 504.59201f, 3882.12988f, 192.156006f, true);
+ ryga->GetMotionMaster()->MovePoint(0, 504.59201f, 3882.12988f, 192.156006f, FORCED_MOVEMENT_NONE, 0.f, true);
Reset();
}
}
@@ -312,7 +315,8 @@ public:
{
me->SetReactState(REACT_AGGRESSIVE);
me->SetFaction(FACTION_ESCORTEE_H_PASSIVE);
- npc_escortAI::Start(true, false, player->GetGUID());
+ me->SetWalk(true);
+ Start(true, player->GetGUID());
}
}
diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp
index d0c6df3803..5d815569ba 100644
--- a/src/server/scripts/Outland/zone_nagrand.cpp
+++ b/src/server/scripts/Outland/zone_nagrand.cpp
@@ -65,7 +65,8 @@ public:
{
creature->SetStandState(UNIT_STAND_STATE_STAND);
creature->SetFaction(FACTION_ESCORTEE_H_NEUTRAL_ACTIVE);
- EscortAI->Start(true, false, player->GetGUID(), quest);
+ creature->SetWalk(true);
+ EscortAI->Start(true, player->GetGUID(), quest);
creature->AI()->Talk(SAY_MAG_START);
creature->SummonCreature(NPC_MURK_RAIDER, m_afAmbushA[0] + 2.5f, m_afAmbushA[1] - 2.5f, m_afAmbushA[2], 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000);
@@ -133,7 +134,7 @@ public:
if (Player* player = GetPlayerForEscort())
player->GroupEventHappens(QUEST_TOTEM_KARDASH_H, me);
- SetRun();
+ me->SetWalk(false);
break;
}
}
@@ -303,10 +304,11 @@ public:
uint32 HealTimer;
uint32 FrostShockTimer;
- void SetGUID(ObjectGuid guid, int32 /*questId*/) override
+ void SetGUID(ObjectGuid const& guid, int32 /*questId*/) override
{
me->SetStandState(UNIT_STAND_STATE_STAND);
- Start(true, false, guid);
+ me->SetWalk(true);
+ Start(true, guid);
Talk(SAY_KUR_START);
me->SummonCreature(NPC_KUR_MURK_RAIDER, kurenaiAmbushA[0] + 2.5f, kurenaiAmbushA[1] - 2.5f, kurenaiAmbushA[2], 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 50000);
@@ -361,7 +363,7 @@ public:
if (Player* player = GetPlayerForEscort())
player->GroupEventHappens(QUEST_TOTEM_KARDASH_A, me);
- SetRun();
+ me->SetWalk(false);
break;
}
}
@@ -464,7 +466,7 @@ public:
player->KilledMonsterCredit(NPC_MAGHAR_PRISONER);
prisoner->AI()->Talk(SAY_FREE, player);
- prisoner->DespawnOrUnsummon(6000);
+ prisoner->DespawnOrUnsummon(6s);
}
return true;
diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp
index ceb94b60e5..cc4f68aa24 100644
--- a/src/server/scripts/Outland/zone_netherstorm.cpp
+++ b/src/server/scripts/Outland/zone_netherstorm.cpp
@@ -99,11 +99,11 @@ public:
npc_escortAI::MoveInLineOfSight(who);
}
- void SetGUID(ObjectGuid playerGUID, int32 type) override
+ void SetGUID(ObjectGuid const& playerGUID, int32 type) override
{
if (type == DATA_START_ENCOUNTER)
{
- Start(true, true, playerGUID);
+ Start(true, playerGUID);
SetEscortPaused(true);
started = true;
@@ -126,7 +126,7 @@ public:
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
Talk(SAY_SAEED_0);
- events.ScheduleEvent(EVENT_START_WALK, 3000);
+ events.ScheduleEvent(EVENT_START_WALK, 3s);
}
else if (type == DATA_START_FIGHT)
{
@@ -178,7 +178,7 @@ public:
SetEscortPaused(true);
break;
case 18:
- events.ScheduleEvent(EVENT_START_FIGHT1, 0);
+ events.ScheduleEvent(EVENT_START_FIGHT1, 0ms);
SetEscortPaused(true);
break;
case 19:
@@ -227,7 +227,7 @@ public:
break;
case EVENT_START_FIGHT1:
Talk(SAY_SAEED_3);
- events.ScheduleEvent(EVENT_START_FIGHT2, 3000);
+ events.ScheduleEvent(EVENT_START_FIGHT2, 3s);
break;
case EVENT_START_FIGHT2:
if (Creature* dimensius = me->FindNearestCreature(NPC_DIMENSIUS, 50.0f))
@@ -605,7 +605,8 @@ public:
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
creature->AI()->Talk(SAY_BESSY_0);
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
+ creature->SetWalk(true);
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, player->GetGUID());
}
return true;
}
@@ -771,7 +772,8 @@ public:
if (npc_maxx_a_million_escortAI* pEscortAI = CAST_AI(npc_maxx_a_million_escort::npc_maxx_a_million_escortAI, creature->AI()))
{
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
- pEscortAI->Start(false, false, player->GetGUID());
+ creature->SetWalk(true);
+ pEscortAI->Start(false, player->GetGUID());
}
}
return true;
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 3e78e17db5..5e31fb4f90 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -133,7 +133,7 @@ public:
{
ground = me->GetMapHeight(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
SummonInfernal();
- events.ScheduleEvent(EVENT_CAST_SUMMON_INFERNAL, urand(1000, 3000));
+ events.ScheduleEvent(EVENT_CAST_SUMMON_INFERNAL, 1s, 3s);
}
void SetData(uint32 id, uint32 data) override
@@ -161,7 +161,7 @@ public:
if (Unit* infernal = ObjectAccessor::GetUnit(*me, infernalGUID))
if (infernal->GetDisplayId() == MODEL_INVISIBLE)
me->CastSpell(infernal, SPELL_SUMMON_INFERNAL, true);
- events.ScheduleEvent(EVENT_CAST_SUMMON_INFERNAL, 12000);
+ events.ScheduleEvent(EVENT_CAST_SUMMON_INFERNAL, 12s);
break;
}
default:
@@ -566,8 +566,8 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
- events.ScheduleEvent(EVENT_KICK, urand(5000, 10000));
- events.ScheduleEvent(EVENT_SUNDER, urand(5000, 10000));
+ events.ScheduleEvent(EVENT_KICK, 5s, 10s);
+ events.ScheduleEvent(EVENT_SUNDER, 5s, 10s);
}
void SpellHit(Unit* caster, SpellInfo const* spell) override
@@ -582,7 +582,7 @@ public:
Tapped = true;
caster->GetClosePoint(x, y, z, me->GetObjectSize());
Talk(SAY_1);
- events.ScheduleEvent(EVENT_WALK_TO_MUTTON, 0);
+ events.ScheduleEvent(EVENT_WALK_TO_MUTTON, 0ms);
}
}
@@ -593,7 +593,7 @@ public:
if (GameObject* food = me->FindNearestGameObject(DELICIOUS_MUTTON, 5.0f))
me->SetFacingToObject(food);
me->HandleEmoteCommand(EMOTE_ONESHOT_EAT);
- events.ScheduleEvent(EVENT_POISONED, 5000);
+ events.ScheduleEvent(EVENT_POISONED, 5s);
}
}
@@ -617,7 +617,7 @@ public:
{
case EVENT_WALK_TO_MUTTON:
me->SetWalk(true);
- me->GetMotionMaster()->MovePoint(1, x, y, z, true);
+ me->GetMotionMaster()->MovePoint(1, x, y, z);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
break;
@@ -628,7 +628,7 @@ public:
Talk(SAY_POISONED_1);
CreditPlayer();
me->CastSpell(me, SPELL_VOMIT);
- events.ScheduleEvent(EVENT_KILL, 5000);
+ events.ScheduleEvent(EVENT_KILL, 5s);
break;
case EVENT_KILL:
Unit::DealDamage(me, me, me->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false);
@@ -642,11 +642,11 @@ public:
case EVENT_KICK:
if (me->GetVictim()->HasUnitState(SPELL_STATE_CASTING))
DoCastVictim(SPELL_KICK);
- events.RepeatEvent(urand(5000, 10000));
+ events.Repeat(5s, 10s);
break;
case EVENT_SUNDER:
DoCastVictim(SPELL_SUNDER);
- events.RepeatEvent(urand(5000, 10000));
+ events.Repeat(5s, 10s);
break;
}
@@ -1860,22 +1860,22 @@ struct dragonmaw_race_npc : public ScriptedAI
switch (me->GetEntry())
{
case NPC_MUCKJAW:
- me->GetMotionMaster()->MovePath(PATH_MUCKJAW, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_MUCKJAW, false);
break;
case NPC_TROPE:
- me->GetMotionMaster()->MovePath(PATH_TROPE, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_TROPE, false);
break;
case NPC_CORLOK:
- me->GetMotionMaster()->MovePath(PATH_CORLOK, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_CORLOK, false);
break;
case NPC_ICHMAN:
- me->GetMotionMaster()->MovePath(PATH_ICHMAN, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_ICHMAN, false);
break;
case NPC_MULVERICK:
- me->GetMotionMaster()->MovePath(PATH_MULVERICK, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_MULVERICK, false);
break;
case NPC_SKYSHATTER:
- me->GetMotionMaster()->MovePath(PATH_SKYSHATTER, false);
+ me->GetMotionMaster()->MoveWaypoint(PATH_SKYSHATTER, false);
break;
default:
break;
diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp
index 29382d6ae4..d4e29509d5 100644
--- a/src/server/scripts/Outland/zone_shattrath_city.cpp
+++ b/src/server/scripts/Outland/zone_shattrath_city.cpp
@@ -246,7 +246,10 @@ public:
Player* player = summoner->ToPlayer();
if (player && player->GetQuestStatus(10211) == QUEST_STATUS_INCOMPLETE)
- Start(false, false, summoner->GetGUID());
+ {
+ me->SetWalk(true);
+ Start(false, summoner->GetGUID());
+ }
}
void Reset() override { }
diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp
index ffbed2ade5..38cb0214b1 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -433,9 +433,9 @@ public:
void JustEngagedWith(Unit*) override
{
events.Reset();
- events.ScheduleEvent(EVENT_SPELL_WRATH, 0);
- events.ScheduleEvent(EVENT_SPELL_MOONFIRE, 4000);
- events.ScheduleEvent(EVENT_SPELL_ENTANGLING_ROOTS, 10000);
+ events.ScheduleEvent(EVENT_SPELL_WRATH, 0ms);
+ events.ScheduleEvent(EVENT_SPELL_MOONFIRE, 4s);
+ events.ScheduleEvent(EVENT_SPELL_ENTANGLING_ROOTS, 10s);
}
void UpdateEscortAI(uint32 diff) override
@@ -451,15 +451,15 @@ public:
{
case EVENT_SPELL_WRATH:
me->CastSpell(me->GetVictim(), SPELL_WRATH, false);
- events.ScheduleEvent(EVENT_SPELL_WRATH, 3000);
+ events.ScheduleEvent(EVENT_SPELL_WRATH, 3s);
break;
case EVENT_SPELL_MOONFIRE:
me->CastSpell(me->GetVictim(), SPELL_MOONFIRE, false);
- events.ScheduleEvent(EVENT_SPELL_MOONFIRE, 12000);
+ events.ScheduleEvent(EVENT_SPELL_MOONFIRE, 12s);
break;
case EVENT_SPELL_ENTANGLING_ROOTS:
me->CastSpell(me->GetVictim(), SPELL_ENTANGLING_ROOTS, false);
- events.ScheduleEvent(EVENT_SPELL_ENTANGLING_ROOTS, 20000);
+ events.ScheduleEvent(EVENT_SPELL_ENTANGLING_ROOTS, 20s);
break;
}
@@ -473,7 +473,8 @@ public:
{
if (quest->GetQuestId() == QUEST_EFTW_H || quest->GetQuestId() == QUEST_EFTW_A)
{
- CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
+ creature->SetWalk(true);
+ CAST_AI(npc_escortAI, (creature->AI()))->Start(true, player->GetGUID());
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
}
return true;
diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp
index 6e91d2a19a..8af8b89abc 100644
--- a/src/server/scripts/Pet/pet_generic.cpp
+++ b/src/server/scripts/Pet/pet_generic.cpp
@@ -49,7 +49,7 @@ struct npc_pet_gen_soul_trader_beacon : public ScriptedAI
npc_pet_gen_soul_trader_beacon(Creature* c) : ScriptedAI(c)
{
events.Reset();
- events.ScheduleEvent(EVENT_INITIAL_TALK, 0);
+ events.ScheduleEvent(EVENT_INITIAL_TALK, 0ms);
if (me->ToTempSummon())
if (Unit* owner = me->ToTempSummon()->GetOwner())
{
@@ -65,7 +65,7 @@ struct npc_pet_gen_soul_trader_beacon : public ScriptedAI
if (spellInfo->Id == SPELL_STEAL_ESSENCE_VISUAL && target == me)
{
Talk(1);
- events.ScheduleEvent(EVENT_ADD_TOKEN, 3000);
+ events.ScheduleEvent(EVENT_ADD_TOKEN, 3s);
me->CastSpell(me, SPELL_EMOTE_STATE_SWIM_RUN, true);
}
}
@@ -160,7 +160,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI
if (Unit* owner = me->GetCharmerOrOwner())
{
me->GetMotionMaster()->Clear(false);
- me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, me->GetFollowAngle(), MOTION_SLOT_ACTIVE);
+ me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, MINI_PET_FOLLOW_ANGLE, MOTION_SLOT_ACTIVE);
}
}
@@ -193,7 +193,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI
duration = cooldown;
aura = SPELL_AURA_POSTMAN_S + i;
_state = argentPonyService[TEAM_ALLIANCE][i];
- me->ToTempSummon()->UnSummon(duration);
+ me->ToTempSummon()->UnSummon(Milliseconds(duration));
break;
}
}
@@ -204,7 +204,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI
duration = cooldown * IN_MILLISECONDS;
aura = SPELL_AURA_BANK_G + i;
_state = argentPonyService[TEAM_HORDE][i];
- me->ToTempSummon()->UnSummon(duration);
+ me->ToTempSummon()->UnSummon(Milliseconds(duration));
break;
}
}
@@ -327,7 +327,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI
creature->CastSpell(creature, spellId, true);
player->AddSpellCooldown(spellId, 0, 3 * MINUTE * IN_MILLISECONDS);
player->AddSpellCooldown(player->GetTeamId(true) ? SPELL_AURA_TIRED_G : SPELL_AURA_TIRED_S, 0, 3 * MINUTE * IN_MILLISECONDS + 4 * HOUR * IN_MILLISECONDS);
- creature->DespawnOrUnsummon(3 * MINUTE * IN_MILLISECONDS);
+ creature->DespawnOrUnsummon(180s);
}
return true;
}
@@ -388,7 +388,7 @@ struct npc_pet_gen_target_following_bomb : public NullCreatureAI
if (me->GetDistance(target) < 3.0f)
{
me->CastSpell(me, bombSpellId, false);
- me->DespawnOrUnsummon(500);
+ me->DespawnOrUnsummon(500ms);
}
}
else if (!me->HasUnitState(UNIT_STATE_FOLLOW))
@@ -557,7 +557,7 @@ struct npc_pet_gen_imp_in_a_bottle : public NullCreatureAI
if (_talkTimer >= 5000)
{
_talkTimer = 0;
- me->DespawnOrUnsummon(1);
+ me->DespawnOrUnsummon(1ms);
if (!_hasParty)
Talk(0, ObjectAccessor::GetPlayer(*me, _ownerGUID));
else if (Player* player = ObjectAccessor::GetPlayer(*me, _ownerGUID))
@@ -567,9 +567,9 @@ struct npc_pet_gen_imp_in_a_bottle : public NullCreatureAI
for (GroupReference* itr = player->GetGroup()->GetFirstMember(); itr != nullptr && limit < 4; itr = itr->next(), ++limit)
if (Player* groupPlayer = itr->GetSource())
if (groupPlayer != player)
- groupPlayer->GetSession()->SendPacket(&_data);
+ groupPlayer->SendDirectMessage(&_data);
- player->GetSession()->SendPacket(&_data);
+ player->SendDirectMessage(&_data);
}
}
}
@@ -709,7 +709,7 @@ struct npc_pet_gen_toxic_wasteling : public PassiveAI
if (Unit* owner = me->GetCharmerOrOwner())
{
me->GetMotionMaster()->Clear(false);
- me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, me->GetFollowAngle(), MOTION_SLOT_ACTIVE);
+ me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, MINI_PET_FOLLOW_ANGLE, MOTION_SLOT_ACTIVE);
}
me->AddAura(71854, me); // Growth
checkTimer = 0;
diff --git a/src/server/scripts/Pet/pet_mage.cpp b/src/server/scripts/Pet/pet_mage.cpp
index 72ab586eca..9f3d40c3bb 100644
--- a/src/server/scripts/Pet/pet_mage.cpp
+++ b/src/server/scripts/Pet/pet_mage.cpp
@@ -62,10 +62,18 @@ struct npc_pet_mage_mirror_image : CasterAI
ObjectGuid _ebonGargoyleGUID;
uint32 checktarget;
uint32 dist = urand(1, 5);
+ bool _delayAttack;
void InitializeAI() override
{
CasterAI::InitializeAI();
+
+ _delayAttack = true;
+ me->m_Events.AddEventAtOffset([this]()
+ {
+ _delayAttack = false;
+ }, 1200ms);
+
Unit* owner = me->GetOwner();
if (!owner)
return;
@@ -130,7 +138,7 @@ struct npc_pet_mage_mirror_image : CasterAI
newAura->SetDuration(visAura->GetDuration());
}
- me->m_Events.AddEvent(new DeathEvent(*me), me->m_Events.CalculateTime(29500));
+ me->m_Events.AddEventAtOffset(new DeathEvent(*me), 29500ms);
}
// Do not reload Creature templates on evade mode enter - prevent visual lost
@@ -185,10 +193,11 @@ struct npc_pet_mage_mirror_image : CasterAI
void UpdateAI(uint32 diff) override
{
- events.Update(diff);
- if (events.GetTimer() < 1200)
+ if (_delayAttack)
return;
+ events.Update(diff);
+
if (!me->IsInCombat() || !me->GetVictim())
{
MySelectNextTarget();
@@ -212,7 +221,7 @@ struct npc_pet_mage_mirror_image : CasterAI
if (uint32 spellId = events.ExecuteEvent())
{
- events.RescheduleEvent(spellId, spellId == 59637 ? 6500 : 2500);
+ events.RescheduleEvent(spellId, spellId == 59637 ? 6500ms : 2500ms);
me->CastSpell(me->GetVictim(), spellId, false);
}
}
diff --git a/src/server/scripts/Pet/pet_shaman.cpp b/src/server/scripts/Pet/pet_shaman.cpp
index d5266ea04e..286571a82c 100644
--- a/src/server/scripts/Pet/pet_shaman.cpp
+++ b/src/server/scripts/Pet/pet_shaman.cpp
@@ -49,7 +49,7 @@ struct npc_pet_shaman_earth_elemental : public ScriptedAI
void JustEngagedWith(Unit*) override
{
_events.Reset();
- _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 0);
+ _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 0ms);
}
void InitializeAI() override { }
@@ -74,7 +74,7 @@ struct npc_pet_shaman_earth_elemental : public ScriptedAI
if (_events.ExecuteEvent() == EVENT_SHAMAN_ANGEREDEARTH)
{
DoCastVictim(SPELL_SHAMAN_ANGEREDEARTH);
- _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, urand(5000, 20000));
+ _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 5s, 20s);
}
DoMeleeAttackIfReady();
@@ -94,9 +94,9 @@ struct npc_pet_shaman_fire_elemental : public ScriptedAI
void JustEngagedWith(Unit*) override
{
_events.Reset();
- _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, urand(5000, 20000));
- _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, urand(5000, 20000));
- //_events.ScheduleEvent(EVENT_SHAMAN_FIRESHIELD, 0);
+ _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, 5s, 20s);
+ _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, 5s, 20s);
+ //_events.ScheduleEvent(EVENT_SHAMAN_FIRESHIELD, 0ms);
me->RemoveAurasDueToSpell(SPELL_SHAMAN_FIRESHIELD);
me->CastSpell(me, SPELL_SHAMAN_FIRESHIELD, true);
@@ -124,11 +124,11 @@ struct npc_pet_shaman_fire_elemental : public ScriptedAI
{
case EVENT_SHAMAN_FIRENOVA:
me->CastSpell(me, SPELL_SHAMAN_FIRENOVA, false);
- _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, urand(8000, 15000));
+ _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, 8s, 15s);
break;
case EVENT_SHAMAN_FIREBLAST:
me->CastSpell(me->GetVictim(), SPELL_SHAMAN_FIREBLAST, false);
- _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, urand(4000, 8000));
+ _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, 4s, 8s);
break;
default:
break;
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 5b1d646acc..1d888d3e8a 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1970,7 +1970,7 @@ class spell_pvp_trinket_wotf_shared_cd : public SpellScript
{
WorldPacket data;
player->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_INCLUDE_GCD, 7744, GetSpellInfo()->CategoryRecoveryTime); // Will of the forsaken
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
}
else
{
@@ -1983,11 +1983,11 @@ class spell_pvp_trinket_wotf_shared_cd : public SpellScript
data << uint16(GetSpellInfo()->GetCategory()); // spell category
data << uint32(0);
data << uint32(GetSpellInfo()->CategoryRecoveryTime);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
WorldPacket data2;
player->BuildCooldownPacket(data2, SPELL_COOLDOWN_FLAG_INCLUDE_GCD, SPELL_PVP_TRINKET, GetSpellInfo()->CategoryRecoveryTime); // PvP Trinket spell
- player->GetSession()->SendPacket(&data2);
+ player->SendDirectMessage(&data2);
}
}
}
@@ -2650,7 +2650,7 @@ class spell_gen_spirit_healer_res : public SpellScript
{
WorldPacket data(SMSG_SPIRIT_HEALER_CONFIRM, 8);
data << target->GetGUID();
- originalCaster->GetSession()->SendPacket(&data);
+ originalCaster->SendDirectMessage(&data);
}
}
@@ -3706,7 +3706,7 @@ class spell_gen_despawn_self : public SpellScript
void HandleDummy(SpellEffIndex effIndex)
{
if (GetSpellInfo()->Effects[effIndex].Effect == SPELL_EFFECT_DUMMY || GetSpellInfo()->Effects[effIndex].Effect == SPELL_EFFECT_SCRIPT_EFFECT)
- GetCaster()->ToCreature()->DespawnOrUnsummon(1);
+ GetCaster()->ToCreature()->DespawnOrUnsummon(1ms);
}
void Register() override
@@ -5528,6 +5528,148 @@ class spell_gen_food_heart_emote : public AuraScript
}
};
+// 456 - SHOWLABEL Only OFF
+class spell_gen_showlabel_off : public SpellScript
+{
+ PrepareSpellScript(spell_gen_showlabel_off)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetGMChat(false);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_showlabel_off::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 2765 - SHOWLABEL Only ON
+class spell_gen_showlabel_on : public SpellScript
+{
+ PrepareSpellScript(spell_gen_showlabel_on)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetGMChat(true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_showlabel_on::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 1509 - GM Only OFF
+class spell_gen_gm_off : public SpellScript
+{
+ PrepareSpellScript(spell_gen_gm_off)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ {
+ player->SetGameMaster(false);
+ player->UpdateTriggerVisibility();
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_gm_off::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 18139 - GM Only ON
+class spell_gen_gm_on : public SpellScript
+{
+ PrepareSpellScript(spell_gen_gm_on)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ {
+ player->SetGameMaster(true);
+ player->UpdateTriggerVisibility();
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_gm_on::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 6147 - INVIS Only OFF
+class spell_gen_invis_off : public SpellScript
+{
+ PrepareSpellScript(spell_gen_invis_off)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetGMVisible(true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_invis_off::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 2763 - INVIS Only ON
+class spell_gen_invis_on : public SpellScript
+{
+ PrepareSpellScript(spell_gen_invis_on)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetGMVisible(false);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_invis_on::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 20114, 24675 - BM Only OFF
+class spell_gen_bm_off : public SpellScript
+{
+ PrepareSpellScript(spell_gen_bm_off)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetBeastMaster(false);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_bm_off::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 20115, 24676 - BM Only ON
+class spell_gen_bm_on : public SpellScript
+{
+ PrepareSpellScript(spell_gen_bm_on)
+
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* player = GetCaster()->ToPlayer())
+ player->SetBeastMaster(true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_gen_bm_on::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_silithyst);
@@ -5693,4 +5835,12 @@ void AddSC_generic_spell_scripts()
RegisterSpellScriptWithArgs(spell_gen_translocate, "spell_gen_translocate_up", SPELL_TRANSLOCATION_UP);
RegisterSpellScript(spell_gen_cooldown_all);
RegisterSpellScript(spell_gen_food_heart_emote);
+ RegisterSpellScript(spell_gen_showlabel_off);
+ RegisterSpellScript(spell_gen_showlabel_on);
+ RegisterSpellScript(spell_gen_gm_off);
+ RegisterSpellScript(spell_gen_gm_on);
+ RegisterSpellScript(spell_gen_invis_off);
+ RegisterSpellScript(spell_gen_invis_on);
+ RegisterSpellScript(spell_gen_bm_on);
+ RegisterSpellScript(spell_gen_bm_off);
}
diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp
index d3325403ad..8ec480ca06 100644
--- a/src/server/scripts/Spells/spell_hunter.cpp
+++ b/src/server/scripts/Spells/spell_hunter.cpp
@@ -302,7 +302,7 @@ class spell_hun_taming_the_beast : public AuraScript
{
if (Unit* target = GetTarget())
if (Creature* creature = target->ToCreature())
- creature->DespawnOrUnsummon(1);
+ creature->DespawnOrUnsummon(1ms);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 29269f5379..25c46b9d56 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -347,7 +347,7 @@ class spell_item_rocket_chicken : public AuraScript
{
if (roll_chance_i(5))
{
- GetTarget()->ToCreature()->DespawnOrUnsummon(8000);
+ GetTarget()->ToCreature()->DespawnOrUnsummon(8s);
GetTarget()->Kill(GetTarget(), GetTarget());
}
else if (roll_chance_i(50))
@@ -468,7 +468,7 @@ class spell_item_toxic_wasteling : public SpellScript
GetCaster()->GetMotionMaster()->MoveIdle();
GetCaster()->ToCreature()->SetHomePosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0.0f);
GetCaster()->GetMotionMaster()->MoveJump(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 12.0f, 3.0f, 1);
- target->DespawnOrUnsummon(1500);
+ target->DespawnOrUnsummon(1500ms);
}
}
@@ -505,7 +505,7 @@ class spell_item_lil_xt : public SpellScript
return;
if (GetCaster()->IsCreature() && GetCaster()->ToCreature()->AI())
GetCaster()->ToCreature()->AI()->Talk(2);
- target->DespawnOrUnsummon(500);
+ target->DespawnOrUnsummon(500ms);
}
void Register() override
@@ -1083,7 +1083,7 @@ class spell_item_enchanted_broom_periodic : public AuraScript
{
if (owner->isMoving())
{
- GetTarget()->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, GetTarget()->GetFollowAngle(), MOTION_SLOT_ACTIVE);
+ GetTarget()->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, MINI_PET_FOLLOW_ANGLE, MOTION_SLOT_ACTIVE);
}
else
{
@@ -1206,27 +1206,38 @@ class spell_item_direbrew_remote_aura : public AuraScript
}
};
-enum EyeOfGruul
+enum HealingTrance
{
- SPELL_DRUID_ITEM_HEALING_TRANCE = 37721,
- SPELL_PALADIN_ITEM_HEALING_TRANCE = 37723,
- SPELL_PRIEST_ITEM_HEALING_TRANCE = 37706,
- SPELL_SHAMAN_ITEM_HEALING_TRANCE = 37722
+ SPELL_HEALING_DISCOUNT = 37705,
+ SPELL_SOUL_PRESERVER = 60510,
+ SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE = 37706,
+ SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE = 37721,
+ SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE = 37722,
+ SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE = 37723,
+ SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE = 60512,
+ SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE = 60513,
+ SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE = 60514,
+ SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE = 60515,
};
// 37705 - Healing Discount
-class spell_item_eye_of_gruul_healing_discount : public AuraScript
+// 60510 - Soul Preserver
+class spell_item_healing_trance : public AuraScript
{
- PrepareAuraScript(spell_item_eye_of_gruul_healing_discount);
+ PrepareAuraScript(spell_item_healing_trance);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
- SPELL_DRUID_ITEM_HEALING_TRANCE,
- SPELL_PALADIN_ITEM_HEALING_TRANCE,
- SPELL_PRIEST_ITEM_HEALING_TRANCE,
- SPELL_SHAMAN_ITEM_HEALING_TRANCE
+ SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE,
});
}
@@ -1235,32 +1246,57 @@ class spell_item_eye_of_gruul_healing_discount : public AuraScript
PreventDefaultAction();
if (Unit* unitTarget = GetTarget())
{
- uint32 spell_id = 0;
- switch (unitTarget->getClass())
+ uint32 const itemSpell = GetSpellInfo()->Id;
+ uint32 spellId = 0;
+
+ if (itemSpell == SPELL_HEALING_DISCOUNT)
+ {
+ switch (unitTarget->getClass())
+ {
+ case CLASS_DRUID:
+ spellId = SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_PALADIN:
+ spellId = SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_PRIEST:
+ spellId = SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_SHAMAN:
+ spellId = SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ default:
+ return; // ignore for non-healing classes
+ }
+ }
+ else if (itemSpell == SPELL_SOUL_PRESERVER)
{
+ switch (unitTarget->getClass())
+ {
case CLASS_DRUID:
- spell_id = SPELL_DRUID_ITEM_HEALING_TRANCE;
+ spellId = SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_PALADIN:
- spell_id = SPELL_PALADIN_ITEM_HEALING_TRANCE;
+ spellId = SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_PRIEST:
- spell_id = SPELL_PRIEST_ITEM_HEALING_TRANCE;
+ spellId = SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_SHAMAN:
- spell_id = SPELL_SHAMAN_ITEM_HEALING_TRANCE;
+ spellId = SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE;
break;
default:
return; // ignore for non-healing classes
+ }
}
- unitTarget->CastSpell(unitTarget, spell_id, true, nullptr, aurEff);
+ unitTarget->CastSpell(unitTarget, spellId, true, nullptr, aurEff);
}
}
void Register() override
{
- OnEffectProc += AuraEffectProcFn(spell_item_eye_of_gruul_healing_discount::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ OnEffectProc += AuraEffectProcFn(spell_item_healing_trance::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
}
};
@@ -1467,16 +1503,20 @@ class spell_item_blessing_of_ancient_kings : public AuraScript
HealInfo* healInfo = eventInfo.GetHealInfo();
if (!healInfo)
- {
return;
- }
int32 absorb = int32(CalculatePct(healInfo->GetHeal(), 15.0f));
// xinef: all heals contribute to one bubble
if (AuraEffect* protEff = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PROTECTION_OF_ANCIENT_KINGS, 0/*, eventInfo.GetActor()->GetGUID()*/))
{
- // The shield can grow to a maximum size of 20,000 damage absorbtion
- protEff->SetAmount(std::min<int32>(protEff->GetAmount() + absorb, 20000));
+ // The shield is supposed to cap out at 20,000 absorption...
+ absorb += protEff->GetAmount();
+
+ // ...but Blizz wrote this instead. See #23152 for details
+ if (absorb > 20000)
+ absorb = 200000;
+
+ protEff->SetAmount(absorb);
// Refresh and return to prevent replacing the aura
protEff->GetBase()->RefreshDuration();
@@ -1629,7 +1669,7 @@ public:
_player->HandleEmoteCommand(RAND(EMOTE_ONESHOT_APPLAUD, EMOTE_ONESHOT_DANCESPECIAL, EMOTE_ONESHOT_LAUGH, EMOTE_ONESHOT_CHEER, EMOTE_ONESHOT_CHICKEN));
}
- _player->m_Events.AddEvent(this, RAND(_player->m_Events.CalculateTime(5000), _player->m_Events.CalculateTime(10000), _player->m_Events.CalculateTime(15000)));
+ _player->m_Events.AddEventAtOffset(this, RAND(5s, 10s, 15s));
return false; // do not delete re-added event in EventProcessor::Update
}
@@ -1650,7 +1690,7 @@ class spell_item_party_time : public AuraScript
return;
}
- player->m_Events.AddEvent(new PartyTimeEmoteEvent(player), RAND(player->m_Events.CalculateTime(5000), player->m_Events.CalculateTime(10000), player->m_Events.CalculateTime(15000)));
+ player->m_Events.AddEventAtOffset(new PartyTimeEmoteEvent(player), RAND(5s, 10s, 15s));
}
void Register() override
@@ -4292,7 +4332,7 @@ void AddSC_item_spell_scripts()
RegisterSpellScript(spell_item_summon_or_dismiss);
RegisterSpellScript(spell_item_draenic_pale_ale);
RegisterSpellAndAuraScriptPair(spell_item_direbrew_remote, spell_item_direbrew_remote_aura);
- RegisterSpellScript(spell_item_eye_of_gruul_healing_discount);
+ RegisterSpellScript(spell_item_healing_trance);
RegisterSpellScript(spell_item_summon_argent_knight);
RegisterSpellScript(spell_item_instant_statue);
// 23074 Arcanite Dragonling
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 127bd957aa..9020cb9918 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -68,7 +68,7 @@ class spell_q11065_wrangle_some_aether_rays_aura : public AuraScript
{
cr->CastSpell(player, 40926, true);
cr->GetMotionMaster()->MoveFollow(player, 5.0f, 2 * M_PI * rand_norm());
- ar->ToCreature()->DespawnOrUnsummon(500);
+ ar->ToCreature()->DespawnOrUnsummon(500ms);
}
}
}
@@ -756,10 +756,10 @@ private:
uint32 _originalEntry;
uint32 _newEntry;
bool _shouldAttack;
- uint32 _despawnTime;
+ Milliseconds _despawnTime;
public:
- spell_generic_quest_update_entry_SpellScript(uint16 spellEffect, uint8 effIndex, uint32 originalEntry, uint32 newEntry, bool shouldAttack, uint32 despawnTime = 0) :
+ spell_generic_quest_update_entry_SpellScript(uint16 spellEffect, uint8 effIndex, uint32 originalEntry, uint32 newEntry, bool shouldAttack, Milliseconds despawnTime = 0ms) :
SpellScript(), _spellEffect(spellEffect), _effIndex(effIndex), _originalEntry(originalEntry),
_newEntry(newEntry), _shouldAttack(shouldAttack), _despawnTime(despawnTime) { }
@@ -772,7 +772,7 @@ public:
if (_shouldAttack && creatureTarget->IsAIEnabled)
creatureTarget->AI()->AttackStart(GetCaster());
- if (_despawnTime)
+ if (_despawnTime > 0ms)
creatureTarget->DespawnOrUnsummon(_despawnTime);
}
}
@@ -900,10 +900,11 @@ enum Quests6124_6129Data
NPC_SICKLY_GAZELLE = 12296,
NPC_CURED_GAZELLE = 12297,
NPC_SICKLY_DEER = 12298,
- NPC_CURED_DEER = 12299,
- DESPAWN_TIME = 30000
+ NPC_CURED_DEER = 12299
};
+constexpr Milliseconds DESPAWN_TIME = 30s;
+
class spell_q6124_6129_apply_salve : public SpellScript
{
PrepareSpellScript(spell_q6124_6129_apply_salve);
@@ -1364,12 +1365,15 @@ class spell_q12937_relief_for_the_fallen : public AuraScript
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
+ if (!GetCaster() || !GetCaster()->IsPlayer())
+ return;
+
Player* caster = GetCaster()->ToPlayer();
Unit* target = GetUnitOwner();
if (target && target->ToCreature())
{
caster->KilledMonsterCredit(NPC_FALLEN_EARTHEN_DEFENDER);
- target->ToCreature()->DespawnOrUnsummon(5000);
+ target->ToCreature()->DespawnOrUnsummon(5s);
target->SetStandState(UNIT_STAND_STATE_STAND);
target->ToCreature()->AI()->Talk(TALK_FALLEN_EARTHEN_HEALED);
@@ -1510,7 +1514,7 @@ class spell_q9874_liquid_fire : public SpellScript
{
caster->KilledMonsterCredit(NPC_VILLAGER_KILL_CREDIT);
target->CastSpell(target, SPELL_FLAMES, true);
- target->DespawnOrUnsummon(20000);
+ target->DespawnOrUnsummon(20s);
}
}
@@ -1557,7 +1561,7 @@ class spell_q12805_lifeblood_dummy : public SpellScript
caster->KilledMonsterCredit(NPC_SHARD_KILL_CREDIT);
target->CastSpell(target, uint32(GetEffectValue()), true);
- target->DespawnOrUnsummon(2000);
+ target->DespawnOrUnsummon(2s);
}
void Register() override
@@ -2141,7 +2145,7 @@ class spell_q12690_burst_at_the_seams : public SpellScript
void HandleScript(SpellEffIndex /*effIndex*/)
{
- GetCaster()->ToCreature()->DespawnOrUnsummon(2 * IN_MILLISECONDS);
+ GetCaster()->ToCreature()->DespawnOrUnsummon(2s);
}
void Register() override
diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp
index 814871ee1d..6caf5982d2 100644
--- a/src/server/scripts/World/boss_emerald_dragons.cpp
+++ b/src/server/scripts/World/boss_emerald_dragons.cpp
@@ -105,9 +105,9 @@ struct emerald_dragonAI : public WorldBossAI
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_AGGRESSIVE);
DoCast(me, SPELL_MARK_OF_NATURE_AURA, true);
- events.ScheduleEvent(EVENT_TAIL_SWEEP, 4000);
- events.ScheduleEvent(EVENT_NOXIOUS_BREATH, urand(7500, 15000));
- events.ScheduleEvent(EVENT_SEEPING_FOG, urand(12500, 20000));
+ events.ScheduleEvent(EVENT_TAIL_SWEEP, 4s);
+ events.ScheduleEvent(EVENT_NOXIOUS_BREATH, 7500ms, 15s);
+ events.ScheduleEvent(EVENT_SEEPING_FOG, 12500ms, 20s);
events.ScheduleEvent(EVENT_SUMMON_PLAYER, 1s);
}
@@ -128,17 +128,17 @@ struct emerald_dragonAI : public WorldBossAI
// Despawntime is 2 minutes, so reschedule it for new cast after 2 minutes + a minor "random time" (30 seconds at max)
DoCast(me, SPELL_SEEPING_FOG_LEFT, true);
DoCast(me, SPELL_SEEPING_FOG_RIGHT, true);
- events.ScheduleEvent(EVENT_SEEPING_FOG, urand(120000, 150000));
+ events.ScheduleEvent(EVENT_SEEPING_FOG, 120s, 150s);
break;
case EVENT_NOXIOUS_BREATH:
// Noxious Breath is cast on random intervals, no less than 7.5 seconds between
DoCast(me, SPELL_NOXIOUS_BREATH);
- events.ScheduleEvent(EVENT_NOXIOUS_BREATH, urand(7500, 15000));
+ events.ScheduleEvent(EVENT_NOXIOUS_BREATH, 7500ms, 15s);
break;
case EVENT_TAIL_SWEEP:
// Tail Sweep is cast every two seconds, no matter what goes on in front of the dragon
DoCast(me, SPELL_TAIL_SWEEP);
- events.ScheduleEvent(EVENT_TAIL_SWEEP, 2000);
+ events.ScheduleEvent(EVENT_TAIL_SWEEP, 2s);
break;
case EVENT_SUMMON_PLAYER:
if (Unit* target = me->GetVictim())
@@ -219,7 +219,7 @@ public:
});
}
- void SetGUID(ObjectGuid guid, int32 type) override
+ void SetGUID(ObjectGuid const& guid, int32 type) override
{
if (type == GUID_DRAGON)
{
@@ -304,7 +304,7 @@ public:
{
_stage = 1;
emerald_dragonAI::Reset();
- events.ScheduleEvent(EVENT_LIGHTNING_WAVE, 12000);
+ events.ScheduleEvent(EVENT_LIGHTNING_WAVE, 12s);
}
void JustEngagedWith(Unit* who) override
@@ -344,7 +344,7 @@ public:
{
case EVENT_LIGHTNING_WAVE:
DoCastVictim(SPELL_LIGHTNING_WAVE);
- events.ScheduleEvent(EVENT_LIGHTNING_WAVE, urand(10000, 20000));
+ events.ScheduleEvent(EVENT_LIGHTNING_WAVE, 10s, 20s);
break;
default:
emerald_dragonAI::ExecuteEvent(eventId);
@@ -476,7 +476,7 @@ public:
if (moveType == FOLLOW_MOTION_TYPE && data == _summonerGuid.GetCounter())
{
me->CastSpell((Unit*)nullptr, SPELL_DARK_OFFERING, false);
- me->DespawnOrUnsummon(1000);
+ me->DespawnOrUnsummon(1s);
}
}
@@ -524,7 +524,7 @@ public:
{
_stage = 1;
emerald_dragonAI::Reset();
- events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 12000);
+ events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 12s);
}
void KilledUnit(Unit* who) override
@@ -559,7 +559,7 @@ public:
{
case EVENT_VOLATILE_INFECTION:
DoCastVictim(SPELL_VOLATILE_INFECTION);
- events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 120000);
+ events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 120s);
break;
default:
emerald_dragonAI::ExecuteEvent(eventId);
@@ -624,8 +624,8 @@ public:
_banishedTimer = 0;
emerald_dragonAI::Reset();
- events.ScheduleEvent(EVENT_ARCANE_BLAST, 12000);
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, 30000);
+ events.ScheduleEvent(EVENT_ARCANE_BLAST, 12s);
+ events.ScheduleEvent(EVENT_BELLOWING_ROAR, 30s);
}
void JustEngagedWith(Unit* who) override
@@ -671,11 +671,11 @@ public:
{
case EVENT_ARCANE_BLAST:
DoCast(SPELL_ARCANE_BLAST);
- events.ScheduleEvent(EVENT_ARCANE_BLAST, urand(7000, 12000));
+ events.ScheduleEvent(EVENT_ARCANE_BLAST, 7s, 12s);
break;
case EVENT_BELLOWING_ROAR:
DoCast(SPELL_BELLOWING_ROAR);
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(20000, 30000));
+ events.ScheduleEvent(EVENT_BELLOWING_ROAR, 20s, 30s);
break;
default:
emerald_dragonAI::ExecuteEvent(eventId);
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index ff9adc9635..b28ffaade3 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -283,7 +283,7 @@ public:
for (std::list<Creature*>::const_iterator itr = cList.begin(); itr != cList.end(); ++itr)
{
player->KilledMonsterCredit(NPC_WINTERFIN_TADPOLE);
- (*itr)->DespawnOrUnsummon(urand(45000, 60000));
+ (*itr)->DespawnOrUnsummon(randtime(45s, 60s));
(*itr)->GetMotionMaster()->MoveFollow(player, 1.0f, frand(0.0f, 2 * M_PI), MOTION_SLOT_CONTROLLED);
}
}
@@ -412,7 +412,7 @@ public:
void Initialize()
{
- _events.ScheduleEvent(EVENT_CHECK, 1000);
+ _events.ScheduleEvent(EVENT_CHECK, 1s);
}
void UpdateAI(uint32 const diff) override
@@ -432,7 +432,7 @@ public:
}
else
{
- _events.ScheduleEvent(EVENT_CHECK, 1000);
+ _events.ScheduleEvent(EVENT_CHECK, 1s);
}
break;
}
@@ -474,7 +474,7 @@ public:
{
go_l70_etc_musicAI(GameObject* go) : GameObjectAI(go)
{
- _events.ScheduleEvent(EVENT_ETC_START_MUSIC, 1600);
+ _events.ScheduleEvent(EVENT_ETC_START_MUSIC, 1600ms);
}
void UpdateAI(uint32 diff) override
@@ -489,7 +489,7 @@ public:
me->PlayDirectMusic(MUSIC_L70_ETC_MUSIC_LOUD);
else
me->PlayDirectMusic(MUSIC_L70_ETC_MUSIC);
- _events.ScheduleEvent(EVENT_ETC_START_MUSIC, 1600); // Every 1.6 seconds SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
+ _events.ScheduleEvent(EVENT_ETC_START_MUSIC, 1600ms); // Every 1.6 seconds SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
break;
default:
break;
@@ -521,15 +521,12 @@ enum BrewfestMusic
};
// These are in seconds
-enum BrewfestMusicTime
-{
- EVENT_BREWFESTDWARF01_TIME = 95000,
- EVENT_BREWFESTDWARF02_TIME = 155000,
- EVENT_BREWFESTDWARF03_TIME = 23000,
- EVENT_BREWFESTGOBLIN01_TIME = 68000,
- EVENT_BREWFESTGOBLIN02_TIME = 93000,
- EVENT_BREWFESTGOBLIN03_TIME = 28000
-};
+constexpr Milliseconds EVENT_BREWFESTDWARF01_TIME = 95s;
+constexpr Milliseconds EVENT_BREWFESTDWARF02_TIME = 155s;
+constexpr Milliseconds EVENT_BREWFESTDWARF03_TIME = 23s;
+constexpr Milliseconds EVENT_BREWFESTGOBLIN01_TIME = 68s;
+constexpr Milliseconds EVENT_BREWFESTGOBLIN02_TIME = 93s;
+constexpr Milliseconds EVENT_BREWFESTGOBLIN03_TIME = 28s;
enum BrewfestMusicEvents
{
@@ -546,8 +543,8 @@ public:
{
go_brewfest_musicAI(GameObject* go) : GameObjectAI(go)
{
- _events.ScheduleEvent(EVENT_BM_SELECT_MUSIC, 1000);
- _events.ScheduleEvent(EVENT_BM_START_MUSIC, 1500);
+ _events.ScheduleEvent(EVENT_BM_SELECT_MUSIC, 1s);
+ _events.ScheduleEvent(EVENT_BM_START_MUSIC, 1500ms);
_currentMusicEvent = EVENT_BREWFESTGOBLIN01;
}
@@ -564,7 +561,7 @@ public:
break;
// Select random music sample
uint32 rnd = urand(0, 2);
- uint32 musicTime = 1000;
+ Milliseconds musicTime = 1s;
//Restart the current selected music
_currentMusicEvent = 0;
//Check zone to play correct music
@@ -652,7 +649,7 @@ public:
{
me->PlayDirectMusic(_currentMusicEvent);
}
- _events.ScheduleEvent(EVENT_BM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client
+ _events.ScheduleEvent(EVENT_BM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client
break;
default:
break;
@@ -695,7 +692,7 @@ public:
go_pirate_day_musicAI(GameObject* go) : GameObjectAI(go)
{
- _events.ScheduleEvent(EVENT_PDM_START_MUSIC, 1000);
+ _events.ScheduleEvent(EVENT_PDM_START_MUSIC, 1s);
}
void UpdateAI(uint32 diff) override
@@ -709,7 +706,7 @@ public:
if (!IsHolidayActive(HOLIDAY_PIRATES_DAY))
break;
me->PlayDirectMusic(MUSIC_PIRATE_DAY_MUSIC);
- _events.ScheduleEvent(EVENT_PDM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
+ _events.ScheduleEvent(EVENT_PDM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
break;
default:
break;
@@ -750,7 +747,7 @@ public:
go_darkmoon_faire_musicAI(GameObject* go) : GameObjectAI(go)
{
- _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 1000);
+ _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 1s);
}
void UpdateAI(uint32 diff) override
@@ -764,7 +761,7 @@ public:
if (!IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_ELWYNN) || !IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_THUNDER) || !IsHolidayActive(HOLIDAY_DARKMOON_FAIRE_SHATTRATH))
break;
me->PlayDirectMusic(MUSIC_DARKMOON_FAIRE_MUSIC);
- _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
+ _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
break;
default:
break;
@@ -805,7 +802,7 @@ public:
{
go_midsummer_musicAI(GameObject* go) : GameObjectAI(go)
{
- _events.ScheduleEvent(EVENT_MM_START_MUSIC, 1000);
+ _events.ScheduleEvent(EVENT_MM_START_MUSIC, 1s);
}
void UpdateAI(uint32 diff) override
@@ -836,7 +833,7 @@ public:
}
}
- _events.ScheduleEvent(EVENT_MM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
+ _events.ScheduleEvent(EVENT_MM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
break;
}
default:
@@ -895,7 +892,7 @@ public:
_playerGUID = player->GetGUID();
me->SetGameObjectFlag((GameObjectFlags)1);
me->RemoveByteFlag(GAMEOBJECT_BYTES_1, 0, 1);
- _events.ScheduleEvent(EVENT_STILLBLADE_SPAWN, 1000);
+ _events.ScheduleEvent(EVENT_STILLBLADE_SPAWN, 1s);
}
}
return true;
@@ -914,7 +911,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
{
player->SummonCreature(NPC_STILLBLADE, 8032.587f, -7524.518f, 149.68073f, 6.161012172698974609f, TEMPSUMMON_DEAD_DESPAWN, 60000);
- _events.ScheduleEvent(EVENT_RESET_BRAZIER, 4000);
+ _events.ScheduleEvent(EVENT_RESET_BRAZIER, 4s);
}
break;
}
@@ -1066,7 +1063,7 @@ class go_southfury_moonstone : public GameObjectScript
public:
go_southfury_moonstone() : GameObjectScript("go_southfury_moonstone") { }
- bool OnGossipHello(Player* player, GameObject* /*go*/) override
+ bool OnGossipHello(Player* player, GameObject* go) override
{
//implicitTarget=48 not implemented as of writing this code, and manual summon may be just ok for our purpose
//player->CastSpell(player, SPELL_SUMMON_RIZZLE, false);
@@ -1076,6 +1073,7 @@ public:
// no need casting spell blackjack, it's casted by script npc_rizzle_sprysprocket.
//creature->CastSpell(player, SPELL_BLACKJACK, false);
creature->AI()->AttackStart(player);
+ go->DespawnOrUnsummon(8000ms);
}
return false;
@@ -1696,7 +1694,7 @@ public:
for (std::list<Creature*>::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr)
{
player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID());
- (*itr)->DespawnOrUnsummon(5000);
+ (*itr)->DespawnOrUnsummon(5s);
(*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX() + 5, go->GetPositionY(), go->GetPositionZ());
(*itr)->AI()->Talk(SAY_FREE_0);
(*itr)->GetMotionMaster()->Clear();
@@ -1821,7 +1819,7 @@ public:
{
// Reset
once = false;
- _events.ScheduleEvent(EVENT_TIME, 1000);
+ _events.ScheduleEvent(EVENT_TIME, 1s);
}
while (uint32 eventId = _events.ExecuteEvent())
@@ -1844,7 +1842,7 @@ public:
// Schedule ring event
for (auto i = 0; i < _rings; ++i)
{
- _events.ScheduleEvent(EVENT_RING_BELL, (i * 4 + 1) * 1000);
+ _events.ScheduleEvent(EVENT_RING_BELL, Seconds(i * 4 + 1));
}
break;
}
diff --git a/src/server/scripts/World/npc_stave_of_ancients.cpp b/src/server/scripts/World/npc_stave_of_ancients.cpp
index 20c64c4921..159ff1e72c 100644
--- a/src/server/scripts/World/npc_stave_of_ancients.cpp
+++ b/src/server/scripts/World/npc_stave_of_ancients.cpp
@@ -42,7 +42,7 @@ void NPCStaveQuestAI::RevealForm()
{
me->UpdateEntry(GetFormEntry("evil"));
me->SetFullHealth();
- me->DespawnOrUnsummon(900000);
+ me->DespawnOrUnsummon(900s);
}
}
@@ -306,11 +306,11 @@ public:
me->CastSpell(who, SPELL_FOOLS_PLIGHT, true);
}
- events.ScheduleEvent(EVENT_FOOLS_PLIGHT, urand(2000, 3000));
- events.ScheduleEvent(EVENT_RANGE_CHECK, 1000);
- events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1000);
- events.ScheduleEvent(ARTORIUS_EVENT_DEMONIC_DOOM, urand(3000, 5000));
- events.ScheduleEvent(ARTORIUS_EVENT_DEMONIC_ENRAGE, urand(6000, 8000));
+ events.ScheduleEvent(EVENT_FOOLS_PLIGHT, 2s, 3s);
+ events.ScheduleEvent(EVENT_RANGE_CHECK, 1s);
+ events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1s);
+ events.ScheduleEvent(ARTORIUS_EVENT_DEMONIC_DOOM, 3s, 5s);
+ events.ScheduleEvent(ARTORIUS_EVENT_DEMONIC_ENRAGE, 6s, 8s);
}
void UpdateAI(uint32 diff) override
@@ -325,7 +325,7 @@ public:
me->Say(ARTORIUS_SAY);
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- events.ScheduleEvent(EVENT_REVEAL, 5000);
+ events.ScheduleEvent(EVENT_REVEAL, 5s);
break;
case EVENT_REVEAL:
RevealForm();
@@ -355,7 +355,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FOOLS_PLIGHT, true);
}
- events.RepeatEvent(urand(3000, 6000));
+ events.Repeat(3s, 6s);
break;
case EVENT_RANGE_CHECK:
if (!me->GetVictim() || !me->GetVictim()->IsWithinDist2d(me, 60.0f))
@@ -364,7 +364,7 @@ public:
}
else
{
- events.RepeatEvent(2000);
+ events.Repeat(2s);
}
break;
case EVENT_UNFAIR_FIGHT:
@@ -373,21 +373,21 @@ public:
SetHomePosition();
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1);
me->SetImmuneToAll(true);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
case ARTORIUS_EVENT_DEMONIC_DOOM:
if (!me->GetVictim()->HasAura(ARTORIUS_SPELL_DEMONIC_DOOM))
{
me->CastSpell(me->GetVictim(), ARTORIUS_SPELL_DEMONIC_DOOM, false);
}
- events.RepeatEvent(urand(5000, 10000));
+ events.Repeat(5s, 10s);
break;
case ARTORIUS_EVENT_DEMONIC_ENRAGE:
me->CastSpell(me, SPELL_DEMONIC_ENRAGE, false);
- events.RepeatEvent(urand(22000, 39000));
+ events.Repeat(22s, 39s);
break;
}
@@ -423,7 +423,7 @@ public:
if (action == EVENT_ENCOUNTER_START)
{
PrepareForEncounter();
- events.ScheduleEvent(EVENT_ENCOUNTER_START, 5000);
+ events.ScheduleEvent(EVENT_ENCOUNTER_START, 5s);
}
}
};
@@ -476,7 +476,7 @@ public:
{
if (flaggedForDespawn)
{
- me->DespawnOrUnsummon(0);
+ me->DespawnOrUnsummon(0ms);
flaggedForDespawn = false;
}
}
@@ -640,7 +640,7 @@ public:
}
else
{
- Precious()->DespawnOrUnsummon(0);
+ Precious()->DespawnOrUnsummon(0ms);
}
}
@@ -649,7 +649,7 @@ public:
ResetState(SIMONE_SPELL_SILENCE);
events.Reset();
- events.ScheduleEvent(SIMONE_EVENT_CHECK_PET_STATE, 2000);
+ events.ScheduleEvent(SIMONE_EVENT_CHECK_PET_STATE, 2s);
}
void JustEngagedWith(Unit* who) override
@@ -664,13 +664,13 @@ public:
me->CastSpell(who, SPELL_FOOLS_PLIGHT, true);
}
- events.ScheduleEvent(EVENT_RANGE_CHECK, 1000);
- events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1000);
- events.ScheduleEvent(SIMONE_EVENT_CHAIN_LIGHTNING, 3000);
- events.ScheduleEvent(SIMONE_EVENT_TEMPTRESS_KISS, 1000);
+ events.ScheduleEvent(EVENT_RANGE_CHECK, 1s);
+ events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1s);
+ events.ScheduleEvent(SIMONE_EVENT_CHAIN_LIGHTNING, 3s);
+ events.ScheduleEvent(SIMONE_EVENT_TEMPTRESS_KISS, 1s);
}
- events.ScheduleEvent(EVENT_FOOLS_PLIGHT, urand(2000, 3000));
+ events.ScheduleEvent(EVENT_FOOLS_PLIGHT, 2s, 3s);
}
void UpdateAI(uint32 diff) override
@@ -685,7 +685,7 @@ public:
me->TextEmote(SIMONE_EMOTE, GetGossipPlayer());
me->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
- events.ScheduleEvent(SIMONE_EVENT_TALK, 4000);
+ events.ScheduleEvent(SIMONE_EVENT_TALK, 4s);
break;
case SIMONE_EVENT_TALK:
me->Say(SIMONE_SAY, GetGossipPlayer());
@@ -695,7 +695,7 @@ public:
{
Precious()->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
}
- events.ScheduleEvent(EVENT_REVEAL, 5000);
+ events.ScheduleEvent(EVENT_REVEAL, 5s);
break;
case EVENT_REVEAL:
RevealForm();
@@ -713,7 +713,7 @@ public:
HandlePetRespawn();
}
- events.ScheduleEvent(SIMONE_EVENT_CHECK_PET_STATE, 1000);
+ events.ScheduleEvent(SIMONE_EVENT_CHECK_PET_STATE, 1s);
}
break;
}
@@ -730,7 +730,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING) && eventId != EVENT_RANGE_CHECK && eventId != EVENT_UNFAIR_FIGHT)
{
- events.RepeatEvent(1000);
+ events.Repeat(1s);
return;
}
@@ -742,7 +742,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FOOLS_PLIGHT, true);
}
- events.RepeatEvent(urand(3000, 6000));
+ events.Repeat(3s, 6s);
break;
case EVENT_RANGE_CHECK:
if (!me->GetVictim()->IsWithinDist2d(me, 60.0f))
@@ -751,7 +751,7 @@ public:
}
else
{
- events.RepeatEvent(2000);
+ events.Repeat(2s);
}
break;
case EVENT_UNFAIR_FIGHT:
@@ -765,20 +765,20 @@ public:
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1);
me->SetImmuneToAll(true);
- Precious()->DespawnOrUnsummon(5000);
+ Precious()->DespawnOrUnsummon(5s);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
case SIMONE_EVENT_CHAIN_LIGHTNING:
me->CastSpell(me->GetVictim(), SIMONE_SPELL_CHAIN_LIGHTNING, false);
- events.RepeatEvent(7000);
+ events.Repeat(7s);
break;
case SIMONE_EVENT_TEMPTRESS_KISS:
me->CastSpell(me->GetVictim(), SIMONE_SPELL_TEMPTRESS_KISS, false);
- events.RepeatEvent(45000);
+ events.Repeat(45s);
break;
}
@@ -805,7 +805,7 @@ public:
PreciousAI()->PrepareForEncounter();
}
gossipPlayerGUID = playerGUID;
- events.ScheduleEvent(EVENT_ENCOUNTER_START, 1000);
+ events.ScheduleEvent(EVENT_ENCOUNTER_START, 1s);
}
};
@@ -906,11 +906,11 @@ public:
me->CastSpell(who, SPELL_FOOLS_PLIGHT, true);
}
- events.ScheduleEvent(EVENT_FOOLS_PLIGHT, urand(2000, 3000));
- events.ScheduleEvent(EVENT_RANGE_CHECK, 1000);
- events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1000);
- events.ScheduleEvent(NELSON_EVENT_DREADFUL_FRIGHT, 10000);
- events.ScheduleEvent(NELSON_EVENT_CREEPING_DOOM, 5000);
+ events.ScheduleEvent(EVENT_FOOLS_PLIGHT, 2s, 3s);
+ events.ScheduleEvent(EVENT_RANGE_CHECK, 1s);
+ events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1s);
+ events.ScheduleEvent(NELSON_EVENT_DREADFUL_FRIGHT, 10s);
+ events.ScheduleEvent(NELSON_EVENT_CREEPING_DOOM, 5s);
}
void UpdateAI(uint32 diff) override
@@ -925,7 +925,7 @@ public:
me->Say(NELSON_SAY);
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- events.ScheduleEvent(EVENT_REVEAL, 5000);
+ events.ScheduleEvent(EVENT_REVEAL, 5s);
break;
case EVENT_REVEAL:
RevealForm();
@@ -944,7 +944,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
{
- events.RepeatEvent(1000);
+ events.Repeat(1s);
return;
}
@@ -956,7 +956,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FOOLS_PLIGHT, true);
}
- events.RepeatEvent(urand(3000, 6000));
+ events.Repeat(3s, 6s);
break;
case EVENT_RANGE_CHECK:
if (!me->GetVictim()->IsWithinDist2d(me, 60.0f))
@@ -965,7 +965,7 @@ public:
}
else
{
- events.RepeatEvent(2000);
+ events.Repeat(2s);
}
break;
case EVENT_UNFAIR_FIGHT:
@@ -978,18 +978,18 @@ public:
me->CombatStop(true);
me->Say(NELSON_DESPAWN_SAY);
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
case NELSON_EVENT_DREADFUL_FRIGHT:
me->CastSpell(me->GetVictim(), NELSON_SPELL_DREADFUL_FRIGHT, false);
- events.RepeatEvent(urand(12000, 19000));
+ events.Repeat(12s, 19s);
break;
case NELSON_EVENT_CREEPING_DOOM:
me->CastSpell(me->GetVictim(), NELSON_SPELL_CREEPING_DOOM, false);
- events.RepeatEvent(urand(10000, 12000));
+ events.Repeat(10s, 12s);
break;
}
@@ -1016,7 +1016,7 @@ public:
if (action == EVENT_ENCOUNTER_START)
{
PrepareForEncounter();
- events.ScheduleEvent(EVENT_ENCOUNTER_START, 5000);
+ events.ScheduleEvent(EVENT_ENCOUNTER_START, 5s);
}
}
};
@@ -1077,12 +1077,12 @@ public:
me->CastSpell(who, SPELL_FOOLS_PLIGHT, true);
}
- events.ScheduleEvent(FRANKLIN_EVENT_DEMONIC_ENRAGE, urand(9000, 13000));
- events.ScheduleEvent(EVENT_RANGE_CHECK, 1000);
- events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1000);
+ events.ScheduleEvent(FRANKLIN_EVENT_DEMONIC_ENRAGE, 9s, 13s);
+ events.ScheduleEvent(EVENT_RANGE_CHECK, 1s);
+ events.ScheduleEvent(EVENT_UNFAIR_FIGHT, 1s);
}
- events.ScheduleEvent(EVENT_FOOLS_PLIGHT, urand(2000, 3000));
+ events.ScheduleEvent(EVENT_FOOLS_PLIGHT, 2s, 3s);
}
void UpdateAI(uint32 diff) override
@@ -1097,7 +1097,7 @@ public:
me->Say(FRANKLIN_SAY, GetGossipPlayer());
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- events.ScheduleEvent(EVENT_REVEAL, 5000);
+ events.ScheduleEvent(EVENT_REVEAL, 5s);
break;
case EVENT_REVEAL:
RevealForm();
@@ -1116,7 +1116,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
{
- events.RepeatEvent(1000);
+ events.Repeat(1s);
return;
}
@@ -1128,7 +1128,7 @@ public:
{
me->CastSpell(me->GetVictim(), SPELL_FOOLS_PLIGHT, true);
}
- events.RepeatEvent(urand(3000, 6000));
+ events.Repeat(3s, 6s);
break;
case EVENT_RANGE_CHECK:
if (!me->GetVictim()->IsWithinDist2d(me, 60.0f))
@@ -1137,7 +1137,7 @@ public:
}
else
{
- events.RepeatEvent(2000);
+ events.Repeat(2s);
}
break;
case EVENT_UNFAIR_FIGHT:
@@ -1149,15 +1149,15 @@ public:
me->CombatStop(true);
me->Say(FRANKLIN_DESPAWN_SAY);
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
- me->DespawnOrUnsummon(5000);
+ me->DespawnOrUnsummon(5s);
break;
}
- events.RepeatEvent(2000);
+ events.Repeat(2s);
break;
case FRANKLIN_EVENT_DEMONIC_ENRAGE:
me->CastSpell(me, SPELL_DEMONIC_ENRAGE, false);
me->TextEmote(FRANKLIN_ENRAGE_EMOTE);
- events.RepeatEvent(urand(9000, 22000));
+ events.Repeat(9s, 22s);
break;
}
@@ -1189,7 +1189,7 @@ public:
{
PrepareForEncounter();
gossipPlayerGUID = playerGUID;
- events.ScheduleEvent(EVENT_ENCOUNTER_START, 5000);
+ events.ScheduleEvent(EVENT_ENCOUNTER_START, 5s);
}
};
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 6612f6dc09..af5e033a2f 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -68,7 +68,7 @@ public:
npc_elder_clearwaterAI(Creature* c) : ScriptedAI(c)
{
events.Reset();
- events.ScheduleEvent(EVENT_CLEARWATER_ANNOUNCE, 1000, 1, 0);
+ events.ScheduleEvent(EVENT_CLEARWATER_ANNOUNCE, 1s, 1, 0);
finished = false;
preWarning = false;
startWarning = false;
@@ -126,7 +126,7 @@ public:
}
}
- events.RepeatEvent(1000);
+ events.Repeat(1s);
break;
}
}
@@ -1421,7 +1421,8 @@ public:
break;
}
- Start(false, true);
+ me->SetWalk(true);
+ Start(false);
}
else
EnterEvadeMode(); //something went wrong