Public Repository for the Magicbane Shadowbane Emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
4.7 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.gameManager.PowersManager;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.powers.PowersBase;
import java.util.ArrayList;
/**
*
* @author Eighty
*
*/
public class ApplyStatModCmd extends AbstractDevCmd {
public ApplyStatModCmd() {
super("applystatmod");
}
private static int cnt = 0;
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] args,
AbstractGameObject target) {
if(args.length < 1) {
// if(args.length < 2) {
this.sendUsage(pcSender);
return;
}
if(!(target instanceof AbstractCharacter)) {
this.sendHelp(pcSender);
return;
}
this.setTarget(pcSender); //for logging
int spellID;
int powerAction = 0;
if (args[0].toLowerCase().contains("all")){
int amount = 0;
if (args.length == 1) {
amount = ApplyStatModCmd.cnt;
ApplyStatModCmd.cnt++;
} else {
amount = Integer.valueOf(args[1]);
ApplyStatModCmd.cnt = amount+1;
}
ArrayList<PowersBase> pbList = new ArrayList<>();
pbList.add(PowersManager.getPowerByToken(429047968));
pbList.add(PowersManager.getPowerByToken(429768864));
pbList.add(PowersManager.getPowerByToken(428458144));
pbList.add(PowersManager.getPowerByToken(428677994));
pbList.add(PowersManager.getPowerByToken(431874079));
pbList.add(PowersManager.getPowerByToken(431081336));
for (PowersBase pb:pbList){
if(amount <= 0) {
if (pb.getToken() ==428677994)
powerAction = 1;
PowersManager.removeEffect(pcSender, pb.getActions().get(powerAction), false, false);
continue;
} else if(amount > 9999 || amount < 21) {
ChatManager.chatSystemInfo(pcSender, "Amount must be between 21 and 9999 inclusive.");
return;
}
if (pb.getToken() ==428677994){
PowersManager.removeEffect(pcSender, pb.getActions().get(powerAction), false, false);
PowersManager.runPowerAction(pcSender, pcSender, Vector3fImmutable.ZERO, pb.getActions().get(powerAction), amount - 20, pb);
}
if (pb.getToken() ==428677994)
powerAction = 1;
PowersManager.removeEffect(pcSender, pb.getActions().get(powerAction), false, false);
PowersManager.runPowerAction(pcSender, pcSender, Vector3fImmutable.ZERO, pb.getActions().get(powerAction), amount - 20, pb);
}
return;
}
if(args[0].toLowerCase().contains("con")) {
spellID = 429047968; //Blessing of Health
} else if(args[0].toLowerCase().contains("str")) {
spellID = 429768864; //Blessing of Might
} else if(args[0].toLowerCase().contains("dex")) {
spellID = 428458144; //Blessing of Dexterity
} else if(args[0].toLowerCase().contains("int")) {
spellID = 428677994; //Bard Spi - TODO
powerAction = 1;
} else if(args[0].toLowerCase().contains("spi")) {
spellID = 428677994; //Bard Spi
} else{
ChatManager.chatSystemInfo(pcSender, "No valid stat found.");
return;
}
PowersBase pb = PowersManager.getPowerByToken(spellID);
int amount = 0;
if (args.length == 1) {
amount = ApplyStatModCmd.cnt;
ApplyStatModCmd.cnt++;
} else {
amount = Integer.valueOf(args[1]);
ApplyStatModCmd.cnt = amount+1;
}
// int amount = Integer.valueOf(args[1]);
if(amount <= 0) {
PowersManager.removeEffect(pcSender, pb.getActions().get(powerAction), false, false);
return;
} else if(amount > 9999 || amount < 21) {
ChatManager.chatSystemInfo(pcSender, "Amount must be between 21 and 9999 inclusive.");
return;
}
PowersManager.removeEffect(pcSender, pb.getActions().get(powerAction), false, false);
PowersManager.runPowerAction(pcSender, pcSender, Vector3fImmutable.ZERO, pb.getActions().get(powerAction), amount - 20, pb);
}
@Override
protected String _getUsageString() {
return "' /applystatmod <stat> [trains]'";
}
@Override
protected String _getHelpString() {
return "You must be targeting a player!";
}
}