Load Effects.cfg, ModTypes.cfg and CompoundCurves.cfg at world boot

CompoundCurveParser keeps every curve segment (the CompoundCurveType enum
holds one value per curve). ModTypeParser keeps each mod type's Behavior,
which decides the argument layout of a MODS line. EffectParser loads
Effects.cfg into EffectTemplate._effects: header, the four flag keys
(case-insensitive, as in the client), SOURCE lines, every MODS line in
order, and CONDITION lines. Mod layouts follow the client's ArcMod*_Parse
functions; curve names in effects and power actions must exist in
CompoundCurves.cfg. Boot order: curves, mod types, power actions, effects.
No consumers change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MagicBotandClaude Opus 5.5 committed 2026-10-22 11:13:26 -04:00
1 parent 6c820940d3
commit 623f7c4ae6
9 files changed
+584 -3

No files matched your search

@@ -16,6 +16,7 @@ import java.util.ArrayList;
import java.util.HashMap;
// Loads PowerActions.cfg (client loader PowerActions_LoadCfg 0x578EC0).
// CompoundCurves.cfg must be loaded first.
public class PowerActionParser {
@@ -162,9 +163,9 @@ public class PowerActionParser {
powerAction.transfer_from_type = header.enumToken(mbEnums.CostType.class, 2);
powerAction.transfer_to_type = header.enumToken(mbEnums.CostType.class, 3);
powerAction.transfer_amount = header.floatToken(4);
powerAction.transfer_amount_curve = header.token(5);
powerAction.transfer_amount_curve = WpakParserUtil.curveToken(header, 5);
powerAction.transfer_efficiency = header.floatToken(6);
powerAction.transfer_efficiency_curve = header.token(7);
powerAction.transfer_efficiency_curve = WpakParserUtil.curveToken(header, 7);
powerAction.isaggressive = header.optionalIntToken(9) != 0;
}
@@ -230,7 +231,7 @@ public class PowerActionParser {
break;
case "LEVELCAP=":
powerAction.levelcap = line.intToken(1);
powerAction.levelcap_curve = line.has(2) ? line.token(2) : null;
powerAction.levelcap_curve = line.has(2) ? WpakParserUtil.curveToken(line, 2) : null;
break;
case "CLEARAGGRO=":
powerAction.clearaggro = line.optionalBoolToken(1);