|
|
|
@ -804,7 +804,8 @@ public class Mob extends AbstractIntelligenceAgent {
@@ -804,7 +804,8 @@ public class Mob extends AbstractIntelligenceAgent {
|
|
|
|
|
int slot; |
|
|
|
|
Vector3fImmutable slotLocation; |
|
|
|
|
|
|
|
|
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) return; |
|
|
|
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
// Configure parent zone adding this NPC to the
|
|
|
|
|
// zone collection
|
|
|
|
@ -822,27 +823,39 @@ public class Mob extends AbstractIntelligenceAgent {
@@ -822,27 +823,39 @@ public class Mob extends AbstractIntelligenceAgent {
|
|
|
|
|
|
|
|
|
|
// Handle Mobiles within buildings
|
|
|
|
|
|
|
|
|
|
if (this.building != null && this.contract != null) { |
|
|
|
|
if (this.building != null) { |
|
|
|
|
|
|
|
|
|
// Mobiles inside buildings are offset from it not the zone
|
|
|
|
|
|
|
|
|
|
// Get next available slot for this Mobile and then
|
|
|
|
|
// add it to the building's hireling list
|
|
|
|
|
this.bindLoc = new Vector3fImmutable(this.statLat, this.statAlt, this.statLon); |
|
|
|
|
this.bindLoc = this.building.getLoc().add(this.bindLoc); |
|
|
|
|
this.loc = new Vector3fImmutable(bindLoc); |
|
|
|
|
this.endLoc = new Vector3fImmutable(bindLoc); |
|
|
|
|
|
|
|
|
|
if (this.contract != null) { |
|
|
|
|
|
|
|
|
|
slot = BuildingManager.getAvailableSlot(building); |
|
|
|
|
// Get next available slot for this Mobile and then
|
|
|
|
|
// add it to the building's hireling list
|
|
|
|
|
|
|
|
|
|
if (slot == -1) Logger.error("No available slot for Mobile: " + this.getObjectUUID()); |
|
|
|
|
slot = BuildingManager.getAvailableSlot(building); |
|
|
|
|
|
|
|
|
|
building.getHirelings().put(this, slot); |
|
|
|
|
if (slot == -1) |
|
|
|
|
Logger.error("No available slot for Mobile: " + this.getObjectUUID()); |
|
|
|
|
|
|
|
|
|
// Override bind and location for this npc derived
|
|
|
|
|
// from BuildingManager slot location data.
|
|
|
|
|
building.getHirelings().put(this, slot); |
|
|
|
|
|
|
|
|
|
slotLocation = BuildingManager.getSlotLocation(building, slot); |
|
|
|
|
// Override bind and location for this Mobile derived
|
|
|
|
|
// from BuildingManager slot location data.
|
|
|
|
|
|
|
|
|
|
this.bindLoc = building.getLoc().add(slotLocation); |
|
|
|
|
this.loc = building.getLoc().add(slotLocation); |
|
|
|
|
this.endLoc = bindLoc; |
|
|
|
|
slotLocation = BuildingManager.getSlotLocation(building, slot); |
|
|
|
|
|
|
|
|
|
// Configure region and floor/level for this Mobile
|
|
|
|
|
this.bindLoc = building.getLoc().add(slotLocation); |
|
|
|
|
this.loc = building.getLoc().add(slotLocation); |
|
|
|
|
this.endLoc = bindLoc; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Configure building region and floor/level for this Mobile
|
|
|
|
|
|
|
|
|
|
this.region = BuildingManager.GetRegion(this.building, bindLoc.x, bindLoc.y, bindLoc.z); |
|
|
|
|
} |
|
|
|
@ -856,15 +869,16 @@ public class Mob extends AbstractIntelligenceAgent {
@@ -856,15 +869,16 @@ public class Mob extends AbstractIntelligenceAgent {
|
|
|
|
|
this.mana.set(this.manaMax); |
|
|
|
|
this.stamina.set(this.staminaMax); |
|
|
|
|
|
|
|
|
|
if (!this.nameOverride.isEmpty()) this.firstName = this.nameOverride; |
|
|
|
|
else this.firstName = this.mobBase.getFirstName(); |
|
|
|
|
if (!this.nameOverride.isEmpty()) |
|
|
|
|
this.firstName = this.nameOverride; |
|
|
|
|
else |
|
|
|
|
this.firstName = this.mobBase.getFirstName(); |
|
|
|
|
|
|
|
|
|
if (isPet) { |
|
|
|
|
if (isPet) |
|
|
|
|
this.setObjectTypeMask(MBServerStatics.MASK_PET | this.getTypeMasks()); |
|
|
|
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) this.setLoc(this.getLoc()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (this.contract == null) this.level = (short) this.mobBase.getLevel(); |
|
|
|
|
if (this.contract == null) |
|
|
|
|
this.level = (short) this.mobBase.getLevel(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//set bonuses
|
|
|
|
|