From 4f323ae12dd59fe0f4c66b21396a80a7808e7cea Mon Sep 17 00:00:00 2001 From: MagicBot Date: Mon, 26 Oct 2026 00:58:15 -0400 Subject: [PATCH] Build effect cost maps from PowActionCostInfo.cfg PowersManager._effect_costMaps now comes from PowActionCostTemplate instead of static_effect_costmaps. Parity (scripts/p45.py, dev DB): 524/524 ids, 522 identical. Value changes, cfg wins (D2, user decision 2026-10-26): - PRE-092 Yglandor: Sulfur 1 -> 6 - PRE-097 Jagged: adds Sulfur 1 Co-Authored-By: Claude Opus 5.5 --- src/engine/gameManager/PowersManager.java | 9 +++++++++ src/engine/server/world/WorldServer.java | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/engine/gameManager/PowersManager.java b/src/engine/gameManager/PowersManager.java index 0dc04570..6e833886 100644 --- a/src/engine/gameManager/PowersManager.java +++ b/src/engine/gameManager/PowersManager.java @@ -28,6 +28,7 @@ import engine.net.Dispatch; import engine.net.client.ClientConnection; import engine.net.client.msg.*; import engine.objects.*; +import engine.parsers.objects.wpak.PowActionCostTemplate; import engine.parsers.objects.wpak.PowerTemplate; import engine.powers.*; import engine.powers.poweractions.AbstractPowerAction; @@ -94,6 +95,14 @@ public enum PowersManager { return PowersManager.effectsBaseByToken.get(token); } + public static void loadEffectCostMaps() { + + for (PowActionCostTemplate costTemplate : PowActionCostTemplate._costs.values()) + PowersManager._effect_costMaps.put(costTemplate.id, new HashMap<>(costTemplate.costs)); + + Logger.info("Loaded " + PowersManager._effect_costMaps.size() + " effect cost maps from PowActionCostInfo.cfg"); + } + // Powers.cfg target type wins over static_power_powerbase private static void applyClientTargetTypes() { diff --git a/src/engine/server/world/WorldServer.java b/src/engine/server/world/WorldServer.java index 463b897d..84471183 100644 --- a/src/engine/server/world/WorldServer.java +++ b/src/engine/server/world/WorldServer.java @@ -593,7 +593,7 @@ public class WorldServer { ReSpawner.start(); Logger.info("Loading effect cost maps"); - DbManager.EffectsResourceCostsQueries.LOAD_ALL_COSTMAPS(); + PowersManager.loadEffectCostMaps(); Logger.info("Starting ForgeManager thread"); ForgeManager.start();