adding tests for utilities and fixing tests for AMS; adding information to PAMessage; scaling back modifications to WSA

This commit is contained in:
FateJH 2018-02-28 23:35:18 -05:00
parent e93c510d22
commit 74863858f7
4 changed files with 135 additions and 126 deletions

View file

@ -7,7 +7,13 @@ import scodec.codecs._
/** /**
* na<br> * na<br>
* Global:<br>
* `50 - Common Initialization?`<br>
* `51 - Common Initialization?`<br>
* `67 - ???`<br>
* <br>
* Global (GUID=0)<br> * Global (GUID=0)<br>
* `82 - ???`
* `83 - max boomers`<br> * `83 - max boomers`<br>
* `84 - max he mines`<br> * `84 - max he mines`<br>
* `85 - max disruptor mines`<br> * `85 - max disruptor mines`<br>

View file

@ -1,7 +1,6 @@
// Copyright (c) 2017 PSForever // Copyright (c) 2017 PSForever
package objects package objects
import net.psforever.objects.GlobalDefinitions.remote_electronics_kit
import net.psforever.objects.definition.converter.{ACEConverter, CharacterSelectConverter, REKConverter} import net.psforever.objects.definition.converter.{ACEConverter, CharacterSelectConverter, REKConverter}
import net.psforever.objects._ import net.psforever.objects._
import net.psforever.objects.definition._ import net.psforever.objects.definition._
@ -184,13 +183,13 @@ class ConverterTest extends Specification {
"convert to packet (BR < 24)" in { "convert to packet (BR < 24)" in {
obj.BEP = 0 obj.BEP = 0
obj.Definition.Packet.DetailedConstructorData(obj) match { obj.Definition.Packet.DetailedConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
} }
obj.Definition.Packet.ConstructorData(obj) match { obj.Definition.Packet.ConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
@ -200,13 +199,13 @@ class ConverterTest extends Specification {
"convert to packet (BR >= 24)" in { "convert to packet (BR >= 24)" in {
obj.BEP = 10000000 obj.BEP = 10000000
obj.Definition.Packet.DetailedConstructorData(obj) match { obj.Definition.Packet.DetailedConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
} }
obj.Definition.Packet.ConstructorData(obj) match { obj.Definition.Packet.ConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
@ -216,7 +215,7 @@ class ConverterTest extends Specification {
"convert to simple packet (BR < 24)" in { "convert to simple packet (BR < 24)" in {
obj.BEP = 0 obj.BEP = 0
converter.DetailedConstructorData(obj) match { converter.DetailedConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
@ -228,7 +227,7 @@ class ConverterTest extends Specification {
"convert to simple packet (BR >= 24)" in { "convert to simple packet (BR >= 24)" in {
obj.BEP = 10000000 obj.BEP = 10000000
converter.DetailedConstructorData(obj) match { converter.DetailedConstructorData(obj) match {
case Success(pkt) => case Success(_) =>
ok ok
case _ => case _ =>
ko ko
@ -290,7 +289,7 @@ class ConverterTest extends Specification {
obj.Definition.Packet.ConstructorData(obj) match { obj.Definition.Packet.ConstructorData(obj) match {
case Success(pkt) => case Success(pkt) =>
pkt mustEqual CommonTerminalData(PlanetSideEmpire.NEUTRAL, 0) pkt mustEqual CommonTerminalData(PlanetSideEmpire.NEUTRAL)
case _ => case _ =>
ko ko
} }
@ -338,8 +337,10 @@ class ConverterTest extends Specification {
val val
ams = Vehicle(GlobalDefinitions.ams) ams = Vehicle(GlobalDefinitions.ams)
ams.GUID = PlanetSideGUID(413) ams.GUID = PlanetSideGUID(413)
ams.Utilities(3)().GUID = PlanetSideGUID(414) ams.Utilities(1)().GUID = PlanetSideGUID(414)
ams.Utilities(4)().GUID = PlanetSideGUID(415) 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 ams.Definition.Packet.ConstructorData(ams).isSuccess mustEqual true
ok //TODO write more of this test ok //TODO write more of this test

View file

@ -27,6 +27,49 @@ class UtilityTest extends Specification {
obj().asInstanceOf[Terminal].Definition.ObjectId mustEqual 614 obj().asInstanceOf[Terminal].Definition.ObjectId mustEqual 614
obj().asInstanceOf[Terminal].Actor == ActorRef.noSender 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 { object UtilityTest {
val vehicle = Vehicle(GlobalDefinitions.quadstealth) val vehicle = Vehicle(GlobalDefinitions.quadstealth)

View file

@ -404,16 +404,16 @@ class WorldSessionActor extends Actor with MDCContextAware {
if(state == DriveState.Deploying) { if(state == DriveState.Deploying) {
log.info(s"DeployRequest: $obj transitioning to deploy state") log.info(s"DeployRequest: $obj transitioning to deploy state")
obj.Velocity = Some(Vector3.Zero) //no velocity obj.Velocity = Some(Vector3.Zero) //no velocity
sendResponse(DeployRequestMessage(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, obj.Position)) vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
import scala.concurrent.duration._ import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
context.system.scheduler.scheduleOnce(obj.DeployTime milliseconds, obj.Actor, Deployment.TryDeploy(DriveState.Deployed)) context.system.scheduler.scheduleOnce(obj.DeployTime milliseconds, obj.Actor, Deployment.TryDeploy(DriveState.Deployed))
} }
else if(state == DriveState.Deployed) { else if(state == DriveState.Deployed) {
log.info(s"DeployRequest: $obj has been Deployed") log.info(s"DeployRequest: $obj has been Deployed")
sendResponse(DeployRequestMessage(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, obj.Position)) vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero))
DeploymentActivities(obj) DeploymentActivities(obj)
//... //...
} }
@ -904,8 +904,9 @@ class WorldSessionActor extends Actor with MDCContextAware {
continent.Transport ! Zone.SpawnVehicle(vehicle) continent.Transport ! Zone.SpawnVehicle(vehicle)
vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.LoadVehicle(player_guid, vehicle, objedtId, vehicle_guid, vdata)) 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, 22, 1L)) //mount points off?
//sendResponse(PlanetsideAttributeMessage(vehicle_guid, 21, player_guid.guid))) //fte and ownership? sendResponse(PlanetsideAttributeMessage(vehicle_guid, 22, 1L)) //mount points off?
//sendResponse(ObjectAttachMessage(vehicle_guid, player_guid, 0))) 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.UnscheduleDeconstruction(vehicle_guid) //cancel queue timeout delay
vehicleService ! VehicleServiceMessage.DelayedVehicleDeconstruction(vehicle, continent, 21L) //temporary drive away from pad delay vehicleService ! VehicleServiceMessage.DelayedVehicleDeconstruction(vehicle, continent, 21L) //temporary drive away from pad delay
vehicle.Actor ! Mountable.TryMount(player, 0) vehicle.Actor ! Mountable.TryMount(player, 0)
@ -978,30 +979,28 @@ class WorldSessionActor extends Actor with MDCContextAware {
case Zone.ClientInitialization(/*initList*/_) => case Zone.ClientInitialization(/*initList*/_) =>
//TODO iterate over initList; for now, just do this //TODO iterate over initList; for now, just do this
sendResponse( sendResponse(
PacketCoding.CreateGamePacket(0, BuildingInfoUpdateMessage(
BuildingInfoUpdateMessage( PlanetSideGUID(6), //Ceryshen
PlanetSideGUID(6), //Ceryshen PlanetSideGUID(2), //Anguta
PlanetSideGUID(2), //Anguta 8, //80% NTU
8, //80% NTU false, //Base hacked
false, //Base hacked PlanetSideEmpire.NEUTRAL, //Base hacked by NC
PlanetSideEmpire.VS, //Base hacked by NC 0, //10 minutes remaining for hack
0, //10 minutes remaining for hack PlanetSideEmpire.VS, //Base owned by VS
PlanetSideEmpire.VS, //Base owned by VS 0, //!! Field != 0 will cause malformed packet. See class def.
0, //!! Field != 0 will cause malformed packet. See class def. None,
None, PlanetSideGeneratorState.Normal, //Generator critical
PlanetSideGeneratorState.Normal, //Generator critical true, //Respawn tubes destroyed
true, //Respawn tubes destroyed true, //Force dome active
true, //Force dome active 16, //Tech plant lattice benefit
16, //Tech plant lattice benefit 0,
0, Nil, //!! Field > 0 will cause malformed packet. See class def.
Nil, //!! Field > 0 will cause malformed packet. See class def. 0,
0, false,
false, 8, //!! Field != 8 will cause malformed packet. See class def.
8, //!! Field != 8 will cause malformed packet. See class def. None,
None, true, //Boosted spawn room pain field
true, //Boosted spawn room pain field true //Boosted generator room pain field
true //Boosted generator room pain field
)
) )
) )
sendResponse(ContinentalLockUpdateMessage(PlanetSideGUID(13), PlanetSideEmpire.VS)) // "The VS have captured the VS Sanctuary." 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(SetCurrentAvatarMessage(guid,0,0))
sendResponse(CreateShortcutMessage(guid, 1, 0, true, Shortcut.MEDKIT)) sendResponse(CreateShortcutMessage(guid, 1, 0, true, Shortcut.MEDKIT))
sendResponse(ChatMsg(ChatMessageType.CMT_EXPANSIONS, true, "", "1 on", None)) //CC on sendResponse(ChatMsg(ChatMessageType.CMT_EXPANSIONS, true, "", "1 on", None)) //CC on
sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 82, 0))
(1 to 73).foreach( i => { (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) => case Zone.ItemFromGround(tplayer, item) =>
@ -1156,7 +1156,6 @@ class WorldSessionActor extends Actor with MDCContextAware {
} }
var player : Player = null var player : Player = null
var testVehicle : Boolean = false
def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match { def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match {
case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) => 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 = Player("TestCharacter"+sessionId.toString, PlanetSideEmpire.VS, CharacterGender.Female, 41, 1)
//player.Position = Vector3(3674.8438f, 2726.789f, 91.15625f) //player.Position = Vector3(3674.8438f, 2726.789f, 91.15625f)
//player.Position = Vector3(3523.039f, 2855.5078f, 90.859375f) //player.Position = Vector3(3523.039f, 2855.5078f, 90.859375f)
//player.Position = Vector3(3561.0f, 2854.0f, 90.859375f) player.Position = Vector3(3561.0f, 2854.0f, 90.859375f)
player.Position = Vector3(3983.0f, 4344.0f, 266.0f)
player.Orientation = Vector3(0f, 0f, 90f) player.Orientation = Vector3(0f, 0f, 90f)
player.Certifications += CertificationType.StandardAssault player.Certifications += CertificationType.StandardAssault
player.Certifications += CertificationType.MediumAssault player.Certifications += CertificationType.MediumAssault
@ -1216,7 +1214,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
clientKeepAlive.cancel clientKeepAlive.cancel
clientKeepAlive = context.system.scheduler.schedule(0 seconds, 500 milliseconds, self, PokeClient()) 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) => case msg @ CharacterCreateRequestMessage(name, head, voice, gender, empire) =>
log.info("Handling " + msg) log.info("Handling " + msg)
sendResponse(ActionResultMessage(true, None)) 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 check if can spawn on last continent/location from player?
//TODO if yes, get continent guid accessors //TODO if yes, get continent guid accessors
//TODO if no, get sanctuary guid accessors and reset the player's expectations //TODO if no, get sanctuary guid accessors and reset the player's expectations
galaxy ! InterstellarCluster.GetWorld("z6") galaxy ! InterstellarCluster.GetWorld("home3")
case default => case default =>
log.error("Unsupported " + default + " in " + msg) log.error("Unsupported " + default + " in " + msg)
} }
@ -1244,7 +1242,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
log.info("Reticulating splines ...") log.info("Reticulating splines ...")
//map-specific initializations //map-specific initializations
//TODO continent.ClientConfiguration() //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(2), PlanetSideEmpire.VS)) //HART building C
sendResponse(SetEmpireMessage(PlanetSideGUID(29), PlanetSideEmpire.NC)) //South Villa Gun Tower sendResponse(SetEmpireMessage(PlanetSideGUID(29), PlanetSideEmpire.NC)) //South Villa Gun Tower
@ -1252,70 +1250,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
sendResponse(TimeOfDayMessage(1191182336)) sendResponse(TimeOfDayMessage(1191182336))
sendResponse(ReplicationStreamMessage(5, Some(6), Vector(SquadListing()))) //clear squad list sendResponse(ReplicationStreamMessage(5, Some(6), Vector(SquadListing()))) //clear squad list
sendResponse(PacketCoding.CreateGamePacket(0, sendResponse(ZonePopulationUpdateMessage(PlanetSideGUID(6), 414, 138, 0, 138, 0, 138, 0, 138, 0))
BuildingInfoUpdateMessage( (1 to 255).foreach(i => { sendResponse(SetEmpireMessage(PlanetSideGUID(i), PlanetSideEmpire.VS)) })
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)))
//render Equipment that was dropped into zone before the player arrived //render Equipment that was dropped into zone before the player arrived
continent.EquipmentOnGround.foreach(item => { continent.EquipmentOnGround.foreach(item => {
@ -1402,11 +1338,6 @@ class WorldSessionActor extends Actor with MDCContextAware {
player.Crouching = is_crouching player.Crouching = is_crouching
player.Jumping = is_jumping 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 { val wepInHand : Boolean = player.Slot(player.DrawnSlot).Equipment match {
case Some(item) => item.Definition == GlobalDefinitions.bolt_driver case Some(item) => item.Definition == GlobalDefinitions.bolt_driver
case None => false case None => false
@ -1471,8 +1402,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
case msg @ ReleaseAvatarRequestMessage() => case msg @ ReleaseAvatarRequestMessage() =>
log.info(s"ReleaseAvatarRequest: ${player.GUID} on ${continent.Id} has released") log.info(s"ReleaseAvatarRequest: ${player.GUID} on ${continent.Id} has released")
sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player.GUID, 6, 1))) sendResponse(PlanetsideAttributeMessage(player.GUID, 6, 1))
sendResponse(PacketCoding.CreateGamePacket(0, AvatarDeadStateMessage(DeadState.Release, 0, 0, player.Position, 2, true))) sendResponse(AvatarDeadStateMessage(DeadState.Release, 0, 0, player.Position, 2, true))
case msg @ SpawnRequestMessage(u1, u2, u3, u4, u5) => case msg @ SpawnRequestMessage(u1, u2, u3, u4, u5) =>
log.info(s"SpawnRequestMessage: $msg") log.info(s"SpawnRequestMessage: $msg")
@ -1486,14 +1417,14 @@ class WorldSessionActor extends Actor with MDCContextAware {
if(messagetype == ChatMessageType.CMT_SUICIDE) { if(messagetype == ChatMessageType.CMT_SUICIDE) {
val player_guid = player.GUID val player_guid = player.GUID
val pos = player.Position val pos = player.Position
sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player_guid, 0, 0))) sendResponse(PlanetsideAttributeMessage(player_guid, 0, 0))
sendResponse(PacketCoding.CreateGamePacket(0, PlanetsideAttributeMessage(player_guid, 2, 0))) sendResponse(PlanetsideAttributeMessage(player_guid, 2, 0))
sendResponse(PacketCoding.CreateGamePacket(0, DestroyMessage(player_guid, player_guid, PlanetSideGUID(0), pos))) sendResponse(DestroyMessage(player_guid, player_guid, PlanetSideGUID(0), pos))
sendResponse(PacketCoding.CreateGamePacket(0, AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, pos, 2, true))) sendResponse(AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, pos, 2, true))
} }
if (messagetype == ChatMessageType.CMT_VOICE) { 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 // TODO: handle this appropriately
@ -2046,10 +1977,10 @@ class WorldSessionActor extends Actor with MDCContextAware {
case Some(obj : Terminal) => case Some(obj : Terminal) =>
if(obj.Definition.isInstanceOf[MatrixTerminalDefinition]) { if(obj.Definition.isInstanceOf[MatrixTerminalDefinition]) {
//TODO matrix spawn point; for now, just blindly bind to show work (and hope nothing breaks) //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 { 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) => case Some(obj : PlanetSideGameObject) =>
@ -3095,7 +3026,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
obj match { obj match {
case vehicle : Vehicle => case vehicle : Vehicle =>
ReloadVehicleAccessPermissions(vehicle) //TODO we should not have to do this imho 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 _ => ; case _ => ;
} }
} }