|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// 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<String, HashSet<String>> 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);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|