diff --git a/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala
index 5c1adf08..5d0dc875 100644
--- a/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala
+++ b/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala
@@ -7,7 +7,13 @@ import scodec.codecs._
/**
* na
+ * Global:
+ * `50 - Common Initialization?`
+ * `51 - Common Initialization?`
+ * `67 - ???`
+ *
* Global (GUID=0)
+ * `82 - ???`
* `83 - max boomers`
* `84 - max he mines`
* `85 - max disruptor mines`
diff --git a/common/src/test/scala/objects/ConverterTest.scala b/common/src/test/scala/objects/ConverterTest.scala
index 723c248f..aece5b17 100644
--- a/common/src/test/scala/objects/ConverterTest.scala
+++ b/common/src/test/scala/objects/ConverterTest.scala
@@ -1,7 +1,6 @@
// Copyright (c) 2017 PSForever
package objects
-import net.psforever.objects.GlobalDefinitions.remote_electronics_kit
import net.psforever.objects.definition.converter.{ACEConverter, CharacterSelectConverter, REKConverter}
import net.psforever.objects._
import net.psforever.objects.definition._
@@ -184,13 +183,13 @@ class ConverterTest extends Specification {
"convert to packet (BR < 24)" in {
obj.BEP = 0
obj.Definition.Packet.DetailedConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
}
obj.Definition.Packet.ConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
@@ -200,13 +199,13 @@ class ConverterTest extends Specification {
"convert to packet (BR >= 24)" in {
obj.BEP = 10000000
obj.Definition.Packet.DetailedConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
}
obj.Definition.Packet.ConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
@@ -216,7 +215,7 @@ class ConverterTest extends Specification {
"convert to simple packet (BR < 24)" in {
obj.BEP = 0
converter.DetailedConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
@@ -228,7 +227,7 @@ class ConverterTest extends Specification {
"convert to simple packet (BR >= 24)" in {
obj.BEP = 10000000
converter.DetailedConstructorData(obj) match {
- case Success(pkt) =>
+ case Success(_) =>
ok
case _ =>
ko
@@ -290,7 +289,7 @@ class ConverterTest extends Specification {
obj.Definition.Packet.ConstructorData(obj) match {
case Success(pkt) =>
- pkt mustEqual CommonTerminalData(PlanetSideEmpire.NEUTRAL, 0)
+ pkt mustEqual CommonTerminalData(PlanetSideEmpire.NEUTRAL)
case _ =>
ko
}
@@ -338,8 +337,10 @@ class ConverterTest extends Specification {
val
ams = Vehicle(GlobalDefinitions.ams)
ams.GUID = PlanetSideGUID(413)
- ams.Utilities(3)().GUID = PlanetSideGUID(414)
- ams.Utilities(4)().GUID = PlanetSideGUID(415)
+ ams.Utilities(1)().GUID = PlanetSideGUID(414)
+ ams.Utilities(2)().GUID = PlanetSideGUID(415)
+ ams.Utilities(3)().GUID = PlanetSideGUID(416)
+ ams.Utilities(4)().GUID = PlanetSideGUID(417)
ams.Definition.Packet.ConstructorData(ams).isSuccess mustEqual true
ok //TODO write more of this test
diff --git a/common/src/test/scala/objects/UtilityTest.scala b/common/src/test/scala/objects/UtilityTest.scala
index ef78af4b..97b46d75 100644
--- a/common/src/test/scala/objects/UtilityTest.scala
+++ b/common/src/test/scala/objects/UtilityTest.scala
@@ -27,6 +27,49 @@ class UtilityTest extends Specification {
obj().asInstanceOf[Terminal].Definition.ObjectId mustEqual 614
obj().asInstanceOf[Terminal].Actor == ActorRef.noSender
}
+
+ "create a matrix_terminalc object" in {
+ val obj = Utility(UtilityType.matrix_terminalc, UtilityTest.vehicle)
+ obj.UtilType mustEqual UtilityType.matrix_terminalc
+ obj().isInstanceOf[Terminal] mustEqual true
+ obj().asInstanceOf[Terminal].Definition.ObjectId mustEqual 519
+ obj().asInstanceOf[Terminal].Actor == ActorRef.noSender
+ }
+
+ "create an ams_respawn_tube object" in {
+ import net.psforever.objects.serverobject.tube.SpawnTube
+ val obj = Utility(UtilityType.ams_respawn_tube, UtilityTest.vehicle)
+ obj.UtilType mustEqual UtilityType.ams_respawn_tube
+ obj().isInstanceOf[SpawnTube] mustEqual true
+ obj().asInstanceOf[SpawnTube].Definition.ObjectId mustEqual 49
+ obj().asInstanceOf[SpawnTube].Actor == ActorRef.noSender
+ }
+
+ "be located with their owner (terminal)" in {
+ val veh = Vehicle(GlobalDefinitions.quadstealth)
+ val obj = Utility(UtilityType.order_terminala, veh)
+ obj().Position mustEqual veh.Position
+ obj().Orientation mustEqual veh.Orientation
+
+ import net.psforever.types.Vector3
+ veh.Position = Vector3(1, 2, 3)
+ veh.Orientation = Vector3(4, 5, 6)
+ obj().Position mustEqual veh.Position
+ obj().Orientation mustEqual veh.Orientation
+ }
+
+ "be located with their owner (spawn tube)" in {
+ val veh = Vehicle(GlobalDefinitions.quadstealth)
+ val obj = Utility(UtilityType.ams_respawn_tube, veh)
+ obj().Position mustEqual veh.Position
+ obj().Orientation mustEqual veh.Orientation
+
+ import net.psforever.types.Vector3
+ veh.Position = Vector3(1, 2, 3)
+ veh.Orientation = Vector3(4, 5, 6)
+ obj().Position mustEqual veh.Position
+ obj().Orientation mustEqual veh.Orientation
+ }
}
}
@@ -58,6 +101,34 @@ class Utility2Test extends ActorTest() {
}
}
+class Utility3Test extends ActorTest() {
+ "Utility" should {
+ "wire a matrix_terminalc Actor" in {
+ val obj = Utility(UtilityType.matrix_terminalc, UtilityTest.vehicle)
+ obj().GUID = PlanetSideGUID(1)
+ assert(obj().Actor == ActorRef.noSender)
+
+ system.actorOf(Props(classOf[UtilityTest.SetupControl], obj), "test") ! ""
+ receiveOne(Duration.create(100, "ms")) //consume and discard
+ assert(obj().Actor != ActorRef.noSender)
+ }
+ }
+}
+
+class Utility4Test extends ActorTest() {
+ "Utility" should {
+ "wire an ams_respawn_tube Actor" in {
+ val obj = Utility(UtilityType.ams_respawn_tube, UtilityTest.vehicle)
+ obj().GUID = PlanetSideGUID(1)
+ assert(obj().Actor == ActorRef.noSender)
+
+ system.actorOf(Props(classOf[UtilityTest.SetupControl], obj), "test") ! ""
+ receiveOne(Duration.create(100, "ms")) //consume and discard
+ assert(obj().Actor != ActorRef.noSender)
+ }
+ }
+}
+
object UtilityTest {
val vehicle = Vehicle(GlobalDefinitions.quadstealth)
diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala
index fccc8622..a7c9d8f3 100644
--- a/pslogin/src/main/scala/WorldSessionActor.scala
+++ b/pslogin/src/main/scala/WorldSessionActor.scala
@@ -404,16 +404,16 @@ class WorldSessionActor extends Actor with MDCContextAware {
if(state == DriveState.Deploying) {
log.info(s"DeployRequest: $obj transitioning to deploy state")
obj.Velocity = Some(Vector3.Zero) //no velocity
- sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, obj.Position))
- vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, obj.Position))
+ sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
+ vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global
context.system.scheduler.scheduleOnce(obj.DeployTime milliseconds, obj.Actor, Deployment.TryDeploy(DriveState.Deployed))
}
else if(state == DriveState.Deployed) {
log.info(s"DeployRequest: $obj has been Deployed")
- sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, obj.Position))
- vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, obj.Position))
+ sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
+ vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
DeploymentActivities(obj)
//...
}
@@ -904,8 +904,9 @@ class WorldSessionActor extends Actor with MDCContextAware {
continent.Transport ! Zone.SpawnVehicle(vehicle)
vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.LoadVehicle(player_guid, vehicle, objedtId, vehicle_guid, vdata))
sendResponse(PlanetsideAttributeMessage(vehicle_guid, 22, 1L)) //mount points off?
- //sendResponse(PlanetsideAttributeMessage(vehicle_guid, 21, player_guid.guid))) //fte and ownership?
- //sendResponse(ObjectAttachMessage(vehicle_guid, player_guid, 0)))
+ sendResponse(PlanetsideAttributeMessage(vehicle_guid, 22, 1L)) //mount points off?
+ sendResponse(PlanetsideAttributeMessage(vehicle_guid, 21, player_guid.guid)) //fte and ownership?
+ //sendResponse(ObjectAttachMessage(vehicle_guid, player_guid, 0))
vehicleService ! VehicleServiceMessage.UnscheduleDeconstruction(vehicle_guid) //cancel queue timeout delay
vehicleService ! VehicleServiceMessage.DelayedVehicleDeconstruction(vehicle, continent, 21L) //temporary drive away from pad delay
vehicle.Actor ! Mountable.TryMount(player, 0)
@@ -978,30 +979,28 @@ class WorldSessionActor extends Actor with MDCContextAware {
case Zone.ClientInitialization(/*initList*/_) =>
//TODO iterate over initList; for now, just do this
sendResponse(
- PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6), //Ceryshen
- PlanetSideGUID(2), //Anguta
- 8, //80% NTU
- false, //Base hacked
- PlanetSideEmpire.VS, //Base hacked by NC
- 0, //10 minutes remaining for hack
- PlanetSideEmpire.VS, //Base owned by VS
- 0, //!! Field != 0 will cause malformed packet. See class def.
- None,
- PlanetSideGeneratorState.Normal, //Generator critical
- true, //Respawn tubes destroyed
- true, //Force dome active
- 16, //Tech plant lattice benefit
- 0,
- Nil, //!! Field > 0 will cause malformed packet. See class def.
- 0,
- false,
- 8, //!! Field != 8 will cause malformed packet. See class def.
- None,
- true, //Boosted spawn room pain field
- true //Boosted generator room pain field
- )
+ BuildingInfoUpdateMessage(
+ PlanetSideGUID(6), //Ceryshen
+ PlanetSideGUID(2), //Anguta
+ 8, //80% NTU
+ false, //Base hacked
+ PlanetSideEmpire.NEUTRAL, //Base hacked by NC
+ 0, //10 minutes remaining for hack
+ PlanetSideEmpire.VS, //Base owned by VS
+ 0, //!! Field != 0 will cause malformed packet. See class def.
+ None,
+ PlanetSideGeneratorState.Normal, //Generator critical
+ true, //Respawn tubes destroyed
+ true, //Force dome active
+ 16, //Tech plant lattice benefit
+ 0,
+ Nil, //!! Field > 0 will cause malformed packet. See class def.
+ 0,
+ false,
+ 8, //!! Field != 8 will cause malformed packet. See class def.
+ None,
+ true, //Boosted spawn room pain field
+ true //Boosted generator room pain field
)
)
sendResponse(ContinentalLockUpdateMessage(PlanetSideGUID(13), PlanetSideEmpire.VS)) // "The VS have captured the VS Sanctuary."
@@ -1026,9 +1025,10 @@ class WorldSessionActor extends Actor with MDCContextAware {
sendResponse(SetCurrentAvatarMessage(guid,0,0))
sendResponse(CreateShortcutMessage(guid, 1, 0, true, Shortcut.MEDKIT))
sendResponse(ChatMsg(ChatMessageType.CMT_EXPANSIONS, true, "", "1 on", None)) //CC on
+ sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 82, 0))
(1 to 73).foreach( i => {
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(i), 43, 0)))
+ sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(i), 67, 0))
})
case Zone.ItemFromGround(tplayer, item) =>
@@ -1156,7 +1156,6 @@ class WorldSessionActor extends Actor with MDCContextAware {
}
var player : Player = null
- var testVehicle : Boolean = false
def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match {
case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) =>
@@ -1167,8 +1166,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
player = Player("TestCharacter"+sessionId.toString, PlanetSideEmpire.VS, CharacterGender.Female, 41, 1)
//player.Position = Vector3(3674.8438f, 2726.789f, 91.15625f)
//player.Position = Vector3(3523.039f, 2855.5078f, 90.859375f)
- //player.Position = Vector3(3561.0f, 2854.0f, 90.859375f)
- player.Position = Vector3(3983.0f, 4344.0f, 266.0f)
+ player.Position = Vector3(3561.0f, 2854.0f, 90.859375f)
player.Orientation = Vector3(0f, 0f, 90f)
player.Certifications += CertificationType.StandardAssault
player.Certifications += CertificationType.MediumAssault
@@ -1216,7 +1214,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
import scala.concurrent.ExecutionContext.Implicits.global
clientKeepAlive.cancel
clientKeepAlive = context.system.scheduler.schedule(0 seconds, 500 milliseconds, self, PokeClient())
-//log.warn(PacketCoding.DecodePacket(hex"17 6C 00 00 00 03 01 4C 93 70 48 18 00 00 00").toString)
+
case msg @ CharacterCreateRequestMessage(name, head, voice, gender, empire) =>
log.info("Handling " + msg)
sendResponse(ActionResultMessage(true, None))
@@ -1232,7 +1230,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
//TODO check if can spawn on last continent/location from player?
//TODO if yes, get continent guid accessors
//TODO if no, get sanctuary guid accessors and reset the player's expectations
- galaxy ! InterstellarCluster.GetWorld("z6")
+ galaxy ! InterstellarCluster.GetWorld("home3")
case default =>
log.error("Unsupported " + default + " in " + msg)
}
@@ -1244,7 +1242,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
log.info("Reticulating splines ...")
//map-specific initializations
//TODO continent.ClientConfiguration()
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(0), 112, 1)))
+ sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 112, 1))
sendResponse(SetEmpireMessage(PlanetSideGUID(2), PlanetSideEmpire.VS)) //HART building C
sendResponse(SetEmpireMessage(PlanetSideGUID(29), PlanetSideEmpire.NC)) //South Villa Gun Tower
@@ -1252,70 +1250,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
sendResponse(TimeOfDayMessage(1191182336))
sendResponse(ReplicationStreamMessage(5, Some(6), Vector(SquadListing()))) //clear squad list
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(10),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(10), true, false, false)
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(11),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(11), true, false, false)
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(12),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(12), true, false, false)
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(13),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(13), true, false, false)
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(18657),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(18657), true, false, false)
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BuildingInfoUpdateMessage(
- PlanetSideGUID(6),PlanetSideGUID(18658),
- 0,false,PlanetSideEmpire.NEUTRAL,0,PlanetSideEmpire.NEUTRAL,0,None,PlanetSideGeneratorState.Normal,true,false,0,0,Nil,0,false,8,None,false,false
- )
- ))
- sendResponse(PacketCoding.CreateGamePacket(0,
- BroadcastWarpgateUpdateMessage(PlanetSideGUID(6), PlanetSideGUID(18658), true, false, false)
- ))
- sendRawResponse(hex"C0060000") //basic CaptureFlagUpdateMessage
- sendResponse(PacketCoding.CreateGamePacket(0, ZoneInfoMessage(6, true, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, ZoneLockInfoMessage(PlanetSideGUID(6), false, true)))
- sendResponse(PacketCoding.CreateGamePacket(0, ZonePopulationUpdateMessage(PlanetSideGUID(6), 414, 138, 1, 138, 1, 138, 1, 138, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2145), 50, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2145), 51, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2146), 50, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2146), 51, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2147), 50, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(PlanetSideGUID(2147), 51, 0)))
+ sendResponse(ZonePopulationUpdateMessage(PlanetSideGUID(6), 414, 138, 0, 138, 0, 138, 0, 138, 0))
+ (1 to 255).foreach(i => { sendResponse(SetEmpireMessage(PlanetSideGUID(i), PlanetSideEmpire.VS)) })
//render Equipment that was dropped into zone before the player arrived
continent.EquipmentOnGround.foreach(item => {
@@ -1402,11 +1338,6 @@ class WorldSessionActor extends Actor with MDCContextAware {
player.Crouching = is_crouching
player.Jumping = is_jumping
- if(is_crouching && !testVehicle) {
- testVehicle = true
- self ! PacketCoding.CreateGamePacket(0, ItemTransactionMessage(PlanetSideGUID(3353), TransactionType.Buy, 0, "ams", 0, PlanetSideGUID(0)))
- }
-
val wepInHand : Boolean = player.Slot(player.DrawnSlot).Equipment match {
case Some(item) => item.Definition == GlobalDefinitions.bolt_driver
case None => false
@@ -1471,8 +1402,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
case msg @ ReleaseAvatarRequestMessage() =>
log.info(s"ReleaseAvatarRequest: ${player.GUID} on ${continent.Id} has released")
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player.GUID, 6, 1)))
- sendResponse(PacketCoding.CreateGamePacket(0, AvatarDeadStateMessage(DeadState.Release, 0, 0, player.Position, 2, true)))
+ sendResponse(PlanetsideAttributeMessage(player.GUID, 6, 1))
+ sendResponse(AvatarDeadStateMessage(DeadState.Release, 0, 0, player.Position, 2, true))
case msg @ SpawnRequestMessage(u1, u2, u3, u4, u5) =>
log.info(s"SpawnRequestMessage: $msg")
@@ -1486,14 +1417,14 @@ class WorldSessionActor extends Actor with MDCContextAware {
if(messagetype == ChatMessageType.CMT_SUICIDE) {
val player_guid = player.GUID
val pos = player.Position
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player_guid, 0, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player_guid, 2, 0)))
- sendResponse(PacketCoding.CreateGamePacket(0, DestroyMessage(player_guid, player_guid, PlanetSideGUID(0), pos)))
- sendResponse(PacketCoding.CreateGamePacket(0, AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, pos, 2, true)))
+ sendResponse(PlanetsideAttributeMessage(player_guid, 0, 0))
+ sendResponse(PlanetsideAttributeMessage(player_guid, 2, 0))
+ sendResponse(DestroyMessage(player_guid, player_guid, PlanetSideGUID(0), pos))
+ sendResponse(AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, pos, 2, true))
}
if (messagetype == ChatMessageType.CMT_VOICE) {
- sendResponse(PacketCoding.CreateGamePacket(0, ChatMsg(ChatMessageType.CMT_VOICE, false, player.Name, contents, None)))
+ sendResponse(ChatMsg(ChatMessageType.CMT_VOICE, false, player.Name, contents, None))
}
// TODO: handle this appropriately
@@ -2046,10 +1977,10 @@ class WorldSessionActor extends Actor with MDCContextAware {
case Some(obj : Terminal) =>
if(obj.Definition.isInstanceOf[MatrixTerminalDefinition]) {
//TODO matrix spawn point; for now, just blindly bind to show work (and hope nothing breaks)
- sendResponse(PacketCoding.CreateGamePacket(0, BindPlayerMessage(1, "@ams", true, true, 0, 0, 0, obj.Position)))
+ sendResponse(BindPlayerMessage(1, "@ams", true, true, 0, 0, 0, obj.Position))
}
else {
- sendResponse(PacketCoding.CreateGamePacket(0, UseItemMessage(avatar_guid, unk1, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType)))
+ sendResponse(UseItemMessage(avatar_guid, unk1, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType))
}
case Some(obj : PlanetSideGameObject) =>
@@ -3095,7 +3026,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
obj match {
case vehicle : Vehicle =>
ReloadVehicleAccessPermissions(vehicle) //TODO we should not have to do this imho
- sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(obj.GUID, 81, 1)))
+ sendResponse(PlanetsideAttributeMessage(obj.GUID, 81, 1))
case _ => ;
}
}