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.
110 lines
3.4 KiB
110 lines
3.4 KiB
3 years ago
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||
|
// Magicbane Emulator Project © 2013 - 2022
|
||
|
// www.magicbane.com
|
||
|
|
||
|
|
||
|
package engine.devcmd.cmds;
|
||
|
|
||
|
import engine.Enum.ItemType;
|
||
|
import engine.devcmd.AbstractDevCmd;
|
||
|
import engine.objects.*;
|
||
|
|
||
|
import java.text.DecimalFormat;
|
||
|
import java.util.ArrayList;
|
||
|
|
||
|
public class PrintInventoryCmd extends AbstractDevCmd {
|
||
|
|
||
|
public PrintInventoryCmd() {
|
||
|
super("printinventory");
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||
|
AbstractGameObject target) {
|
||
|
|
||
|
if (target == null || (!(target instanceof AbstractCharacter) && !(target instanceof Corpse))) {
|
||
|
target = pc;
|
||
|
}
|
||
|
|
||
|
|
||
|
String type = target.getClass().getSimpleName();
|
||
|
String name = "";
|
||
|
ArrayList<Item> inventory = null;
|
||
|
Item gold = null;
|
||
|
DecimalFormat df = new DecimalFormat("###,###,###,##0");
|
||
|
|
||
|
if (target instanceof AbstractCharacter) {
|
||
|
AbstractCharacter tar = (AbstractCharacter)target;
|
||
|
|
||
|
name = tar.getFirstName();
|
||
|
|
||
|
if (tar instanceof Mob) {
|
||
|
Mob mob = (Mob) tar;
|
||
|
MobBase mb = mob.getMobBase();
|
||
|
if (mb != null) {
|
||
|
name = mb.getFirstName();
|
||
|
}
|
||
|
} else if (tar instanceof NPC) {
|
||
|
NPC npc = (NPC) tar;
|
||
|
Contract contract = npc.getContract();
|
||
|
if (contract != null) {
|
||
|
if (contract.isTrainer()) {
|
||
|
name = tar.getName() + ", " + contract.getName();
|
||
|
} else {
|
||
|
name = tar.getName() + " the " + contract.getName();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CharacterItemManager cim = tar.getCharItemManager();
|
||
|
inventory = cim.getInventory(); //this list can contain gold when tar is a PC that is dead
|
||
|
gold = cim.getGoldInventory();
|
||
|
throwbackInfo(pc, " Weight : " + (cim.getInventoryWeight() + cim.getEquipWeight()));
|
||
|
} else if (target instanceof Corpse) {
|
||
|
Corpse corpse = (Corpse) target;
|
||
|
name = "of " + corpse.getName();
|
||
|
inventory = corpse.getInventory();
|
||
|
}
|
||
|
|
||
|
throwbackInfo(pc, "Inventory for " + type + ' ' + name + " (" + target.getObjectUUID() + ')');
|
||
|
|
||
|
int goldCount = 0;
|
||
|
|
||
|
for (Item item : inventory) {
|
||
|
if (item.getItemBase().getType().equals(ItemType.GOLD) == false) {
|
||
|
String chargeInfo = "";
|
||
|
byte chargeMax = item.getChargesMax();
|
||
|
if (chargeMax > 0) {
|
||
|
byte charges = item.getChargesRemaining();
|
||
|
chargeInfo = " charges: " + charges + '/' + chargeMax;
|
||
|
}
|
||
|
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems() + chargeInfo);
|
||
|
} else goldCount += item.getNumOfItems();
|
||
|
}
|
||
|
if (gold != null) {
|
||
|
goldCount += gold.getNumOfItems();
|
||
|
}
|
||
|
|
||
|
if (goldCount > 0 || gold != null) {
|
||
|
throwbackInfo(pc, " Gold, count: " + df.format(goldCount));
|
||
|
} else {
|
||
|
throwbackInfo(pc, " NULL Gold");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String _getHelpString() {
|
||
|
return "Returns the player's current inventory";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String _getUsageString() {
|
||
|
return "' /printinventory'";
|
||
|
}
|
||
|
|
||
|
}
|