diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index acc11d4e..f978d1cc 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -6,6 +6,7 @@ import network.packets.swg.zone.baselines.Baseline.BaselineType; import resources.Posture; import resources.Race; import resources.collections.SWGList; +import resources.collections.SWGMap; import resources.encodables.player.Equipment; import resources.network.BaselineBuilder; import resources.objects.SWGObject; @@ -56,6 +57,11 @@ public class CreatureObject extends TangibleObject { private SWGList equipmentList = new SWGList(BaselineType.CREO, 6, 0); // TODO: UpdateType private SWGList appearanceList = new SWGList(BaselineType.CREO, 6, 0); // TODO: UpdateType + private SWGMap skillMods = new SWGMap<>(BaselineType.CREO, 4, 0, false, StringType.ASCII); // TODO: SkillMod structure, UpdateType + private SWGMap missionCriticalObjs = new SWGMap<>(BaselineType.CREO, 4, 0); // TODO: UpdateType + private SWGMap abilities = new SWGMap<>(BaselineType.CREO, 4, 0, false, StringType.ASCII); // TODO: UpdateType + private SWGMap buffs = new SWGMap<>(BaselineType.CREO, 6, 0); // TODO: Buff structure, UpdateType + public CreatureObject(long objectId) { super(objectId); @@ -439,8 +445,7 @@ public class CreatureObject extends TangibleObject { bb.addFloat((float) accelScale); bb.addFloat((float) accelPercent); bb.addObject(hamEncumbList); - bb.addInt(0); // Skill Mod List Size (Map, k = String v= SkillMod structure) - bb.addInt(0); + bb.addObject(skillMods); bb.addFloat((float) movementScale); bb.addFloat((float) movementPercent); bb.addLong(0); // Listen to ID @@ -450,10 +455,8 @@ public class CreatureObject extends TangibleObject { bb.addFloat((float) turnScale); bb.addFloat((float) walkSpeed); bb.addFloat((float) waterModPercent); - bb.addInt(0); // Mission Critical Objects list size (Map, k = long v = long) - bb.addInt(0); - bb.addInt(0); // abilities list size (Map, k = string v = integer) - bb.addInt(0); + bb.addObject(missionCriticalObjs); + bb.addObject(abilities); bb.addInt(0); // XP Display Counter (remaining experience to next level up, updates the experience bar on client) bb.incremeantOperandCount(16); @@ -482,8 +485,7 @@ public class CreatureObject extends TangibleObject { bb.addObject(equipmentList); bb.addAscii(""); // Appearance (costume) bb.addBoolean(true); // Visible - bb.addInt(0); // Buff list (Map, k = Integer v = Buff structure) - bb.addInt(0); + bb.addObject(buffs); bb.addBoolean(false); // Is Performing bb.addByte(difficulty.getDifficulty()); bb.addInt(-1); // Hologram Color diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index 390a4052..9dfe4e64 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -3,9 +3,11 @@ package resources.objects.player; import network.packets.swg.zone.SceneEndBaselines; import network.packets.swg.zone.UpdatePostureMessage; import network.packets.swg.zone.baselines.Baseline.BaselineType; +import resources.collections.SWGMap; import resources.network.BaselineBuilder; import resources.objects.creature.CreatureObject; import resources.objects.intangible.IntangibleObject; +import resources.objects.waypoint.WaypointObject; import resources.player.AccessLevel; import resources.player.Player; import utilities.MathUtils; @@ -21,6 +23,10 @@ public class PlayerObject extends IntangibleObject { private int bornDate = 0; private int adminTag = 0; + private SWGMap experience = new SWGMap<>(BaselineType.PLAY, 8, 0); // TODO: UpdateType + private SWGMap waypoints = new SWGMap<>(BaselineType.PLAY, 8, 0); // TODO: UpdateType + private SWGMap quests = new SWGMap<>(BaselineType.PLAY, 8, 0); // TODO: UpdateType + public PlayerObject(long objectId) { super(objectId); setVolume(0); @@ -185,10 +191,8 @@ public class PlayerObject extends IntangibleObject { public void createBaseline8(Player target, BaselineBuilder bb) { super.createBaseline8(target, bb); - bb.addInt(0); // XP List Size (Map, k = exp type, v = points - bb.addInt(0); - bb.addInt(0); // Waypoint List Size (Map, k = waypointObjId, v = waypointobj - bb.addInt(0); + bb.addObject(experience); + bb.addObject(waypoints); bb.addInt(100); // Current Force Power bb.addInt(100); // Max Force Power bb.addInt(0); // Current FS Quest List (List) @@ -196,8 +200,7 @@ public class PlayerObject extends IntangibleObject { bb.addInt(0); // Completed FS Quest List (List) bb.addInt(0); bb.addInt(0); // Active Quest - bb.addInt(0); // Quest Journal (Map, k = questCRC, v = quest encodable data - bb.addInt(0); + bb.addObject(quests); bb.addAscii(""); // Profession Wheel Position bb.incremeantOperandCount(9); @@ -225,8 +228,7 @@ public class PlayerObject extends IntangibleObject { bb.addInt(100); // Max Drink bb.addInt(0); // Current Consumable bb.addInt(100); // Max Consumable - bb.addInt(0); // Waypoint List Size (Map, k = waypointObjId, v = waypointobj) - bb.addInt(0); + bb.addObject(waypoints); // TODO: Is there a difference between this one and baseline 8? bb.addInt(0); // Defenders List (Set) bb.addInt(0); bb.addInt(0); // Kill Meter Points diff --git a/src/services/CoreManager.java b/src/services/CoreManager.java index 2a4b37ce..b830e95b 100644 --- a/src/services/CoreManager.java +++ b/src/services/CoreManager.java @@ -4,9 +4,6 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import network.packets.soe.DataChannelA; -import network.packets.swg.SWGPacket; -import network.packets.swg.zone.baselines.Baseline; import intents.InboundPacketIntent; import intents.OutboundPacketIntent; import resources.Galaxy; diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index cce3b646..39bfdddb 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -24,7 +24,6 @@ import resources.Terrain; import resources.client_info.ClientFactory; import resources.client_info.visitors.ObjectData; import resources.client_info.visitors.SlotArrangementData; -import resources.client_info.visitors.SlotDefinitionData; import resources.client_info.visitors.SlotDescriptorData; import resources.control.Intent; import resources.control.Manager;