From 70eb920b108786020dd6a63a6b5f2b43a1b0d893 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Wed, 10 Jul 2024 11:26:53 -0400 Subject: [PATCH] feat(Core/Unit): Implement munching as a configurable option. (#19188) * Init. * Correct description. * Adjust boolean to integer in config. --- src/server/apps/worldserver/worldserver.conf.dist | 7 +++++++ src/server/game/Entities/Unit/Unit.cpp | 2 +- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 98b2ae2c5..01ed59c7b 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -4386,6 +4386,13 @@ TeleportTimeoutFar = 45 DailyRBGArenaPoints.MinLevel = 71 +# +# MunchingBlizzlike.Enabled +# Description: Enable the Blizzlike implementation of munching with e.g. Warrior's Rend or Mage's Ignite +# Default: 1 - (Blizzlike) + +MunchingBlizzlike.Enabled = 1 + # ################################################################################################### diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 57d770907..0a48b0a2c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -20566,7 +20566,7 @@ void Unit::CastDelayedSpellWithPeriodicAmount(Unit* caster, uint32 spellId, Aura } // xinef: delay only for casting on different unit - if (this == caster) + if (this == caster || !sWorld->getBoolConfig(CONFIG_MUNCHING_BLIZZLIKE)) caster->CastCustomSpell(spellId, SPELLVALUE_BASE_POINT0, addAmount, this, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_NO_PERIODIC_RESET), nullptr, nullptr, caster->GetGUID()); else caster->m_Events.AddEvent(new AuraMunchingQueue(*caster, GetGUID(), addAmount, spellId), caster->m_Events.CalculateQueueTime(400)); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 329176bcb..8f91452fe 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -185,6 +185,7 @@ enum WorldBoolConfigs CONFIG_STRICT_NAMES_RESERVED, CONFIG_STRICT_NAMES_PROFANITY, CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH, + CONFIG_MUNCHING_BLIZZLIKE, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 63bc50a47..0cc06171e 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1282,6 +1282,8 @@ void World::LoadConfigSettings(bool reload) _bool_configs[CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH] = sConfigMgr->GetOption("Pet.RankMod.Health", true); + _bool_configs[CONFIG_MUNCHING_BLIZZLIKE] = sConfigMgr->GetOption("MunchingBlizzlike.Enabled", true); + _int_configs[CONFIG_DAILY_RBG_MIN_LEVEL_AP_REWARD] = sConfigMgr->GetOption("DailyRBGArenaPoints.MinLevel", 71); _int_configs[CONFIG_AUCTION_HOUSE_SEARCH_TIMEOUT] = sConfigMgr->GetOption("AuctionHouse.SearchTimeout", 1000);