Dev commands, BuildingManager, ChatManager, ForgeManager, NPCManager, NPC, Warehouse, WorkOrder and ManageNPCMsg now call CObjectTemplate.lookup instead of ItemTemplate.templates.get. Forge production cost reads getItemResourceCosts(). Only the DB loader and linkCacheTemplates still use the legacy class (removed in Task 1.8). Removes the static_item_templates ParityCheck comparator. Final parity (offline p17.py, 7586 rows): every id has a cache template, 0 item_type differences, 0 item_resource_costs differences (84 ITEMs have costs). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93 lines
3.6 KiB
Java
93 lines
3.6 KiB
Java
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
// Magicbane Emulator Project © 2013 - 2026
|
|
// https://www.magicbane.com
|
|
|
|
|
|
package engine.devcmd.cmds;
|
|
|
|
import engine.devcmd.AbstractDevCmd;
|
|
import engine.gameManager.ChatManager;
|
|
import engine.mbEnums.GameObjectType;
|
|
import engine.objects.*;
|
|
import engine.parsers.objects.CObjectTemplate;
|
|
import engine.powers.effectmodifiers.AbstractEffectModifier;
|
|
|
|
public class PrintBonusesCmd extends AbstractDevCmd {
|
|
|
|
public PrintBonusesCmd() {
|
|
super("printbonuses");
|
|
// super("printbonuses", MBServerStatics.ACCESS_LEVEL_ADMIN);
|
|
}
|
|
|
|
@Override
|
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
AbstractGameObject target) {
|
|
|
|
AbstractWorldObject tar;
|
|
String name;
|
|
String type = "PlayerCharacter";
|
|
if (target != null)
|
|
if (target instanceof Item) {
|
|
type = "Item";
|
|
tar = (Item) target;
|
|
CObjectTemplate template = CObjectTemplate.lookup(((Item) tar).templateID);
|
|
name = template.getItemBaseName();
|
|
} else if (target instanceof AbstractCharacter) {
|
|
tar = (AbstractCharacter) target;
|
|
name = ((AbstractCharacter) tar).getFirstName();
|
|
} else {
|
|
tar = pc;
|
|
name = ((AbstractCharacter) tar).getFirstName();
|
|
}
|
|
else {
|
|
tar = pc;
|
|
name = ((AbstractCharacter) tar).getFirstName();
|
|
}
|
|
|
|
//Get name and type
|
|
if (tar instanceof Mob) {
|
|
Mob mob = (Mob) tar;
|
|
MobBase mb = mob.getMobBase();
|
|
if (mb != null)
|
|
name = mb.getFirstName();
|
|
type = "Mob";
|
|
} 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();
|
|
type = "NPC";
|
|
}
|
|
|
|
if (tar.getObjectType() == GameObjectType.Item) {
|
|
Item targetItem = (Item) tar;
|
|
|
|
if (targetItem.getBonuses() != null)
|
|
for (AbstractEffectModifier targetName : targetItem.getBonuses().keySet()) {
|
|
ChatManager.chatSystemInfo(pc, " " + targetName.modType.name() + "-" + targetName.sourceType.name() + ": " + targetItem.getBonuses().get(name));
|
|
}
|
|
} else if (((AbstractCharacter) tar).getBonuses() != null) {
|
|
((AbstractCharacter) tar).getBonuses().printBonusesToClient(pc);
|
|
} else
|
|
throwbackInfo(pc, "Bonuses for " + type + ' ' + name + " not found");
|
|
}
|
|
|
|
@Override
|
|
protected String _getHelpString() {
|
|
return "Returns the player's current bonuses";
|
|
}
|
|
|
|
@Override
|
|
protected String _getUsageString() {
|
|
return "' /printbonuses'";
|
|
}
|
|
|
|
}
|