forked from MagicBane/Server
Merge remote-tracking branch 'origin/bugfix-safeguard-aggro' into magicbox-1.5.2
This commit is contained in:
@@ -10,18 +10,15 @@
|
||||
package engine.devcmd.cmds;
|
||||
|
||||
import engine.Enum;
|
||||
import engine.Enum.GameObjectType;
|
||||
import engine.devcmd.AbstractDevCmd;
|
||||
import engine.gameManager.ChatManager;
|
||||
import engine.gameManager.DbManager;
|
||||
import engine.gameManager.ZoneManager;
|
||||
import engine.math.Vector3fImmutable;
|
||||
import engine.objects.*;
|
||||
import engine.objects.AbstractGameObject;
|
||||
import engine.objects.Mob;
|
||||
import engine.objects.PlayerCharacter;
|
||||
import engine.objects.Zone;
|
||||
import org.pmw.tinylog.Logger;
|
||||
|
||||
/**
|
||||
* @author Eighty
|
||||
*/
|
||||
public class AddMobCmd extends AbstractDevCmd {
|
||||
|
||||
public AddMobCmd() {
|
||||
@@ -38,27 +35,8 @@ public class AddMobCmd extends AbstractDevCmd {
|
||||
|
||||
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, zone, null, null, "", 1, Enum.AIAgentType.MOBILE);
|
||||
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) {
|
||||
@@ -72,7 +50,6 @@ public class AddMobCmd extends AbstractDevCmd {
|
||||
return; // NaN
|
||||
}
|
||||
|
||||
|
||||
if (zone == null) {
|
||||
throwbackError(pc, "Failed to find zone to place mob in.");
|
||||
return;
|
||||
@@ -83,9 +60,9 @@ public class AddMobCmd extends AbstractDevCmd {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Mob mob = Mob.createMob(loadID, pc.getLoc(),
|
||||
null, zone, null, null, "", 1, Enum.AIAgentType.MOBILE);
|
||||
|
||||
if (mob != null) {
|
||||
mob.updateDatabase();
|
||||
ChatManager.chatSayInfo(pc,
|
||||
|
||||
@@ -545,7 +545,7 @@ public enum BuildingManager {
|
||||
|
||||
NPC npc = null;
|
||||
|
||||
npc = NPC.createNPC(pirateName, NpcID.getObjectUUID(), NpcLoc, null, zone, (short) rank, building);
|
||||
npc = NPC.createNPC(pirateName, NpcID.getObjectUUID(), NpcLoc, building.getGuild(), zone, (short) rank, building);
|
||||
|
||||
if (npc == null)
|
||||
return false;
|
||||
|
||||
@@ -939,16 +939,16 @@ public class MobAI {
|
||||
|
||||
//dont scan self.
|
||||
|
||||
if (mob.equals(awoMob) || (mob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)) == true)
|
||||
if (mob.equals(awoMob))
|
||||
continue;
|
||||
|
||||
Mob aggroMob = (Mob) awoMob;
|
||||
|
||||
//don't attack other guards
|
||||
|
||||
if ((aggroMob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)))
|
||||
if (aggroMob.isGuard() == true)
|
||||
continue;
|
||||
|
||||
//don't attack pets
|
||||
if (aggroMob.agentType.equals(Enum.AIAgentType.PET))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -406,7 +406,6 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
|
||||
Mob mobile = new Mob();
|
||||
mobile.dbID = MBServerStatics.NO_DB_ROW_ASSIGNED_YET;
|
||||
//mobile.agentType = AIAgentType.MOBILE; this method is only called to make guard captains and wall archers
|
||||
mobile.agentType = mobType;
|
||||
mobile.behaviourType = MobBehaviourType.None;
|
||||
mobile.loadID = loadID;
|
||||
@@ -418,12 +417,17 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
mobile.guildUUID = guild.getObjectUUID();
|
||||
|
||||
mobile.parentZoneUUID = parent.getObjectUUID();
|
||||
mobile.buildingUUID = building.getObjectUUID();
|
||||
|
||||
if (building == null)
|
||||
mobile.buildingUUID = 0;
|
||||
else
|
||||
mobile.buildingUUID = building.getObjectUUID();
|
||||
|
||||
if (mobile.buildingUUID != 0)
|
||||
mobile.bindLoc = Vector3fImmutable.ZERO;
|
||||
else
|
||||
mobile.bindLoc = spawn;
|
||||
mobile.bindLoc = ZoneManager.worldToLocal(spawn, parent);
|
||||
;
|
||||
|
||||
mobile.firstName = pirateName;
|
||||
|
||||
@@ -1889,6 +1893,19 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean isGuard(){
|
||||
|
||||
switch(this.behaviourType){
|
||||
case GuardMinion:
|
||||
case GuardCaptain:
|
||||
case GuardWallArcher:
|
||||
case HamletGuard:
|
||||
case SimpleStandingGuard:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDelay(@NotNull TimeUnit unit) {
|
||||
long timeRemaining = this.respawnTime - System.currentTimeMillis();
|
||||
|
||||
@@ -461,16 +461,20 @@ public class NPC extends AbstractCharacter {
|
||||
|
||||
NPC newNPC = new NPC();
|
||||
|
||||
newNPC.parentZoneUUID = parent.getObjectUUID();
|
||||
|
||||
newNPC.name = name;
|
||||
newNPC.contractUUID = contractID;
|
||||
|
||||
if (building == null)
|
||||
newNPC.bindLoc = spawn;
|
||||
newNPC.bindLoc = ZoneManager.worldToLocal(spawn, parent);
|
||||
else
|
||||
newNPC.bindLoc = Vector3fImmutable.ZERO;
|
||||
|
||||
newNPC.parentZoneUUID = parent.getObjectUUID();
|
||||
newNPC.guildUUID = guild.getObjectUUID();
|
||||
if (guild == null)
|
||||
newNPC.guildUUID = 0;
|
||||
else
|
||||
newNPC.guildUUID = guild.getObjectUUID();
|
||||
|
||||
if (building == null)
|
||||
newNPC.buildingUUID = 0;
|
||||
|
||||
Reference in New Issue
Block a user