forked from MagicBane/Server
				
			
				 24 changed files with 1 additions and 1608 deletions
			
			
		@ -1,105 +0,0 @@
				@@ -1,105 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.ZoneManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
import engine.objects.Zone; | 
				
			||||
 | 
				
			||||
public class AuditMobsCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public AuditMobsCmd() { | 
				
			||||
        super("auditmobs"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        //get Zone to check mobs against
 | 
				
			||||
 | 
				
			||||
        Zone zone; | 
				
			||||
 | 
				
			||||
        if (words.length == 2) { | 
				
			||||
            if (words[0].equals("all")) { | 
				
			||||
                int plusplus = 0; | 
				
			||||
                int count = Integer.parseInt(words[1]); | 
				
			||||
                for (Zone zoneMicro : ZoneManager.getAllZones()) { | 
				
			||||
                    int size = zoneMicro.zoneMobSet.size(); | 
				
			||||
 | 
				
			||||
                    if (size >= count) { | 
				
			||||
                        plusplus++; | 
				
			||||
                        throwbackInfo(pcSender, zoneMicro.zoneName + " at location  " + zoneMicro.getLoc().toString() + " has " + size + " mobs. "); | 
				
			||||
                        System.out.println(zoneMicro.zoneName + " at location  " + zoneMicro.getLoc().toString() + " has " + size + " mobs. "); | 
				
			||||
                    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
                } | 
				
			||||
                throwbackInfo(pcSender, " there are " + plusplus + " zones with at least " + count + " mobs in each."); | 
				
			||||
            } | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        if (words.length > 1) { | 
				
			||||
            this.sendUsage(pcSender); | 
				
			||||
            return; | 
				
			||||
        } else if (words.length == 1) { | 
				
			||||
            int uuid; | 
				
			||||
            try { | 
				
			||||
                uuid = Integer.parseInt(words[0]); | 
				
			||||
                zone = ZoneManager.getZoneByUUID(uuid); | 
				
			||||
            } catch (NumberFormatException e) { | 
				
			||||
                zone = ZoneManager.findSmallestZone(pcSender.getLoc()); | 
				
			||||
            } | 
				
			||||
        } else | 
				
			||||
            zone = ZoneManager.findSmallestZone(pcSender.getLoc()); | 
				
			||||
 | 
				
			||||
        if (zone == null) { | 
				
			||||
            throwbackError(pcSender, "Unable to find the zone"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //get list of mobs for zone
 | 
				
			||||
 | 
				
			||||
        if (zone.zoneMobSet.isEmpty()) { | 
				
			||||
            throwbackError(pcSender, "No mobs found for this zone."); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //	ConcurrentHashMap<Integer, Mob> spawnMap = Mob.getSpawnMap();
 | 
				
			||||
        //ConcurrentHashMap<Mob, Long> respawnMap = Mob.getRespawnMap();
 | 
				
			||||
        //		ConcurrentHashMap<Mob, Long> despawnMap = Mob.getDespawnMap();
 | 
				
			||||
 | 
				
			||||
        throwbackInfo(pcSender, zone.zoneName + ", numMobs: " + zone.zoneMobSet.size()); | 
				
			||||
        throwbackInfo(pcSender, "UUID, dbID, inRespawnMap, isAlive, activeAI, Loc"); | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        //mob not found in spawn map, check respawn
 | 
				
			||||
        boolean inRespawn = false; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /auditmobs [zone.UUID]'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Audits all the mobs in a zone."; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,114 +0,0 @@
				@@ -1,114 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.gameManager.SessionManager; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
import engine.util.MiscUtils; | 
				
			||||
 | 
				
			||||
public class ChangeNameCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public ChangeNameCmd() { | 
				
			||||
        super("changename"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        Vector3fImmutable loc = null; | 
				
			||||
 | 
				
			||||
        // Arg Count Check
 | 
				
			||||
        if (words.length < 2) { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        String oldFirst = words[0]; | 
				
			||||
        String newFirst = words[1]; | 
				
			||||
        String newLast = ""; | 
				
			||||
        if (words.length > 2) { | 
				
			||||
            newLast = words[2]; | 
				
			||||
            for (int i = 3; i < words.length; i++) | 
				
			||||
                newLast += ' ' + words[i]; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //verify new name length
 | 
				
			||||
        if (newFirst.length() < 3) { | 
				
			||||
            this.throwbackError(pc, "Error: First name is incorrect length. Must be between 3 and 15 characters"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //verify old name length
 | 
				
			||||
        if (newLast.length() > 50) { | 
				
			||||
            this.throwbackError(pc, "Error: Last name is incorrect length. Must be no more than 50 characters"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        // Check if firstname is valid
 | 
				
			||||
        if (MiscUtils.checkIfFirstNameInvalid(newFirst)) { | 
				
			||||
            this.throwbackError(pc, "Error: First name is not allowed"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        //get the world ID we're modifying for
 | 
				
			||||
 | 
				
			||||
        //test if first name is unique, unless new and old first name are equal.
 | 
				
			||||
        if (!(oldFirst.equals(newFirst))) { | 
				
			||||
            if (!DbManager.PlayerCharacterQueries.IS_CHARACTER_NAME_UNIQUE(newFirst)) { | 
				
			||||
                this.throwbackError(pc, "Error: First name is not unique."); | 
				
			||||
                return; | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //tests passed, update name in database
 | 
				
			||||
        if (!DbManager.PlayerCharacterQueries.UPDATE_NAME(oldFirst, newFirst, newLast)) { | 
				
			||||
            this.throwbackError(pc, "Error: Database failed to update the name."); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        //Finally update player ingame
 | 
				
			||||
        PlayerCharacter pcTar = null; | 
				
			||||
        try { | 
				
			||||
            pcTar = SessionManager | 
				
			||||
                    .getPlayerCharacterByLowerCaseName(words[0]); | 
				
			||||
            pcTar.setFirstName(newFirst); | 
				
			||||
            pcTar.setLastName(newLast); | 
				
			||||
            this.setTarget(pcTar); //for logging
 | 
				
			||||
 | 
				
			||||
            //specify if last name is ascii characters only
 | 
				
			||||
            String lastAscii = newLast.replaceAll("[^\\p{ASCII}]", ""); | 
				
			||||
            pcTar.setAsciiLastName(lastAscii.equals(newLast)); | 
				
			||||
        } catch (Exception e) { | 
				
			||||
            this.throwbackError(pc, "Database was updated but ingame character failed to update."); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        String out = oldFirst + " was changed to " + newFirst + (newLast.isEmpty() ? "." : (' ' + newLast + '.')); | 
				
			||||
        this.throwbackInfo(pc, out); | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Changes the name of a player"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "'./changename oldFirstName newFirstName newLastName'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,56 +0,0 @@
				@@ -1,56 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.net.client.msg.TargetedActionMsg; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author Eighty | 
				
			||||
 */ | 
				
			||||
public class CombatMessageCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public CombatMessageCmd() { | 
				
			||||
        super("cm"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
        if (args.length != 1) { | 
				
			||||
            this.sendUsage(pcSender); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        int num = 0; | 
				
			||||
        try { | 
				
			||||
            num = Integer.parseInt(args[0]); | 
				
			||||
        } catch (NumberFormatException e) { | 
				
			||||
            throwbackError(pcSender, "Supplied message number " + args[0] + " failed to parse to an Integer"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        TargetedActionMsg.un2cnt = num; | 
				
			||||
        throwbackInfo(pcSender, "CombatMessage set to " + num); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /cm [cmNumber]'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Sets the combat message to the supplied integer value"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,122 +0,0 @@
				@@ -1,122 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.jobs.DebugTimerJob; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class DebugCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    public DebugCmd() { | 
				
			||||
        super("debug"); | 
				
			||||
        //		super("debug", MBServerStatics.ACCESS_GROUP_ALL_TEAM, 0, false, false);
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private static void toggleDebugTimer(PlayerCharacter pc, String name, int num, int duration, boolean toggle) { | 
				
			||||
        if (toggle) { | 
				
			||||
            DebugTimerJob dtj = new DebugTimerJob(pc, name, num, duration); | 
				
			||||
            pc.renewTimer(name, dtj, duration); | 
				
			||||
        } else | 
				
			||||
            pc.cancelTimer(name); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (words.length < 2) { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        if (pc == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        //pc.setDebug must use bit sizes: 1, 2, 4, 8, 16, 32
 | 
				
			||||
 | 
				
			||||
        String command = words[0].toLowerCase(); | 
				
			||||
        boolean toggle = (words[1].toLowerCase().equals("on")) ? true : false; | 
				
			||||
 | 
				
			||||
        switch (command) { | 
				
			||||
            case "magictrek": | 
				
			||||
                pc.RUN_MAGICTREK = toggle; | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "combat": | 
				
			||||
                pc.setDebug(64, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "health": | 
				
			||||
                toggleDebugTimer(pc, "Debug_Health", 1, 1000, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "mana": | 
				
			||||
                toggleDebugTimer(pc, "Debug_Mana", 2, 1000, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "stamina": | 
				
			||||
                toggleDebugTimer(pc, "Debug_Stamina", 3, 500, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "spells": | 
				
			||||
                pc.setDebug(16, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "damageabsorber": | 
				
			||||
                pc.setDebug(2, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "recast": | 
				
			||||
            case "recycle": | 
				
			||||
                pc.setDebug(4, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "seeinvis": | 
				
			||||
                pc.setDebug(8, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "movement": | 
				
			||||
                pc.setDebug(1, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            case "noaggro": | 
				
			||||
                pc.setDebug(32, toggle); | 
				
			||||
 | 
				
			||||
                break; | 
				
			||||
            //		case "loot":
 | 
				
			||||
            //			MBServerStatics.debugLoot = toggle;
 | 
				
			||||
            //			break;
 | 
				
			||||
 | 
				
			||||
            default: | 
				
			||||
                String output = "Debug for " + command + " not found."; | 
				
			||||
                throwbackError(pc, output); | 
				
			||||
                return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        setTarget(pc); //for logging
 | 
				
			||||
 | 
				
			||||
        String output = "Debug for " + command + " turned " + ((toggle) ? "on." : "off."); | 
				
			||||
        throwbackInfo(pc, output); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Runs debug commands"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "'./Debug command on/off'"; | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
@ -1,57 +0,0 @@
				@@ -1,57 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.ChatManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class DebugMeleeSyncCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public DebugMeleeSyncCmd() { | 
				
			||||
        super("debugmeleesync"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        // Arg Count Check
 | 
				
			||||
        if (words.length != 1) { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        String s = words[0].toLowerCase(); | 
				
			||||
 | 
				
			||||
        if (s.equals("on")) { | 
				
			||||
            pc.setDebug(64, true); | 
				
			||||
            ChatManager.chatSayInfo(pc, "Melee Sync Debug ON"); | 
				
			||||
        } else if (s.equals("off")) { | 
				
			||||
            pc.setDebug(64, false); | 
				
			||||
            ChatManager.chatSayInfo(pc, "Melee Sync Debug OFF"); | 
				
			||||
        } else { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Turns on/off melee sync debugging."; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "'./debugmeleesync on|off'"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,54 +0,0 @@
				@@ -1,54 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * | 
				
			||||
 */ | 
				
			||||
public class DecachePlayerCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public DecachePlayerCmd() { | 
				
			||||
        super("decacheplayer"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (words.length < 1) { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        int objectUUID = Integer.parseInt(words[0]); | 
				
			||||
 | 
				
			||||
        if (DbManager.inCache(Enum.GameObjectType.PlayerCharacter, objectUUID)) { | 
				
			||||
            this.setTarget(PlayerCharacter.getFromCache(objectUUID)); //for logging
 | 
				
			||||
            PlayerCharacter.getFromCache(objectUUID).removeFromCache(); | 
				
			||||
        } else { | 
				
			||||
            this.sendHelp(pc); | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "No player found. Please make sure the table ID is correct."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /decacheplayer <UUID>'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,66 +0,0 @@
				@@ -1,66 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Mob; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class DespawnCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public DespawnCmd() { | 
				
			||||
        super("debugmob"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        if (pc == null) { | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        Mob mob = null; | 
				
			||||
 | 
				
			||||
        if (target != null && target.getObjectType().equals(GameObjectType.Mob)) | 
				
			||||
            mob = (Mob) target; | 
				
			||||
 | 
				
			||||
        if (mob == null) | 
				
			||||
            mob = Mob.getFromCache(Integer.parseInt(words[1])); | 
				
			||||
 | 
				
			||||
        if (mob == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        if (words[0].equalsIgnoreCase("respawn")) { | 
				
			||||
            mob.respawn(); | 
				
			||||
            this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Respawned"); | 
				
			||||
        } else if (words[0].equalsIgnoreCase("despawn")) { | 
				
			||||
            mob.despawn(); | 
				
			||||
            this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Despawned"); | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Gets distance from a target."; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /distance'"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,65 +0,0 @@
				@@ -1,65 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.AbstractWorldObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class DistanceCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public DistanceCmd() { | 
				
			||||
        super("distance"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        // Arg Count Check
 | 
				
			||||
        if (words.length != 1) { | 
				
			||||
            this.sendUsage(pc); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        if (pc == null) { | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        if (target == null || !(target instanceof AbstractWorldObject)) { | 
				
			||||
            throwbackError(pc, "No target found."); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        AbstractWorldObject awoTarget = (AbstractWorldObject) target; | 
				
			||||
 | 
				
			||||
        Vector3fImmutable pcLoc = pc.getLoc(); | 
				
			||||
        Vector3fImmutable tarLoc = awoTarget.getLoc(); | 
				
			||||
        String out = "Distance: " + pcLoc.distance(tarLoc) + | 
				
			||||
                "\r\nYour Loc: " + pcLoc.x + 'x' + pcLoc.y + 'x' + pcLoc.z + | 
				
			||||
                "\r\nTarget Loc: " + tarLoc.x + 'x' + tarLoc.y + 'x' + tarLoc.z; | 
				
			||||
        throwbackInfo(pc, out); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Gets distance from a target."; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /distance'"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,61 +0,0 @@
				@@ -1,61 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      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.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
import engine.powers.EffectsBase; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author Eighty | 
				
			||||
 */ | 
				
			||||
public class EffectCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public EffectCmd() { | 
				
			||||
        super("effect"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        int ID = 0; | 
				
			||||
        int token = 0; | 
				
			||||
 | 
				
			||||
        if (args.length != 2) { | 
				
			||||
            this.sendUsage(pcSender); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        ID = Integer.parseInt(args[0]); | 
				
			||||
        token = Integer.parseInt(args[1]); | 
				
			||||
 | 
				
			||||
        EffectsBase eb = PowersManager.setEffectToken(ID, token); | 
				
			||||
        if (eb == null) { | 
				
			||||
            throwbackError(pcSender, "Unable to find EffectsBase " + ID | 
				
			||||
                    + " to modify."); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        ChatManager.chatSayInfo(pcSender, | 
				
			||||
                "EffectsBase with ID " + ID + " changed token to " + token); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /effect EffectsBaseID Token'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Temporarily places the effect token with the corresponding EffectsBase on the server"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,84 +0,0 @@
				@@ -1,84 +0,0 @@
					 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum.BuildingGroup; | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.objects.*; | 
				
			||||
 | 
				
			||||
public class GateInfoCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GateInfoCmd() { | 
				
			||||
        super("gateinfo"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    // AbstractDevCmd Overridden methods
 | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter player, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        Building targetBuilding; | 
				
			||||
        String outString; | 
				
			||||
        Runegate runeGate; | 
				
			||||
        Blueprint blueprint; | 
				
			||||
        String newline = "\r\n "; | 
				
			||||
        targetBuilding = (Building) target; | 
				
			||||
 | 
				
			||||
        if (targetBuilding.getObjectType() != GameObjectType.Building) { | 
				
			||||
            throwbackInfo(player, "GateInfo: target must be a Building"); | 
				
			||||
            throwbackInfo(player, "Found" + targetBuilding.getObjectType().toString()); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        blueprint = Blueprint._meshLookup.get(targetBuilding.getMeshUUID()); | 
				
			||||
 | 
				
			||||
        if (blueprint == null || | 
				
			||||
                (blueprint.getBuildingGroup() != BuildingGroup.RUNEGATE)) { | 
				
			||||
            throwbackInfo(player, "showgate: target must be a Runegate"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        runeGate = Runegate._runegates.get(targetBuilding.getObjectUUID()); | 
				
			||||
 | 
				
			||||
        outString = "RungateType: " + runeGate.gateBuilding.getName(); | 
				
			||||
        outString += newline; | 
				
			||||
 | 
				
			||||
        outString += "Portal State:"; | 
				
			||||
        outString += newline; | 
				
			||||
 | 
				
			||||
        for (Portal portal : runeGate.getPortals()) { | 
				
			||||
 | 
				
			||||
            outString += "Portal: " + portal.portalType.name(); | 
				
			||||
            outString += " Active: " + portal.isActive(); | 
				
			||||
            outString += " Dest: " + portal.targetGate.getName(); | 
				
			||||
            outString += newline; | 
				
			||||
            outString += " Origin: " + portal.getPortalLocation().x + 'x'; | 
				
			||||
            outString += " " + portal.getPortalLocation().y + 'y'; | 
				
			||||
            outString += newline; | 
				
			||||
 | 
				
			||||
            Vector3fImmutable offset = portal.getPortalLocation().subtract(targetBuilding.getLoc()); | 
				
			||||
            outString += " Offset: " + offset.x + "x " + offset.z + 'y'; | 
				
			||||
            outString += newline; | 
				
			||||
            outString += newline; | 
				
			||||
 | 
				
			||||
        } | 
				
			||||
        outString += newline; | 
				
			||||
        throwbackInfo(player, outString); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Displays a runegate's gate status"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        return "/gateinfo <target runegate> \n"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,52 +0,0 @@
				@@ -1,52 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.SessionManager; | 
				
			||||
import engine.net.client.ClientConnection; | 
				
			||||
import engine.net.client.msg.VendorDialogMsg; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author Eighty | 
				
			||||
 */ | 
				
			||||
public class GetBankCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GetBankCmd() { | 
				
			||||
        super("getbank"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        ClientConnection cc = SessionManager.getClientConnection(pcSender); | 
				
			||||
        if (cc == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        VendorDialogMsg.getBank(pcSender, null, cc); | 
				
			||||
        this.setTarget(pcSender); //for logging
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /getbank'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Opens bank window"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,40 +0,0 @@
				@@ -1,40 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class GetCacheCountCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GetCacheCountCmd() { | 
				
			||||
        super("getcachecount"); | 
				
			||||
        this.addCmdString("getcachecount"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        DbManager.printCacheCount(pcSender); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /getcachecount'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Get a count of the objects in the cache"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,58 +0,0 @@
				@@ -1,58 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class GetMemoryCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GetMemoryCmd() { | 
				
			||||
        super("getmemory"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    public static String getMemoryOutput(long memory) { | 
				
			||||
        String out = ""; | 
				
			||||
        if (memory > 1073741824) | 
				
			||||
            return (memory / 1073741824) + "GB"; | 
				
			||||
        else if (memory > 1048576) | 
				
			||||
            return (memory / 1048576) + "MB"; | 
				
			||||
        else if (memory > 1024) | 
				
			||||
            return (memory / 1048576) + "KB"; | 
				
			||||
        else | 
				
			||||
            return memory + "B"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        String hSize = getMemoryOutput(Runtime.getRuntime().totalMemory()); | 
				
			||||
        String mhSize = getMemoryOutput(Runtime.getRuntime().maxMemory()); | 
				
			||||
        String fhSize = getMemoryOutput(Runtime.getRuntime().freeMemory()); | 
				
			||||
 | 
				
			||||
        String out = "Heap Size: " + hSize + ", Max Heap Size: " + mhSize + ", Free Heap Size: " + fhSize; | 
				
			||||
        throwbackInfo(pcSender, out); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /getmemory'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "lists memory usage"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,43 +0,0 @@
				@@ -1,43 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class GetRuneDropRateCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GetRuneDropRateCmd() { | 
				
			||||
        super("getrunedroprate"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        String out = "Depracated"; | 
				
			||||
        throwbackInfo(pcSender, out); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /getrunedroprate'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "lists drop rates for runes and contracts in non-hotzone."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,67 +0,0 @@
				@@ -1,67 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.ZoneManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
import engine.objects.Zone; | 
				
			||||
 | 
				
			||||
import java.util.ArrayList; | 
				
			||||
 | 
				
			||||
public class GetZoneCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GetZoneCmd() { | 
				
			||||
        super("getzone"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
        if (pcSender == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        if (words.length != 1) { | 
				
			||||
            this.sendUsage(pcSender); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        ArrayList<Zone> allIn = new ArrayList<>(); | 
				
			||||
        switch (words[0].toLowerCase()) { | 
				
			||||
            case "all": | 
				
			||||
                throwbackInfo(pcSender, "All zones currently in"); | 
				
			||||
                allIn = ZoneManager.getAllZonesIn(pcSender.getLoc()); | 
				
			||||
                break; | 
				
			||||
            case "smallest": | 
				
			||||
                throwbackInfo(pcSender, "Smallest zone currently in"); | 
				
			||||
                Zone zone = ZoneManager.findSmallestZone(pcSender.getLoc()); | 
				
			||||
                allIn.add(zone); | 
				
			||||
                break; | 
				
			||||
            default: | 
				
			||||
                this.sendUsage(pcSender); | 
				
			||||
                return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        for (Zone zone : allIn) | 
				
			||||
            throwbackInfo(pcSender, zone.zoneName + "; UUID: " + zone.getObjectUUID() + ", loadNum: " + zone.templateID); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /getzone smallest/all'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "lists what zones a player is in"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,107 +0,0 @@
				@@ -1,107 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Building; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class GotoBoundsCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public GotoBoundsCmd() { | 
				
			||||
        super("gotobounds"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter player, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        String corner = words[0]; | 
				
			||||
        Vector3fImmutable targetLoc = Vector3fImmutable.ZERO; | 
				
			||||
 | 
				
			||||
        if (target == null || !target.getObjectType().equals(GameObjectType.Building)) { | 
				
			||||
            this.throwbackError(player, "No Building Selected"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        Building building = (Building) target; | 
				
			||||
 | 
				
			||||
        if (building.getBounds() == null) { | 
				
			||||
            this.throwbackInfo(player, "No valid Bounds for building UUID " + building.getObjectUUID()); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        float x = building.getBounds().getHalfExtents().x; | 
				
			||||
        float z = building.getBounds().getHalfExtents().y; | 
				
			||||
 | 
				
			||||
        if (building.getBlueprint() != null) { | 
				
			||||
            x = building.getBlueprint().getExtents().x; | 
				
			||||
            z = building.getBlueprint().getExtents().y; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        float topLeftX = building.getLoc().x - x; | 
				
			||||
        float topLeftY = building.getLoc().z - z; | 
				
			||||
 | 
				
			||||
        float topRightX = building.getLoc().x + x; | 
				
			||||
        float topRightY = building.getLoc().z - z; | 
				
			||||
 | 
				
			||||
        float bottomLeftX = building.getLoc().x - x; | 
				
			||||
        float bottomLeftY = building.getLoc().z + z; | 
				
			||||
 | 
				
			||||
        float bottomRightX = building.getLoc().x + x; | 
				
			||||
        float bottomRightY = building.getLoc().z + z; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        switch (corner) { | 
				
			||||
            case "topleft": | 
				
			||||
                targetLoc = new Vector3fImmutable(topLeftX, 0, topLeftY); | 
				
			||||
                break; | 
				
			||||
            case "topright": | 
				
			||||
                targetLoc = new Vector3fImmutable(topRightX, 0, topRightY); | 
				
			||||
                break; | 
				
			||||
            case "bottomleft": | 
				
			||||
                targetLoc = new Vector3fImmutable(bottomLeftX, 0, bottomLeftY); | 
				
			||||
                break; | 
				
			||||
            case "bottomright": | 
				
			||||
                targetLoc = new Vector3fImmutable(bottomRightX, 0, bottomRightY); | 
				
			||||
                break; | 
				
			||||
            default: | 
				
			||||
                this.throwbackInfo(player, "wrong corner name. use topleft , topright , bottomleft , bottomright"); | 
				
			||||
                return; | 
				
			||||
 | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        targetLoc = Vector3fImmutable.transform(building.getLoc(), targetLoc, building.getBounds().getRotationDegrees()); | 
				
			||||
 | 
				
			||||
        // Teleport player
 | 
				
			||||
 | 
				
			||||
        if (targetLoc == Vector3fImmutable.ZERO) { | 
				
			||||
            this.throwbackError(player, "Failed to locate UUID"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        player.teleport(targetLoc); | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Teleports player to a UUID"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /gotoobj <UID>'"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,72 +0,0 @@
				@@ -1,72 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum; | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Item; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author | 
				
			||||
 */ | 
				
			||||
public class ItemInfoCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public ItemInfoCmd() { | 
				
			||||
        super("iteminfo"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words,AbstractGameObject target) { | 
				
			||||
        if (pc == null) { | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        if(target.getObjectType().equals(GameObjectType.Item) == false){ | 
				
			||||
            throwbackInfo(pc, "Must Select An Item"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        Item item = (Item)target; | 
				
			||||
        String newline = "\r\n "; | 
				
			||||
        String output = ""; | 
				
			||||
        output += "Required Races:" + newline; | 
				
			||||
        for (Enum.MonsterType required : item.template.item_race_req) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        output += "Restricted Races:" + newline; | 
				
			||||
        for (Enum.MonsterType required : item.template.item_race_res) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        output += "Required Classes:" + newline; | 
				
			||||
        for (Enum.ClassType required : item.template.item_class_req) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        output += "Restricted Classes:" + newline; | 
				
			||||
        for (Enum.ClassType required : item.template.item_class_res) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        output += "Required Disciplines:" + newline; | 
				
			||||
        for (Enum.DisciplineType required : item.template.item_disc_req) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        output += "Restricted Disciplines:" + newline; | 
				
			||||
        for (Enum.DisciplineType required : item.template.item_disc_res) | 
				
			||||
            output += "     " + required.name() + newline; | 
				
			||||
        throwbackInfo(pc, output); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Gets information on an Object."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /iteminfo'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,35 +0,0 @@
				@@ -1,35 +0,0 @@
					 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class ResetLevelCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public ResetLevelCmd() { | 
				
			||||
        super("resetlevel"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    // AbstractDevCmd Overridden methods
 | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter player, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        player.ResetLevel(Short.parseShort(args[0])); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Resets character level to `level`. All training points are reset. Player must relog for changes to update."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        return "/resetlevel <level>"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,60 +0,0 @@
				@@ -1,60 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.ChatManager; | 
				
			||||
import engine.gameManager.MaintenanceManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Building; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
import java.time.LocalDateTime; | 
				
			||||
 | 
				
			||||
public class SetMaintCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public SetMaintCmd() { | 
				
			||||
        super("setMaint"); | 
				
			||||
        this.addCmdString("setmaint"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter player, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        if (!target.getObjectType().equals(Enum.GameObjectType.Building)) { | 
				
			||||
            ChatManager.chatSayInfo(player, "Target is not a valid building"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        Building targetBuilding = (Building) target; | 
				
			||||
 | 
				
			||||
        if (targetBuilding.getProtectionState().equals(Enum.ProtectionState.NPC)) { | 
				
			||||
            ChatManager.chatSayInfo(player, "Target is not a valid building"); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        MaintenanceManager.setMaintDateTime(targetBuilding, LocalDateTime.now().minusDays(1).withHour(13).withMinute(0).withSecond(0).withNano(0)); | 
				
			||||
        ChatManager.chatSayInfo(player, "Maint will run for UUID: " + targetBuilding.getObjectUUID()); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    @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'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,80 +0,0 @@
				@@ -1,80 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.BuildingManager; | 
				
			||||
import engine.gameManager.ChatManager; | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Building; | 
				
			||||
import engine.objects.Mine; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author Eighty | 
				
			||||
 */ | 
				
			||||
public class SetMineExpansion extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public SetMineExpansion() { | 
				
			||||
        super("setexpansion"); | 
				
			||||
        this.addCmdString("setexpansion"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        if (target.getObjectType() != GameObjectType.Building) | 
				
			||||
            return; | 
				
			||||
        Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID()); | 
				
			||||
        if (mineBuilding == null) | 
				
			||||
            return; | 
				
			||||
        Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID()); | 
				
			||||
        if (mine == null) | 
				
			||||
            return; | 
				
			||||
        int bit = 2; | 
				
			||||
        switch (args[0].toUpperCase()) { | 
				
			||||
            case "ON": | 
				
			||||
 | 
				
			||||
                bit |= mine.getFlags(); | 
				
			||||
                if (!DbManager.MineQueries.SET_FLAGS(mine, bit)) | 
				
			||||
                    return; | 
				
			||||
                mine.setFlags(bit); | 
				
			||||
                ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is now an expansion mine."); | 
				
			||||
                break; | 
				
			||||
 | 
				
			||||
            case "OFF": | 
				
			||||
                bit &= ~mine.getFlags(); | 
				
			||||
                if (!DbManager.MineQueries.SET_FLAGS(mine, bit)) | 
				
			||||
                    return; | 
				
			||||
                mine.setFlags(bit); | 
				
			||||
                ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is no longer an expansion mine."); | 
				
			||||
                break; | 
				
			||||
 | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /setmineexpansion on|off"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "enables or disables an expansion type for a mine."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,62 +0,0 @@
				@@ -1,62 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.BuildingManager; | 
				
			||||
import engine.gameManager.ChatManager; | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.objects.*; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author Eighty | 
				
			||||
 */ | 
				
			||||
public class SetMineTypeCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public SetMineTypeCmd() { | 
				
			||||
        super("setminetype"); | 
				
			||||
        this.addCmdString("setminetype"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pcSender, String[] args, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        MineProduction mineType = MineProduction.valueOf(args[0].toUpperCase()); | 
				
			||||
        if (mineType == null) | 
				
			||||
            return; | 
				
			||||
 | 
				
			||||
        if (target.getObjectType() != GameObjectType.Building) | 
				
			||||
            return; | 
				
			||||
        Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID()); | 
				
			||||
        if (mineBuilding == null) | 
				
			||||
            return; | 
				
			||||
        Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID()); | 
				
			||||
        if (mine == null) | 
				
			||||
            return; | 
				
			||||
        if (!DbManager.MineQueries.CHANGE_TYPE(mine, mineType)) | 
				
			||||
            return; | 
				
			||||
        mine.setMineType(mineType.name()); | 
				
			||||
        ChatManager.chatSystemInfo(pcSender, "The mine in " + mine.getZoneName() + " is now a(n) " + mine.getMineType().name); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /setminetype gold|ore|magic|lumber"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Changes the mine type of the current mine."; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,66 +0,0 @@
				@@ -1,66 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.InterestManagement.WorldGrid; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.MobBase; | 
				
			||||
import engine.objects.NPC; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class SetNpcMobbaseCmd extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public SetNpcMobbaseCmd() { | 
				
			||||
        super("setmobbase"); | 
				
			||||
        this.addCmdString("npcmobbase"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter player, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
        // Arg Count Check
 | 
				
			||||
        if (words.length != 1) { | 
				
			||||
            this.sendUsage(player); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        if (target.getObjectType() != GameObjectType.NPC) { | 
				
			||||
            this.sendUsage(player); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        NPC npc = (NPC) target; | 
				
			||||
 | 
				
			||||
        int mobBaseID = Integer.parseInt(words[0]); | 
				
			||||
 | 
				
			||||
        if (MobBase.getMobBase(mobBaseID) == null) { | 
				
			||||
            this.throwbackError(player, "Cannot find Mobbase for ID " + mobBaseID); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
        NPC.UpdateRaceID(npc, mobBaseID); | 
				
			||||
 | 
				
			||||
        WorldGrid.updateObject(npc); | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Sets mobbase override for an NPC"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /setmobbase mobBaseID'"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -1,59 +0,0 @@
				@@ -1,59 +0,0 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.devcmd.cmds; | 
				
			||||
 | 
				
			||||
import engine.Enum.GameObjectType; | 
				
			||||
import engine.devcmd.AbstractDevCmd; | 
				
			||||
import engine.gameManager.ChatManager; | 
				
			||||
import engine.gameManager.ZoneManager; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.objects.AbstractGameObject; | 
				
			||||
import engine.objects.Building; | 
				
			||||
import engine.objects.PlayerCharacter; | 
				
			||||
 | 
				
			||||
public class convertLoc extends AbstractDevCmd { | 
				
			||||
 | 
				
			||||
    public convertLoc() { | 
				
			||||
        super("convertLoc"); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected void _doCmd(PlayerCharacter pc, String[] words, | 
				
			||||
                          AbstractGameObject target) { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        if (target == null) { | 
				
			||||
            Vector3fImmutable convertLoc = ZoneManager.findSmallestZone(pc.getLoc()).getLoc().subtract(pc.getLoc()); | 
				
			||||
            ChatManager.chatSystemInfo(pc, Vector3fImmutable.toString(convertLoc)); | 
				
			||||
            return; | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
 | 
				
			||||
        if (target.getObjectType() != GameObjectType.Building) | 
				
			||||
            return; | 
				
			||||
        Building toConvert = (Building) target; | 
				
			||||
        Vector3fImmutable convertedLoc = ZoneManager.convertWorldToLocal(toConvert, pc.getLoc()); | 
				
			||||
        ChatManager.chatSystemInfo(pc, Vector3fImmutable.toString(convertedLoc)); | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getHelpString() { | 
				
			||||
        return "Temporarily Changes SubRace"; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    protected String _getUsageString() { | 
				
			||||
        return "' /setBuildingCollidables add/remove 'add creates a collision line.' needs 4 integers. startX, endX, startY, endY"; | 
				
			||||
 | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue