forked from MagicBane/Server
Code moved to runafterload.
This commit is contained in:
+55
-30
@@ -18,7 +18,6 @@ import engine.job.JobContainer;
|
|||||||
import engine.job.JobScheduler;
|
import engine.job.JobScheduler;
|
||||||
import engine.jobs.UpgradeNPCJob;
|
import engine.jobs.UpgradeNPCJob;
|
||||||
import engine.math.Bounds;
|
import engine.math.Bounds;
|
||||||
import engine.math.Quaternion;
|
|
||||||
import engine.math.Vector3f;
|
import engine.math.Vector3f;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.net.ByteBufferWriter;
|
import engine.net.ByteBufferWriter;
|
||||||
@@ -108,7 +107,6 @@ public class NPC extends AbstractCharacter {
|
|||||||
|
|
||||||
this.parentZone = parent;
|
this.parentZone = parent;
|
||||||
this.parentZoneID = parent.getObjectUUID();
|
this.parentZoneID = parent.getObjectUUID();
|
||||||
clearStatic();
|
|
||||||
|
|
||||||
this.dbID = MBServerStatics.NO_DB_ROW_ASSIGNED_YET;
|
this.dbID = MBServerStatics.NO_DB_ROW_ASSIGNED_YET;
|
||||||
this.currentID = MBServerStatics.NO_DB_ROW_ASSIGNED_YET;
|
this.currentID = MBServerStatics.NO_DB_ROW_ASSIGNED_YET;
|
||||||
@@ -139,9 +137,6 @@ public class NPC extends AbstractCharacter {
|
|||||||
this.parentZone = parent;
|
this.parentZone = parent;
|
||||||
this.dbID = newUUID;
|
this.dbID = newUUID;
|
||||||
this.currentID = newUUID;
|
this.currentID = newUUID;
|
||||||
|
|
||||||
initializeNPC();
|
|
||||||
clearStatic();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -246,12 +241,6 @@ public class NPC extends AbstractCharacter {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
initializeNPC();
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.error("NPC: " + this.dbID + " :" + e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean ISWallArcher(Contract contract) {
|
public static boolean ISWallArcher(Contract contract) {
|
||||||
@@ -750,19 +739,8 @@ public class NPC extends AbstractCharacter {
|
|||||||
return currentID;
|
return currentID;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearStatic() {
|
|
||||||
this.parentZone = null;
|
|
||||||
this.statLat = 0f;
|
|
||||||
this.statLon = 0f;
|
|
||||||
this.statAlt = 0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initializeNPC() {
|
private void initializeNPC() {
|
||||||
|
|
||||||
int slot;
|
|
||||||
Vector3fImmutable slotLocation;
|
|
||||||
Quaternion slotRotation;
|
|
||||||
|
|
||||||
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER))
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -841,10 +819,6 @@ public class NPC extends AbstractCharacter {
|
|||||||
return this.contract;
|
return this.contract;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Serialization
|
|
||||||
*/
|
|
||||||
|
|
||||||
public int getContractID() {
|
public int getContractID() {
|
||||||
|
|
||||||
if (this.contract != null)
|
if (this.contract != null)
|
||||||
@@ -1107,14 +1081,65 @@ public class NPC extends AbstractCharacter {
|
|||||||
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER))
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try {
|
// Configure parent zone adding this NPC to the
|
||||||
|
// zone collection
|
||||||
|
|
||||||
this.equip = loadEquipmentSet(this.equipmentSetID);
|
this.parentZone = ZoneManager.getZoneByUUID(this.parentZoneID);
|
||||||
|
this.parentZone.zoneNPCSet.remove(this);
|
||||||
|
this.parentZone.zoneNPCSet.add(this);
|
||||||
|
|
||||||
} catch (Exception e) {
|
// Setup location for this NPC
|
||||||
Logger.error(e.getMessage());
|
|
||||||
|
this.bindLoc = new Vector3fImmutable(this.statLat, this.statAlt, this.statLon);
|
||||||
|
this.bindLoc = this.parentZone.getLoc().add(this.bindLoc);
|
||||||
|
this.loc = new Vector3fImmutable(bindLoc);
|
||||||
|
|
||||||
|
// Handle NPCs within buildings
|
||||||
|
|
||||||
|
if (this.building != null)
|
||||||
|
NPCManager.slotCharacterInBuilding(this);
|
||||||
|
|
||||||
|
if (this.contract != null) {
|
||||||
|
this.symbol = this.contract.getIconID();
|
||||||
|
this.modTypeTable = this.contract.getNPCModTypeTable();
|
||||||
|
this.modSuffixTable = this.contract.getNpcModSuffixTable();
|
||||||
|
this.itemModTable = this.contract.getItemModTable();
|
||||||
|
int VID = this.contract.getVendorID();
|
||||||
|
|
||||||
|
if (VID != 0)
|
||||||
|
this.vendorID = VID;
|
||||||
|
else
|
||||||
|
this.vendorID = 1; //no vendor items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.mobBase != null) {
|
||||||
|
this.healthMax = this.mobBase.getHealthMax();
|
||||||
|
this.manaMax = 0;
|
||||||
|
this.staminaMax = 0;
|
||||||
|
this.setHealth(this.healthMax);
|
||||||
|
this.mana.set(this.manaMax);
|
||||||
|
this.stamina.set(this.staminaMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.parentZone.isPlayerCity())
|
||||||
|
if (NPC.GetNPCProfits(this) == null)
|
||||||
|
NPCProfits.CreateProfits(this);
|
||||||
|
|
||||||
|
//TODO set these correctly later
|
||||||
|
this.rangeHandOne = 8;
|
||||||
|
this.rangeHandTwo = -1;
|
||||||
|
this.minDamageHandOne = 1;
|
||||||
|
this.maxDamageHandOne = 4;
|
||||||
|
this.minDamageHandTwo = 1;
|
||||||
|
this.maxDamageHandTwo = 4;
|
||||||
|
this.atrHandOne = 300;
|
||||||
|
this.defenseRating = 200;
|
||||||
|
this.isActive = true;
|
||||||
|
|
||||||
|
this.charItemManager.load();
|
||||||
|
|
||||||
|
this.equip = loadEquipmentSet(this.equipmentSetID);
|
||||||
|
|
||||||
if (this.equip == null)
|
if (this.equip == null)
|
||||||
this.equip = new HashMap<>();
|
this.equip = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user