diff --git a/src/engine/devcmd/cmds/InfoCmd.java b/src/engine/devcmd/cmds/InfoCmd.java index 0b45ee99..8e0c3592 100644 --- a/src/engine/devcmd/cmds/InfoCmd.java +++ b/src/engine/devcmd/cmds/InfoCmd.java @@ -396,6 +396,10 @@ public class InfoCmd extends AbstractDevCmd { output += "BuildingID : " + targetNPC.getRegion().parentBuildingID; output += "building level : " + targetNPC.getRegion().level; output += "building room : " + targetNPC.getRegion().room; + }else if(targetNPC.getBuilding() != null) { + output += newline; + output += "Building : " + targetNPC.getBuilding(); + output += "In BuildingLoc : " + targetNPC.inBuildingLoc; }else{ output += newline; output += "No building found."; @@ -462,6 +466,19 @@ public class InfoCmd extends AbstractDevCmd { output += "Parent Zone LoadNum : " + targetMob.getParentZone().getLoadNum(); output += newline; output += "isMoving : " + targetMob.isMoving(); + if (targetMob.getRegion() != null){ + output += newline; + output += "BuildingID : " + targetMob.getRegion().parentBuildingID; + output += "building level : " + targetMob.getRegion().level; + output += "building room : " + targetMob.getRegion().room; + }else if(targetMob.building != null) { + output += newline; + output += "BuildingID : " + targetMob.building; + output += "In BuildingLoc : " + targetMob.inBuildingLoc; + }else{ + output += newline; + output += "No building found."; + } break; case Item: //intentional passthrough case MobLoot: diff --git a/src/engine/net/client/msg/LoadCharacterMsg.java b/src/engine/net/client/msg/LoadCharacterMsg.java index 49464cf7..abe292ad 100644 --- a/src/engine/net/client/msg/LoadCharacterMsg.java +++ b/src/engine/net/client/msg/LoadCharacterMsg.java @@ -86,22 +86,39 @@ public class LoadCharacterMsg extends ClientNetMsg { } else if (absChar != null) { - if (absChar.getObjectType().equals(GameObjectType.PlayerCharacter)){ + if (absChar.getObjectType().equals(GameObjectType.PlayerCharacter)) { Regions region = absChar.getRegion(); - - if (region == null){ + + if (region == null) { writer.putInt(-1); writer.putInt(-1); - }else{ + } else { Building regionBuilding = Regions.GetBuildingForRegion(region); - if (regionBuilding == null){ + if (regionBuilding == null) { writer.putInt(-1); writer.putInt(-1); - }else{ + } else { writer.putInt(region.getLevel()); writer.putInt(region.getRoom()); } } + } + else if (absChar.getObjectType().equals(GameObjectType.Mob)){ + Regions region = absChar.getRegion(); + + if (region == null){ + writer.putInt(-1); + writer.putInt(-1); + }else{ + Building regionBuilding = Regions.GetBuildingForRegion(region); + if (regionBuilding == null){ + writer.putInt(-1); + writer.putInt(-1); + }else{ + writer.putInt(region.getLevel()); + writer.putInt(region.getRoom()); + } + } //TODO below is Mob Region Serialization, not implemented. default to -1, which is ground. }else { diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 4130be5d..5390903e 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -1152,11 +1152,13 @@ public class Mob extends AbstractIntelligenceAgent { if (newLoc.equals(this.getEndLoc())) { this.stopMovement(newLoc); + this.region = AbstractWorldObject.GetRegionByWorldObject(this); return; //Next upda } setLoc(newLoc); + this.region = AbstractWorldObject.GetRegionByWorldObject(this); //Next update will be end Loc, lets stop him here. } diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index 7ee76473..c4b9203e 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -1222,6 +1222,7 @@ public class NPC extends AbstractCharacter { }catch (Exception e){ Logger.error( e.getMessage()); } + this.region = AbstractWorldObject.GetRegionByWorldObject(this); } public void removeFromZone() { @@ -1461,7 +1462,7 @@ public class NPC extends AbstractCharacter { mob.setSpawnTime(10); mob.setNpcOwner(this); mob.state = STATE.Awake; - + mob.region = AbstractWorldObject.GetRegionByWorldObject(mob); return mob; }