|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// Magicbane Emulator Project © 2013 - 2022
|
|
|
|
// www.magicbane.com
|
|
|
|
|
|
|
|
|
|
|
|
package engine.devcmd.cmds;
|
|
|
|
|
|
|
|
import engine.Enum;
|
|
|
|
import engine.Enum.GameObjectType;
|
|
|
|
import engine.InterestManagement.InterestManager;
|
|
|
|
import engine.InterestManagement.WorldGrid;
|
|
|
|
import engine.devcmd.AbstractDevCmd;
|
|
|
|
import engine.gameManager.ChatManager;
|
|
|
|
import engine.gameManager.DbManager;
|
|
|
|
import engine.gameManager.LootManager;
|
|
|
|
import engine.gameManager.ZoneManager;
|
|
|
|
import engine.math.Vector3fImmutable;
|
|
|
|
import engine.mobileAI.utilities.MovementUtilities;
|
|
|
|
import engine.objects.*;
|
|
|
|
import org.pmw.tinylog.Logger;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Eighty
|
|
|
|
*/
|
|
|
|
public class AddMobCmd extends AbstractDevCmd {
|
|
|
|
|
|
|
|
public AddMobCmd() {
|
|
|
|
super("mob");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
|
|
|
AbstractGameObject target) {
|
|
|
|
if (words.length != 1) {
|
|
|
|
this.sendUsage(pc);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
|
|
|
|
|
|
|
|
if (words[0].equals("all")) {
|
|
|
|
|
|
|
|
for (AbstractGameObject mobbaseAGO : DbManager.getList(GameObjectType.MobBase)) {
|
|
|
|
MobBase mb = (MobBase) mobbaseAGO;
|
|
|
|
int loadID = mb.getObjectUUID();
|
|
|
|
Mob mob = Mob.createMob(loadID, Vector3fImmutable.getRandomPointInCircle(pc.getLoc(), 100),
|
|
|
|
null, true, zone, null, 0, "", 1);
|
|
|
|
if (mob != null) {
|
|
|
|
mob.updateDatabase();
|
|
|
|
this.setResult(String.valueOf(mob.getDBID()));
|
|
|
|
} else {
|
|
|
|
throwbackError(pc, "Failed to create mob of type " + loadID);
|
|
|
|
Logger.error("Failed to create mob of type "
|
|
|
|
+ loadID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int loadID;
|
|
|
|
try {
|
|
|
|
loadID = Integer.parseInt(words[0]);
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
throwbackError(pc, "Supplied type " + words[0]
|
|
|
|
+ " failed to parse to an Integer");
|
|
|
|
return;
|
|
|
|
} catch (Exception e) {
|
|
|
|
throwbackError(pc,
|
|
|
|
"An unknown exception occurred when trying to use mob command for type "
|
|
|
|
+ words[0]);
|
|
|
|
return; // NaN
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (zone == null) {
|
|
|
|
throwbackError(pc, "Failed to find zone to place mob in.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (zone.isPlayerCity()) {
|
|
|
|
throwbackError(pc, "Cannot use ./mob on Player cities. Try ./servermob instead.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Mob mob = Mob.createMob(loadID, pc.getLoc(),null, true, zone, null, 0, "", 1);
|
|
|
|
//Mob mob = Mob.createStrongholdMob(loadID,pc.loc,Guild.getErrantGuild(),true,zone,null,0,"Whitehorn Militant",75);
|
|
|
|
if (mob != null) {
|
|
|
|
mob.updateDatabase();
|
|
|
|
ChatManager.chatSayInfo(pc,
|
|
|
|
"Mob with ID " + mob.getDBID() + " added");
|
|
|
|
this.setResult(String.valueOf(mob.getDBID()));
|
|
|
|
|
|
|
|
mob.parentZone = zone;
|
|
|
|
mob.bindLoc = pc.loc;
|
|
|
|
mob.setLoc(pc.loc);
|
|
|
|
mob.equipmentSetID = 6327;
|
|
|
|
mob.runAfterLoad();
|
|
|
|
mob.setLevel((short)75);
|
|
|
|
mob.setResists(new Resists("Elite"));
|
|
|
|
mob.spawnTime = 10;
|
|
|
|
mob.BehaviourType = Enum.MobBehaviourType.Aggro;
|
|
|
|
zone.zoneMobSet.add(mob);
|
|
|
|
mob.isHellgateMob = true;
|
|
|
|
LootManager.GenerateStrongholdLoot(mob,false,false);
|
|
|
|
mob.healthMax = mob.mobBase.getHealthMax();
|
|
|
|
mob.setHealth(mob.healthMax);
|
|
|
|
mob.maxDamageHandOne = 1550;
|
|
|
|
mob.minDamageHandOne = 750;
|
|
|
|
mob.atrHandOne = 1800;
|
|
|
|
mob.defenseRating = 2200;
|
|
|
|
mob.setFirstName("Whitehorn Militant");
|
|
|
|
//InterestManager.setObjectDirty(mob);
|
|
|
|
//WorldGrid.addObject(mob,pc.loc.x,pc.loc.z);
|
|
|
|
//WorldGrid.updateObject(mob);
|
|
|
|
//guard.stronghold = mine;
|
|
|
|
mob.mobPowers.clear();
|
|
|
|
mob.mobPowers.put(429399948,20); // find weakness
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
throwbackError(pc, "Failed to create mob of type " + loadID);
|
|
|
|
Logger.error("Failed to create mob of type "
|
|
|
|
+ loadID);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected String _getHelpString() {
|
|
|
|
return "Creates a Mob of type 'mobID' at the location your character is standing";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected String _getUsageString() {
|
|
|
|
return "' /mob mobID'";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|