From c2bcb63725b61d62ac65b16bee4ce688db4ecc20 Mon Sep 17 00:00:00 2001 From: FateJH Date: Sat, 20 Jan 2018 15:11:11 -0500 Subject: [PATCH] corrections for the shared magazine fire modes of the Aurora; conditions for character rendering when in a vehicle; WeaponJammedMessage -> WeaponDryFireMessage --- .../psforever/objects/GlobalDefinitions.scala | 4 ++-- .../packet/game/objectcreate/ObjectClass.scala | 4 ++-- .../packet/game/objectcreate/Prefab.scala | 4 ++-- pslogin/src/main/scala/WorldSessionActor.scala | 16 +++++++++++++--- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala index 15c4af9c..c670a868 100644 --- a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala +++ b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala @@ -1736,7 +1736,7 @@ object GlobalDefinitions { aurora_weapon_systema.FireModes.head.Magazine = 12 aurora_weapon_systema.FireModes += new FireModeDefinition aurora_weapon_systema.FireModes(1).AmmoTypeIndices += 0 - aurora_weapon_systema.FireModes(1).AmmoSlotIndex = 1 + aurora_weapon_systema.FireModes(1).AmmoSlotIndex = 0 aurora_weapon_systema.FireModes(1).Magazine = 12 aurora_weapon_systemb.Size = EquipmentSize.VehicleWeapon @@ -1747,7 +1747,7 @@ object GlobalDefinitions { aurora_weapon_systemb.FireModes.head.Magazine = 12 aurora_weapon_systemb.FireModes += new FireModeDefinition aurora_weapon_systemb.FireModes(1).AmmoTypeIndices += 0 - aurora_weapon_systemb.FireModes(1).AmmoSlotIndex = 1 + aurora_weapon_systemb.FireModes(1).AmmoSlotIndex = 0 aurora_weapon_systemb.FireModes(1).Magazine = 12 apc_weapon_systema.Size = EquipmentSize.VehicleWeapon diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala index 2b1bef29..9ceebca1 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala @@ -797,8 +797,8 @@ object ObjectClass { case ObjectClass.aphelion_starfire => ConstructorData.genericCodec(WeaponData.codec, "weapon") case ObjectClass.aphelion_starfire_left => ConstructorData.genericCodec(WeaponData.codec, "weapon") case ObjectClass.aphelion_starfire_right => ConstructorData.genericCodec(WeaponData.codec, "weapon") - case ObjectClass.aurora_weapon_systema => ConstructorData.genericCodec(WeaponData.codec(2), "weapon") - case ObjectClass.aurora_weapon_systemb => ConstructorData.genericCodec(WeaponData.codec(2), "weapon") + case ObjectClass.aurora_weapon_systema => ConstructorData.genericCodec(WeaponData.codec, "weapon") + case ObjectClass.aurora_weapon_systemb => ConstructorData.genericCodec(WeaponData.codec, "weapon") case ObjectClass.battlewagon_weapon_systema => ConstructorData.genericCodec(WeaponData.codec, "weapon") case ObjectClass.battlewagon_weapon_systemb => ConstructorData.genericCodec(WeaponData.codec, "weapon") case ObjectClass.battlewagon_weapon_systemc => ConstructorData.genericCodec(WeaponData.codec, "weapon") diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala index 1a3d8aed..54a6fff4 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala @@ -106,10 +106,10 @@ object Prefab { VehicleData(CommonFieldData(loc, faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, Some(InventoryData( InventoryItemData(ObjectClass.aurora_weapon_systema, weapon1_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo11_guid, 0, AmmoBoxData(0x8), ObjectClass.fluxpod_ammo, ammo12_guid, 1, AmmoBoxData(0x8)) + WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo11_guid, 0, AmmoBoxData(0x8)) ) :: InventoryItemData(ObjectClass.aurora_weapon_systemb, weapon2_guid, 6, - WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo21_guid, 0, AmmoBoxData(0x8), ObjectClass.fluxpod_ammo, ammo22_guid, 1, AmmoBoxData(0x8)) + WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo21_guid, 0, AmmoBoxData(0x8)) ) :: Nil )) )(VehicleFormat.Normal) diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 8ab2cfcc..e6d2e584 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -234,6 +234,7 @@ class WorldSessionActor extends Actor with MDCContextAware { case AvatarResponse.PlayerState(msg, spectating, weaponInHand) => if(player.GUID != guid) { val now = System.currentTimeMillis() + val (location, time, distanceSq) : (Vector3, Long, Float) = if(spectating) { (Vector3(2, 2, 2), 0L, 0f) } @@ -280,7 +281,7 @@ class WorldSessionActor extends Actor with MDCContextAware { case AvatarResponse.WeaponDryFire(weapon_guid) => if(player.GUID != guid) { - sendResponse(PacketCoding.CreateGamePacket(0, WeaponJammedMessage(weapon_guid))) + sendResponse(PacketCoding.CreateGamePacket(0, WeaponDryFireMessage(weapon_guid))) } case _ => ; @@ -387,6 +388,9 @@ class WorldSessionActor extends Actor with MDCContextAware { case VehicleResponse.VehicleState(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6) => if(player.GUID != guid) { sendResponse(PacketCoding.CreateGamePacket(0, VehicleStateMessage(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6))) + if(player.VehicleSeated.contains(vehicle_guid)) { + player.Position = pos + } } case _ => ; @@ -449,7 +453,7 @@ class WorldSessionActor extends Actor with MDCContextAware { //update mounted weapon belonging to seat weapon.AmmoSlots.foreach(slot => { //update the magazine(s) in the weapon, specifically val magazine = slot.Box - sendResponse(PacketCoding.CreateGamePacket(0, InventoryStateMessage(magazine.GUID, 0, weapon.GUID, magazine.Capacity.toLong))) + sendResponse(PacketCoding.CreateGamePacket(0, InventoryStateMessage(magazine.GUID, weapon.GUID, magazine.Capacity.toLong))) }) case _ => ; //no weapons to update } @@ -1295,6 +1299,7 @@ class WorldSessionActor extends Actor with MDCContextAware { case Some(tool) => if(tool.GUID == object_guid) { //TODO set tool orientation? + player.Orientation = Vector3(0f, pitch, yaw) vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.ChildObjectState(player.GUID, object_guid, pitch, yaw)) } case None => @@ -1315,7 +1320,12 @@ class WorldSessionActor extends Actor with MDCContextAware { case msg @ VehicleStateMessage(vehicle_guid, unk1, pos, ang, vel, unk5, unk6, unk7, wheels, unk9, unkA) => continent.GUID(vehicle_guid) match { case Some(obj : Vehicle) => - if(obj.Seat(0).get.Occupant.contains(player)) { //we're driving the vehicle + val seat = obj.Seat(0).get + if(seat.Occupant.contains(player)) { //we're driving the vehicle + player.Position = pos //convenient + if(seat.ControlledWeapon.isEmpty) { + player.Orientation = Vector3(0f, 0f, ang.z) //convenient + } obj.Position = pos obj.Orientation = ang obj.Velocity = vel