forked from MagicBane/Server
NPCs in buildings show correct spawn times and progress
This commit is contained in:
@@ -744,8 +744,9 @@ public class ManageCityAssetsMsg extends ClientNetMsg {
|
||||
|
||||
if (!npcHire.isAlive()){
|
||||
writer.put((byte) 1); // 1 SHOWs respawning
|
||||
writer.putInt(10); // Seconds in respawn.
|
||||
writer.putInt(20);
|
||||
int respawnRemaining = (int)(((Mob)npcHire).deathTime + ((Mob)npcHire).spawnTime * 1000 - System.currentTimeMillis()) / 1000;
|
||||
writer.putInt(respawnRemaining); // Seconds in respawn remaining.
|
||||
writer.putInt(((Mob)npcHire).spawnTime); // max seconds for respawn
|
||||
}
|
||||
else
|
||||
writer.put((byte)0);
|
||||
|
||||
@@ -248,7 +248,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
Period upgradePeriod;
|
||||
int upgradePeriodInSeconds;
|
||||
|
||||
try{
|
||||
try {
|
||||
|
||||
|
||||
writer.putInt(messageType); //1
|
||||
@@ -281,7 +281,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
NPC npc = null;
|
||||
Mob mobA = null;
|
||||
|
||||
if (this.targetType == GameObjectType.NPC.ordinal()){
|
||||
if (this.targetType == GameObjectType.NPC.ordinal()) {
|
||||
|
||||
npc = NPC.getFromCache(this.targetID);
|
||||
|
||||
@@ -344,7 +344,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
profit = NPCProfits.defaultProfits;
|
||||
//adding .000000001 to match client.
|
||||
int buyNormal = (int) ((profit.buyNormal + .000001f) * 100);
|
||||
int buyGuild = (int) ((profit.buyGuild + .000001f) *100);
|
||||
int buyGuild = (int) ((profit.buyGuild + .000001f) * 100);
|
||||
int buyNation = (int) ((profit.buyNation + .000001f) * 100);
|
||||
|
||||
int sellNormal = (int) ((profit.sellNormal + .000001f) * 100);
|
||||
@@ -365,7 +365,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
//figure out number of protection slots based on building rank
|
||||
int runemasterSlots = (2 * npc.getRank()) + 6;
|
||||
|
||||
writer.putInt( runemasterSlots);
|
||||
writer.putInt(runemasterSlots);
|
||||
|
||||
for (int i = 0; i < 13; i++) {
|
||||
writer.putInt(0); //statics
|
||||
@@ -396,15 +396,15 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
|
||||
writer.putLong(0); //TODO Identify what Comp this is suppose to be.
|
||||
if (b.getProtectionState() == ProtectionState.PENDING)
|
||||
writer.put((byte)1);
|
||||
writer.put((byte) 1);
|
||||
else
|
||||
writer.put((byte)0);
|
||||
writer.put((byte)0);
|
||||
writer.put((byte) 0);
|
||||
writer.put((byte) 0);
|
||||
writer.putString(b.getName());
|
||||
writer.putInt(1);//what?
|
||||
writer.putInt(1);//what?
|
||||
//taxType = b.getTaxType()
|
||||
switch(b.taxType){
|
||||
switch (b.taxType) {
|
||||
case NONE:
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
@@ -419,8 +419,8 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
break;
|
||||
|
||||
}
|
||||
writer.put(b.enforceKOS ? (byte)1:0); //ENFORCE KOS
|
||||
writer.put((byte)0); //??
|
||||
writer.put(b.enforceKOS ? (byte) 1 : 0); //ENFORCE KOS
|
||||
writer.put((byte) 0); //??
|
||||
writer.putInt(1);
|
||||
}
|
||||
|
||||
@@ -474,13 +474,13 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(900);
|
||||
writer.putInt((int) timeLife); //time remaining?
|
||||
writer.putInt(0);
|
||||
writer.put((byte)0);
|
||||
writer.put((byte) 0);
|
||||
writer.putString(mob.getName());
|
||||
writer.put((byte) 0);
|
||||
}
|
||||
return;
|
||||
|
||||
}else{
|
||||
} else {
|
||||
|
||||
if (Contract.NoSlots(npc.getContract()))
|
||||
writer.putInt(0);
|
||||
@@ -546,7 +546,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
EffectsBase prefix = null;
|
||||
EffectsBase suffix = null;
|
||||
|
||||
for (String effectName: effectsList){
|
||||
for (String effectName : effectsList) {
|
||||
if (effectName.contains("PRE"))
|
||||
prefix = PowersManager.getEffectByIDString(effectName);
|
||||
if (effectName.contains("SUF"))
|
||||
@@ -615,10 +615,9 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(inventory.size()); //placeholder for item cnt
|
||||
|
||||
|
||||
|
||||
for (Item i : inventory) {
|
||||
|
||||
Item.serializeForClientMsgWithoutSlot(i,writer);
|
||||
Item.serializeForClientMsgWithoutSlot(i, writer);
|
||||
}
|
||||
|
||||
|
||||
@@ -636,7 +635,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(0);
|
||||
}
|
||||
|
||||
}else if (this.targetType == GameObjectType.Mob.ordinal()){
|
||||
} else if (this.targetType == GameObjectType.Mob.ordinal()) {
|
||||
|
||||
mobA = Mob.getFromCacheDBID(this.targetID);
|
||||
if (mobA == null) {
|
||||
@@ -644,7 +643,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mobA != null){
|
||||
if (mobA != null) {
|
||||
Contract con = mobA.getContract();
|
||||
if (con == null) {
|
||||
Logger.error("Missing contract for NPC " + this.targetID);
|
||||
@@ -653,7 +652,7 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
|
||||
int maxSlots = 1;
|
||||
|
||||
switch (mobA.getRank()){
|
||||
switch (mobA.getRank()) {
|
||||
case 1:
|
||||
case 2:
|
||||
maxSlots = 1;
|
||||
@@ -675,8 +674,8 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
maxSlots = 1;
|
||||
|
||||
}
|
||||
if(NPC.ISGuardCaptain(mobA.getContract().getContractID()) == false){
|
||||
maxSlots =0;
|
||||
if (NPC.ISGuardCaptain(mobA.getContract().getContractID()) == false) {
|
||||
maxSlots = 0;
|
||||
}
|
||||
writer.putInt(0); //anything other than 0 seems to mess up the client
|
||||
writer.putInt(targetType);
|
||||
@@ -763,27 +762,46 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(0);
|
||||
writer.putInt(1);
|
||||
writer.putInt(1);
|
||||
writer.put((byte) 0);
|
||||
long curTime = System.currentTimeMillis() / 1000;
|
||||
long upgradeTime = mob.getTimeToSpawnSiege() / 1000;
|
||||
long timeLife = upgradeTime - curTime;
|
||||
|
||||
writer.putInt(900);
|
||||
writer.putInt(900);
|
||||
writer.putInt((int) timeLife); //time remaining?
|
||||
long curTime = System.currentTimeMillis() / 1000;
|
||||
long upgradeTime = (mob.deathTime + (mob.spawnTime * 1000)) / 1000;
|
||||
long timeLife = upgradeTime - curTime;
|
||||
if (upgradeTime * 1000 > System.currentTimeMillis()) {
|
||||
if(mob.npcOwner.isAlive()) {
|
||||
writer.put((byte) 0);//shows respawning timer
|
||||
writer.putInt(mob.spawnTime);
|
||||
writer.putInt(mob.spawnTime);
|
||||
writer.putInt((int) timeLife); //time remaining for mob that is dead
|
||||
writer.putInt(0);
|
||||
writer.put((byte)0);
|
||||
writer.put((byte) 0);
|
||||
writer.putString(mob.getNameOverride().isEmpty() ? mob.getName() : mob.getNameOverride());
|
||||
writer.put((byte) 0);
|
||||
}
|
||||
|
||||
else{
|
||||
writer.put((byte) 0);//shows respawning timer
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
writer.putInt(0); //time remaining for mob that is dead
|
||||
writer.putInt(0);
|
||||
writer.put((byte) 0);
|
||||
writer.putString(mob.getNameOverride().isEmpty() ? mob.getName() : mob.getNameOverride());
|
||||
writer.put((byte) 0);
|
||||
}
|
||||
} else {
|
||||
//nothing required for countdown for a mob that is alive
|
||||
writer.put((byte) 1);//shows "Standing By"
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
writer.put((byte) 0);
|
||||
writer.putString(mob.getNameOverride().isEmpty() ? mob.getName() : mob.getNameOverride());
|
||||
writer.put((byte) 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user