forked from MagicBane/Server
optimized slot for siege engines
This commit is contained in:
@@ -341,9 +341,14 @@ public enum NPCManager {
|
||||
|
||||
if (abstractCharacter.building.getBlueprint() != null && abstractCharacter.building.getBlueprint().getBuildingGroup().equals(Enum.BuildingGroup.TOL) && abstractCharacter.building.getRank() == 8)
|
||||
buildingSlot = BuildingManager.getLastAvailableSlot(abstractCharacter.building);
|
||||
else
|
||||
buildingSlot = BuildingManager.getAvailableSlot(abstractCharacter.building);
|
||||
|
||||
else {
|
||||
if(abstractCharacter.getObjectType().equals(Enum.GameObjectType.Mob) && ((Mob)abstractCharacter).behaviourType.equals(Enum.MobBehaviourType.SiegeEngine)) {
|
||||
Mob mob = (Mob)abstractCharacter;
|
||||
buildingSlot = mob.guardCaptain.siegeMinionMap.size() + 1;
|
||||
}else {
|
||||
buildingSlot = BuildingManager.getAvailableSlot(abstractCharacter.building);
|
||||
}
|
||||
}
|
||||
if (buildingSlot == -1)
|
||||
Logger.error("No available slot for NPC: " + abstractCharacter.getObjectUUID());
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public class EndFearJob extends AbstractEffectJob {
|
||||
if (this.target == null || (!(this.target instanceof Mob)))
|
||||
return;
|
||||
|
||||
((Mob) this.target).setFearedObject(null);
|
||||
((Mob) this.target).fearedObject = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -40,6 +40,6 @@ public class EndFearJob extends AbstractEffectJob {
|
||||
if (this.target == null || (!(this.target instanceof Mob)))
|
||||
return;
|
||||
|
||||
((Mob) this.target).setFearedObject(null);
|
||||
((Mob) this.target).fearedObject = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,6 +120,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
||||
private float hateValue = 0;
|
||||
private long lastHateUpdate = 0;
|
||||
private byte aoecntr = 0;
|
||||
public final ConcurrentHashMap<Mob, Integer> siegeMinionMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||
|
||||
public AbstractCharacter() {
|
||||
super();
|
||||
|
||||
@@ -48,7 +48,7 @@ public class Mob extends AbstractIntelligenceAgent {
|
||||
private static int staticID = 0;
|
||||
//mob specific
|
||||
public final ConcurrentHashMap<Integer, Boolean> playerAgroMap = new ConcurrentHashMap<>();
|
||||
public final ConcurrentHashMap<Mob, Integer> siegeMinionMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||
|
||||
public final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
|
||||
public long nextCastTime = 0;
|
||||
public long nextCallForHelp = 0;
|
||||
@@ -73,7 +73,7 @@ public class Mob extends AbstractIntelligenceAgent {
|
||||
|
||||
private int currentID;
|
||||
|
||||
private AbstractWorldObject fearedObject = null;
|
||||
public AbstractWorldObject fearedObject = null;
|
||||
private long lastAttackTime = 0;
|
||||
private int lastMobPowerToken = 0;
|
||||
private HashMap<Integer, MobEquipment> equip = null;
|
||||
@@ -737,10 +737,6 @@ public class Mob extends AbstractIntelligenceAgent {
|
||||
return this.guild.getObjectUUID();
|
||||
}
|
||||
|
||||
public void setFearedObject(AbstractWorldObject awo) {
|
||||
this.fearedObject = awo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3fImmutable getBindLoc() {
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ public class FearPowerAction extends AbstractPowerAction {
|
||||
int duration = 10 + ((int) (trains * 0.5));
|
||||
String stackType = ab.getStackType();
|
||||
EndFearJob efj = new EndFearJob(source, awo, stackType, trains, ab, pb, null);
|
||||
((Mob) awo).setFearedObject(source);
|
||||
((Mob) awo).fearedObject = source;
|
||||
JobScheduler.getInstance().scheduleJob(efj, duration * 1000);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user