// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.devcmd.cmds; import engine.Enum.PowerActionType; import engine.devcmd.AbstractDevCmd; import engine.gameManager.ChatManager; import engine.gameManager.PowersManager; import engine.objects.AbstractGameObject; import engine.objects.PlayerCharacter; import engine.powers.ActionsBase; import engine.powers.PowersBase; import engine.powers.effectmodifiers.AbstractEffectModifier; import engine.util.ThreadUtils; import org.pmw.tinylog.Logger; import java.util.HashMap; import java.util.HashSet; public class ApplyBonusCmd extends AbstractDevCmd { public ApplyBonusCmd() { super("applybonus"); } @Override protected void _doCmd(PlayerCharacter pcSender, String[] words, AbstractGameObject target) { String action = words[0]; PowerActionType actionType = null; HashMap> appliedMods = new HashMap<>(); try{ if (action.equals("all") == false) for (PowerActionType powerActionType : PowerActionType.values()){ if (powerActionType.name().equalsIgnoreCase(action) == false) continue; actionType = powerActionType; break; } }catch(Exception e){ this.throwbackError(pcSender, "Invalid power Action type for " + action); this.throwbackInfo(pcSender, "Valid Types : " + this.getActionTypes()); return; } if (action.equals("all") == false) if (actionType == null){ this.throwbackError(pcSender, "Invalid power Action type for " + action); this.throwbackInfo(pcSender, "Valid Types : " + this.getActionTypes()); return; } for (PowersBase pb : PowersManager.powersBaseByIDString.values()){ if (pb.getActions() == null || pb.getActions().isEmpty()) continue; for (ActionsBase ab: pb.getActions()){ if (ab.getPowerAction() == null) continue; if (action.equals("all") == false) if (ab.getPowerAction().getType().equalsIgnoreCase(action) == false) continue; String effect1 = ""; String effect2 = ""; ChatManager.chatSystemInfo(pcSender,"Applying Power " + pb.getName() + " : " +pb.getDescription()); if (ab.getPowerAction().getEffectsBase() == null){ try { PowersManager.runPowerAction(pcSender, pcSender, pcSender.getLoc(), ab, 1, pb); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } ThreadUtils.sleep(500); continue; } if (ab.getPowerAction().getEffectsBase().getModifiers() == null || ab.getPowerAction().getEffectsBase().getModifiers().isEmpty()){ try { PowersManager.runPowerAction(pcSender, pcSender, pcSender.getLoc(), ab, 1, pb); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } continue; } boolean run = true; for (AbstractEffectModifier mod : ab.getPowerAction().getEffectsBase().getModifiers()){ if (appliedMods.containsKey(mod.modType.name()) == false){ appliedMods.put(mod.modType.name(), new HashSet<>()); } // if (appliedMods.get(mod.modType.name()).contains(mod.sourceType.name())){ // continue; // } appliedMods.get(mod.modType.name()).add(mod.sourceType.name()); try{ try { PowersManager.runPowerAction(pcSender, pcSender, pcSender.getLoc(), ab, 1, pb); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }catch(Exception e){ Logger.error(e); } break; } } } } @Override protected String _getUsageString() { return "' /bounds'"; } @Override protected String _getHelpString() { return "Audits all the mobs in a zone."; } private String getActionTypes(){ String output = ""; for (PowerActionType actionType : PowerActionType.values()){ output += actionType.name() + " | "; } return output.substring(0, output.length() -3); } }