From b2730794a2dfc8cafa4ce113a5053dfe127d4ed9 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Fri, 23 Oct 2026 16:27:27 -0400 Subject: [PATCH] Show effect details in /printeffects Each line now has the effects map key (effect UUID or stack type such as PetBuff), the effect id and name, rank, time left or static, and the power that applied it. Help and usage strings no longer describe /printstats. Co-Authored-By: Claude Opus 5.5 --- src/engine/devcmd/cmds/PrintEffectsCmd.java | 58 +++++++++++++++++---- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/src/engine/devcmd/cmds/PrintEffectsCmd.java b/src/engine/devcmd/cmds/PrintEffectsCmd.java index 357de438..65385fdd 100644 --- a/src/engine/devcmd/cmds/PrintEffectsCmd.java +++ b/src/engine/devcmd/cmds/PrintEffectsCmd.java @@ -10,9 +10,15 @@ package engine.devcmd.cmds; import engine.devcmd.AbstractDevCmd; +import engine.mbEnums.GameObjectType; import engine.objects.AbstractCharacter; import engine.objects.AbstractGameObject; +import engine.objects.Effect; import engine.objects.PlayerCharacter; +import engine.powers.EffectsBase; +import engine.powers.PowersBase; + +import java.util.Map; /** * @@ -30,28 +36,60 @@ public class PrintEffectsCmd extends AbstractDevCmd { AbstractGameObject target) { AbstractCharacter tar; + StringBuilder output; + String newline = "\r\n "; + Effect effect; + EffectsBase effectsBase; + PowersBase power; - if (target != null && target instanceof AbstractCharacter) { - tar = (AbstractCharacter) target; + if (target == null) + return; - String newline = "\r\n "; - String output = "Effects For Character: " + tar.getName() + newline; + if (target.getObjectType() != GameObjectType.PlayerCharacter && target.getObjectType() != GameObjectType.Mob + && target.getObjectType() != GameObjectType.NPC) + return; - for (String effect : tar.effects.keySet()) { - output += effect + newline; - } - throwbackInfo(pc, output); + tar = (AbstractCharacter) target; + output = new StringBuilder("Effects for " + tar.getName() + " (" + tar.effects.size() + "):" + newline); + + // Keys are the effect UUID for mobbase/rune effects, or the stack type (e.g. PetBuff) for power effects + for (Map.Entry entry : tar.effects.entrySet()) { + + effect = entry.getValue(); + effectsBase = effect.getEffectsBase(); + power = effect.getPower(); + + output.append(entry.getKey()).append(": "); + + if (effectsBase != null) + output.append(effectsBase.getIDString()).append(" '").append(effectsBase.getName()).append("'"); + else + output.append("no EffectsBase"); + + output.append(" rank ").append(effect.getTrains()); + + if (effect.isStatic()) + output.append(", static"); + else + output.append(", ").append((int) effect.getDuration()).append("s left"); + + if (power != null) + output.append(", from ").append(power.getIDString()).append(" '").append(power.getName()).append("'"); + + output.append(newline); } + + throwbackInfo(pc, output.toString()); } @Override protected String _getHelpString() { - return "Returns the player's current stats"; + return "Lists the target's effects: key, effect id and name, rank, time left and source power"; } @Override protected String _getUsageString() { - return "' /printstats'"; + return "' /printeffects'"; } }