From 3cf966d0eb5db55a4f46db095461d57d25db4eb1 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Mon, 26 Oct 2026 09:55:38 -0400 Subject: [PATCH] Keep Powers.cfg file order and the client's power key defaults PowerParser fills a LinkedHashMap so boot-assigned power IDs follow the file order (the same order as static_power_powerbase IDs 1..1465). PowerTemplate defaults follow ArcPower_ctor 0x56CD40: MAXLEVEL 9999, CANCASTWHILEFLYING, SHOULDCHECKPATH and CANTARGETADMIN TRUE. No reader yet; every power sets MaxLevel. Co-Authored-By: Claude Opus 5.5 --- src/engine/parsers/objects/wpak/PowerTemplate.java | 10 ++++++---- src/engine/parsers/wpak/PowerParser.java | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/engine/parsers/objects/wpak/PowerTemplate.java b/src/engine/parsers/objects/wpak/PowerTemplate.java index b373d53c..f94533fc 100644 --- a/src/engine/parsers/objects/wpak/PowerTemplate.java +++ b/src/engine/parsers/objects/wpak/PowerTemplate.java @@ -51,8 +51,10 @@ public class PowerTemplate { // Keys + // Key defaults follow the client ctor ArcPower_ctor 0x56CD40 + public final ArrayList actions = new ArrayList<>(); - public int maxlevel; + public int maxlevel = 9999; public float hatevalue; public String hatevalue_curve; public String grantoverridevar; @@ -71,10 +73,10 @@ public class PowerTemplate { public int loopanimid; public boolean bladetrails; public boolean cancastwhilemoving; - public boolean cancastwhileflying; - public boolean shouldcheckpath; + public boolean cancastwhileflying = true; + public boolean shouldcheckpath = true; public boolean isadminpower; - public boolean cantargetadmin; + public boolean cantargetadmin = true; public boolean isprojectile; public boolean sticky; public int maxnummobtargets; diff --git a/src/engine/parsers/wpak/PowerParser.java b/src/engine/parsers/wpak/PowerParser.java index d912b2dc..c232f64e 100644 --- a/src/engine/parsers/wpak/PowerParser.java +++ b/src/engine/parsers/wpak/PowerParser.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; // Loads Powers.cfg (client loader 0x56E410). CompoundCurves.cfg must be loaded first. @@ -30,7 +31,7 @@ public class PowerParser { public static HashMap parsePowersFile() { - HashMap powers = new HashMap<>(); + HashMap powers = new LinkedHashMap<>(); WpakBlock root; PowerTemplate power; int blockCount = 0;