Repository for lakemenbane
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.

139 lines
5.1 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.BuildingManager;
import engine.gameManager.ChatManager;
import engine.objects.*;
public class SetRankCmd extends AbstractDevCmd {
public SetRankCmd() {
super("setRank");
this.addCmdString("setrank");
this.addCmdString("rank");
}
@Override
protected void _doCmd(PlayerCharacter player, String[] words,
AbstractGameObject target) {
int targetRank;
int uuid = 0;
if (words.length == 2) {
try {
uuid = Integer.parseInt(words[0]);
targetRank = Integer.parseInt(words[1]);
} catch (NumberFormatException e) {
this.sendUsage(player);
return; // NaN
}
} else if (words.length == 1) {
try {
targetRank = Integer.parseInt(words[0]);
} catch (NumberFormatException e) {
this.sendUsage(player);
return; // NaN
}
} else {
this.sendUsage(player);
return;
}
if (target != null) {
switch (target.getObjectType()) {
case Building:
Building targetBuilding = (Building) target;
Blueprint blueprint = targetBuilding.getBlueprint();
if (blueprint == null) {
BuildingManager.setRank(targetBuilding, targetRank);
ChatManager.chatSayInfo(player, "Building ranked without blueprint" + targetBuilding.getObjectUUID());
return;
}
if (targetRank > blueprint.getMaxRank()) {
throwbackError(player, "Attempt to set Invalid Rank" + targetBuilding.getObjectUUID());
return;
}
// Set the current targetRank
BuildingManager.setRank(targetBuilding, targetRank);
ChatManager.chatSayInfo(player, "Rank set for building with ID " + targetBuilding.getObjectUUID() + " to rank " + targetRank);
break;
case NPC:
NPC toRank = (NPC) target;
toRank.setRank(targetRank * 10);
toRank.setUpgradeDateTime(null);
WorldGrid.updateObject(toRank);
break;
case Mob:
Mob toRankCaptain = (Mob) target;
if (toRankCaptain.getContract() != null) {
toRankCaptain.setRank(targetRank * 10);
Mob.setUpgradeDateTime(toRankCaptain, null);
WorldGrid.updateObject(toRankCaptain);
}
break;
}
} else {
Building targetBuilding = null;
if (uuid != 0)
targetBuilding = BuildingManager.getBuilding(uuid);
if (targetBuilding == null) {
throwbackError(player, "Unable to find building.");
return;
}
Blueprint blueprint = targetBuilding.getBlueprint();
if (blueprint == null) {
throwbackError(player, "Attempt to rank building without blueprint" + targetBuilding.getObjectUUID());
return;
}
if (targetRank > blueprint.getMaxRank()) {
throwbackError(player, "Attempt to set Invalid Rank" + targetBuilding.getObjectUUID());
return;
}
// Set the current targetRank
int lastMeshID = targetBuilding.getMeshUUID();
BuildingManager.setRank(targetBuilding, targetRank);
if (lastMeshID != targetBuilding.getMeshUUID())
targetBuilding.refresh(true);
else
targetBuilding.refresh(false);
ChatManager.chatSayInfo(player, "Rank set for building with ID " + targetBuilding.getObjectUUID() + " to rank " + targetRank);
}
}
@Override
protected String _getHelpString() {
return "Sets the Rank of either the targets object or the object specified by ID.";
}
@Override
protected String _getUsageString() {
return "' /setrank ID rank' || ' /setrank rank' || ' /rank ID rank' || ' /rank rank'";
}
}