From 21698031c5be4c468457a837ab0687e9d823f57b Mon Sep 17 00:00:00 2001 From: Knindza Date: Tue, 30 Apr 2024 07:09:27 +0200 Subject: [PATCH 1/7] fix(Scripts/Arenas): Updating timer for Shadow Sight spawns (#18748) * Updating Creature. * Updating Arenas * Delete data/sql/updates/pending_db_world/rev_1713104748708628400.sql --- src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp | 2 +- src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp | 2 +- src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp | 2 +- src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp index 87fba47aa..4acc4fafe 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp @@ -40,7 +40,7 @@ void BattlegroundBE::StartingEventOpenDoors() DoorOpen(i); for (uint32 i = BG_BE_OBJECT_BUFF_1; i <= BG_BE_OBJECT_BUFF_2; ++i) - SpawnBGObject(i, 60); + SpawnBGObject(i, 90); } bool BattlegroundBE::HandlePlayerUnderMap(Player* player) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp index 66e6f445b..53d4b3314 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp @@ -103,7 +103,7 @@ void BattlegroundDS::StartingEventOpenDoors() DoorOpen(i); for (uint32 i = BG_DS_OBJECT_BUFF_1; i <= BG_DS_OBJECT_BUFF_2; ++i) - SpawnBGObject(i, 60); + SpawnBGObject(i, 90); _events.ScheduleEvent(BG_DS_EVENT_WATERFALL_WARNING, BG_DS_WATERFALL_TIMER_MIN, BG_DS_WATERFALL_TIMER_MAX); //for (uint8 i = 0; i < BG_DS_PIPE_KNOCKBACK_TOTAL_COUNT; ++i) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp index 817014607..3b6d385e3 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp @@ -36,7 +36,7 @@ void BattlegroundNA::StartingEventOpenDoors() DoorOpen(i); for (uint32 i = BG_NA_OBJECT_BUFF_1; i <= BG_NA_OBJECT_BUFF_2; ++i) - SpawnBGObject(i, 60); + SpawnBGObject(i, 90); } bool BattlegroundNA::HandlePlayerUnderMap(Player* player) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp index 72f41344d..483d5a9c3 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp @@ -37,7 +37,7 @@ void BattlegroundRL::StartingEventOpenDoors() DoorOpen(i); for (uint32 i = BG_RL_OBJECT_BUFF_1; i <= BG_RL_OBJECT_BUFF_2; ++i) - SpawnBGObject(i, 60); + SpawnBGObject(i, 90); } bool BattlegroundRL::HandlePlayerUnderMap(Player* player) From 90548f7ad1a6697f711fa5386a1745bb14ca20cd Mon Sep 17 00:00:00 2001 From: Gabriele Sani Date: Tue, 30 Apr 2024 08:32:49 +0200 Subject: [PATCH 2/7] fix(DB/Creature): fixed Timber respawn time (#18625) * fix(DB/Creature): fixed Timber respawn time Decreased Timber respawn timer from 2 hours to 45 minutes * delete const --------- Co-authored-by: Pagani Walter --- data/sql/updates/pending_db_world/fix-issue-18433.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/sql/updates/pending_db_world/fix-issue-18433.sql diff --git a/data/sql/updates/pending_db_world/fix-issue-18433.sql b/data/sql/updates/pending_db_world/fix-issue-18433.sql new file mode 100644 index 000000000..690d41131 --- /dev/null +++ b/data/sql/updates/pending_db_world/fix-issue-18433.sql @@ -0,0 +1 @@ +UPDATE `creature` SET `spawntimesecs`=2700 WHERE `guid` IN (3154, 134483, 134484) AND `id1`=1132; From ab84d9f0bbf7889b4b1f6b4e41d3268e876e02d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Apr 2024 06:33:40 +0000 Subject: [PATCH 3/7] chore(DB): import pending files Referenced commit(s): 90548f7ad1a6697f711fa5386a1745bb14ca20cd --- .../fix-issue-18433.sql => db_world/2024_04_30_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/fix-issue-18433.sql => db_world/2024_04_30_00.sql} (69%) diff --git a/data/sql/updates/pending_db_world/fix-issue-18433.sql b/data/sql/updates/db_world/2024_04_30_00.sql similarity index 69% rename from data/sql/updates/pending_db_world/fix-issue-18433.sql rename to data/sql/updates/db_world/2024_04_30_00.sql index 690d41131..8eb256904 100644 --- a/data/sql/updates/pending_db_world/fix-issue-18433.sql +++ b/data/sql/updates/db_world/2024_04_30_00.sql @@ -1 +1,2 @@ +-- DB update 2024_04_29_00 -> 2024_04_30_00 UPDATE `creature` SET `spawntimesecs`=2700 WHERE `guid` IN (3154, 134483, 134484) AND `id1`=1132; From ab7405f94e8959d91ef1500a14b97218976bd8db Mon Sep 17 00:00:00 2001 From: sudlud Date: Tue, 30 Apr 2024 11:56:17 +0200 Subject: [PATCH 4/7] fix(Core/Map): remove hackfix that blocked update of GOs beeing set active (#18812) - this just broke the whole purpose of setActive(true) if the gameobjects is still not really beeing set active afterwards - GetGridActivationRange() returns 0.0f for gameobjects anyways - so CalculateCellArea() will result in the minimal cell area around the gameobject's position - if the cell around the gameobject should not be updated, the gameobject should not have been set active in the first place --- src/server/game/Maps/Map.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 8eecf7ced..16d062894 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -702,9 +702,6 @@ void Map::VisitNearbyCellsOf(WorldObject* obj, TypeContainerVisitorIsPositionValid()) return; - if (obj->GetGridActivationRange() <= 0.0f) // pussywizard: gameobjects for example are on active lists, but range is equal to 0 (they just prevent grid unloading) - return; - // Update mobs/objects in ALL visible cells around object! CellArea area = Cell::CalculateCellArea(obj->GetPositionX(), obj->GetPositionY(), obj->GetGridActivationRange()); From 0dc822d21efe0ff7134afd28d0e3596c17460e6d Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sat, 4 May 2024 16:56:48 +0200 Subject: [PATCH 5/7] fix(Scripts/Magtheridon): Clicking cubes should Banish Magtheridon (#18856) * init * rewrite without action * fix: add Talk(SAY_BANISH) --- .../rev_1714650326089446105.sql | 3 ++ .../MagtheridonsLair/boss_magtheridon.cpp | 52 ++++++++++++------- 2 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1714650326089446105.sql diff --git a/data/sql/updates/pending_db_world/rev_1714650326089446105.sql b/data/sql/updates/pending_db_world/rev_1714650326089446105.sql new file mode 100644 index 000000000..9e128a556 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1714650326089446105.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 30166; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (30166, 'spell_magtheridon_shadow_grasp_visual'); diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 1994fefce..09183cc5d 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -52,6 +52,7 @@ enum Spells SPELL_BERSERK = 27680, SPELL_SHADOW_GRASP = 30410, SPELL_SHADOW_GRASP_VISUAL = 30166, + SPELL_SHADOW_CAGE_STUN = 30168, SPELL_MIND_EXHAUSTION = 44032, SPELL_QUAKE = 30657, SPELL_QUAKE_KNOCKBACK = 30571, @@ -65,13 +66,13 @@ enum Spells enum Groups { - GROUP_INTERRUPT_CHECK = 0, - GROUP_EARLY_RELEASE_CHECK = 1 + GROUP_EARLY_RELEASE_CHECK = 0 }; enum Actions { - ACTION_INCREASE_HELLFIRE_CHANNELER_DEATH_COUNT = 1 + ACTION_INCREASE_HELLFIRE_CHANNELER_DEATH_COUNT = 1, + ACTION_BANISH_SELF = 2 }; struct boss_magtheridon : public BossAI @@ -188,21 +189,6 @@ struct boss_magtheridon : public BossAI { DoCastSelf(SPELL_BLAST_NOVA); scheduler.DelayAll(10s); - - _interruptScheduler.Schedule(50ms, GROUP_INTERRUPT_CHECK, [this](TaskContext context) - { - if (me->GetAuraCount(SPELL_SHADOW_GRASP_VISUAL) == 5) - { - Talk(SAY_BANISH); - me->InterruptNonMeleeSpells(true); - scheduler.CancelGroup(GROUP_INTERRUPT_CHECK); - } - else - context.Repeat(50ms); - }).Schedule(12s, GROUP_INTERRUPT_CHECK, [this](TaskContext /*context*/) - { - _interruptScheduler.CancelGroup(GROUP_INTERRUPT_CHECK); - }); context.Repeat(54350ms, 55400ms); }).Schedule(22min, [this](TaskContext /*context*/) { @@ -228,6 +214,11 @@ struct boss_magtheridon : public BossAI }); } } + else if (action == ACTION_BANISH_SELF ) + { + Talk(SAY_BANISH); + me->CastSpell(me, SPELL_SHADOW_CAGE_STUN, true); + } } void JustEngagedWith(Unit* who) override @@ -350,6 +341,30 @@ class spell_magtheridon_shadow_grasp : public AuraScript } }; +class spell_magtheridon_shadow_grasp_visual : public AuraScript +{ + PrepareAuraScript(spell_magtheridon_shadow_grasp_visual); + + void HandleDummyApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (GetTarget()->GetAuraCount(SPELL_SHADOW_GRASP_VISUAL) == 5) + { + GetTarget()->GetAI()->DoAction(ACTION_BANISH_SELF); + } + } + + void HandleDummyRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE_STUN); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_magtheridon_shadow_grasp_visual::HandleDummyApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_magtheridon_shadow_grasp_visual::HandleDummyRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + class spell_magtheridon_quake : public SpellScript { PrepareSpellScript(spell_magtheridon_quake); @@ -417,6 +432,7 @@ void AddSC_boss_magtheridon() RegisterMagtheridonsLairCreatureAI(npc_target_trigger); RegisterSpellScript(spell_magtheridon_blaze); RegisterSpellScript(spell_magtheridon_shadow_grasp); + RegisterSpellScript(spell_magtheridon_shadow_grasp_visual); RegisterSpellScript(spell_magtheridon_quake); RegisterSpellScript(spell_magtheridon_debris_target_selector); new go_manticron_cube(); From 1621d6b4774debfc40a05622edff4ba34a540eb4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 4 May 2024 14:57:37 +0000 Subject: [PATCH 6/7] chore(DB): import pending files Referenced commit(s): 0dc822d21efe0ff7134afd28d0e3596c17460e6d --- .../rev_1714650326089446105.sql => db_world/2024_05_04_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1714650326089446105.sql => db_world/2024_05_04_00.sql} (80%) diff --git a/data/sql/updates/pending_db_world/rev_1714650326089446105.sql b/data/sql/updates/db_world/2024_05_04_00.sql similarity index 80% rename from data/sql/updates/pending_db_world/rev_1714650326089446105.sql rename to data/sql/updates/db_world/2024_05_04_00.sql index 9e128a556..2339f616e 100644 --- a/data/sql/updates/pending_db_world/rev_1714650326089446105.sql +++ b/data/sql/updates/db_world/2024_05_04_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_04_30_00 -> 2024_05_04_00 -- DELETE FROM `spell_script_names` WHERE `spell_id` = 30166; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (30166, 'spell_magtheridon_shadow_grasp_visual'); From 715b290cb7b5ea25e377c5ad352d8b343947f15f Mon Sep 17 00:00:00 2001 From: Walter Pagani Date: Sat, 4 May 2024 12:10:24 -0300 Subject: [PATCH 7/7] feat(Map): Add open world LOS settings (#18816) * chore. Add open world LOS settings * Name change and conditional deny * modify information in worldserver.conf.dist * Remove pvp from variables and constants --- src/server/apps/worldserver/worldserver.conf.dist | 9 +++++++++ src/server/game/Maps/Map.cpp | 8 ++++++++ src/server/game/Maps/Map.h | 1 + src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 1 + 5 files changed, 20 insertions(+) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 34a734331..59d4708a0 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -1342,6 +1342,15 @@ vmap.petLOS = 1 vmap.BlizzlikePvPLOS = 1 +# +# vmap.BlizzlikeLOSInOpenWorld +# Description: Check line of sight to see game objects in the open world. +# Default: 1 (Enabled, Players will be able to cast spells through tree stumps and other objects in the open world). +# 0 (Disabled, Players will not be able to cast spells through tree stumps and other objects in the open world). +# + +vmap.BlizzlikeLOSInOpenWorld = 1 + # # vmap.enableIndoorCheck # Description: VMap based indoor check to remove outdoor-only auras (mounts etc.). diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 16d062894..f0edd0928 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2445,6 +2445,14 @@ bool Map::isInLineOfSight(float x1, float y1, float z1, float x2, float y2, floa } } + if (!sWorld->getBoolConfig(CONFIG_VMAP_BLIZZLIKE_LOS_OPEN_WORLD)) + { + if (IsWorldMap()) + { + ignoreFlags = VMAP::ModelIgnoreFlags::Nothing; + } + } + if ((checks & LINEOFSIGHT_CHECK_VMAP) && !VMAP::VMapFactory::createOrGetVMapMgr()->isInLineOfSight(GetId(), x1, y1, z1, x2, y2, z2, ignoreFlags)) { return false; diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 50e4a4c00..168d54111 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -454,6 +454,7 @@ public: [[nodiscard]] bool IsBattleground() const { return i_mapEntry && i_mapEntry->IsBattleground(); } [[nodiscard]] bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); } [[nodiscard]] bool IsBattlegroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattlegroundOrArena(); } + [[nodiscard]] bool IsWorldMap() const { return i_mapEntry && i_mapEntry->IsWorldMap(); } bool GetEntrancePos(int32& mapid, float& x, float& y) { diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index db5284d9b..329176bcb 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -178,6 +178,7 @@ enum WorldBoolConfigs CONFIG_LEAVE_GROUP_ON_LOGOUT, CONFIG_QUEST_POI_ENABLED, CONFIG_VMAP_BLIZZLIKE_PVP_LOS, + CONFIG_VMAP_BLIZZLIKE_LOS_OPEN_WORLD, CONFIG_OBJECT_SPARKLES, CONFIG_LOW_LEVEL_REGEN_BOOST, CONFIG_OBJECT_QUEST_MARKERS, diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 312d76226..c84375abd 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1317,6 +1317,7 @@ void World::LoadConfigSettings(bool reload) bool enableHeight = sConfigMgr->GetOption("vmap.enableHeight", true); bool enablePetLOS = sConfigMgr->GetOption("vmap.petLOS", true); _bool_configs[CONFIG_VMAP_BLIZZLIKE_PVP_LOS] = sConfigMgr->GetOption("vmap.BlizzlikePvPLOS", true); + _bool_configs[CONFIG_VMAP_BLIZZLIKE_LOS_OPEN_WORLD] = sConfigMgr->GetOption("vmap.BlizzlikeLOSInOpenWorld", true); if (!enableHeight) LOG_ERROR("server.loading", "VMap height checking disabled! Creatures movements and other various things WILL be broken! Expect no support.");