forked from MagicBane/Server
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
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'"; |
|
} |
|
|
|
}
|
|
|