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'"; } }