gender was never the same thing as sex; for now, I just need easy pronouns for the log

This commit is contained in:
Jason_DiDonato@yahoo.com 2021-03-21 14:22:00 -04:00
parent 39d68b537d
commit 9798e27d29
55 changed files with 481 additions and 455 deletions

View file

@ -77,11 +77,11 @@
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level> <level>TRACE</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter> -->
</appender> </appender>
<appender name="Sentry" class="io.sentry.logback.SentryAppender"> <appender name="Sentry" class="io.sentry.logback.SentryAppender">

View file

@ -485,7 +485,7 @@ class PacketCodingActorITest extends ActorTest {
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
41, 41,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),
@ -600,7 +600,7 @@ class PacketCodingActorKTest extends ActorTest {
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
41, 41,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),

View file

@ -48,7 +48,7 @@ class AutoRepairFacilityIntegrationTest extends FreedContextActorTest {
val building = Building.Structure(StructureType.Facility)(name = "integ-fac-test-building", guid = 6, map_id = 0, zone, context) val building = Building.Structure(StructureType.Facility)(name = "integ-fac-test-building", guid = 6, map_id = 0, zone, context)
building.Invalidate() building.Invalidate()
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition) val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition)
@ -164,7 +164,7 @@ class AutoRepairFacilityIntegrationAntGiveNtuTest extends FreedContextActorTest
expectNoMessage(1000 milliseconds) expectNoMessage(1000 milliseconds)
var buildingMap = new TrieMap[Int, Building]() var buildingMap = new TrieMap[Int, Building]()
val guid = new NumberPoolHub(new MaxNumberSource(max = 10)) val guid = new NumberPoolHub(new MaxNumberSource(max = 10))
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val ant = Vehicle(GlobalDefinitions.ant) val ant = Vehicle(GlobalDefinitions.ant)
val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition) val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition)
val silo = new ResourceSilo() val silo = new ResourceSilo()
@ -255,7 +255,7 @@ class AutoRepairFacilityIntegrationTerminalDestroyedTerminalAntTest extends Free
expectNoMessage(1000 milliseconds) expectNoMessage(1000 milliseconds)
var buildingMap = new TrieMap[Int, Building]() var buildingMap = new TrieMap[Int, Building]()
val guid = new NumberPoolHub(new MaxNumberSource(max = 10)) val guid = new NumberPoolHub(new MaxNumberSource(max = 10))
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val ant = Vehicle(GlobalDefinitions.ant) val ant = Vehicle(GlobalDefinitions.ant)
val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition) val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition)
@ -357,7 +357,7 @@ class AutoRepairFacilityIntegrationTerminalIncompleteRepairTest extends FreedCon
expectNoMessage(1000 milliseconds) expectNoMessage(1000 milliseconds)
var buildingMap = new TrieMap[Int, Building]() var buildingMap = new TrieMap[Int, Building]()
val guid = new NumberPoolHub(new MaxNumberSource(max = 10)) val guid = new NumberPoolHub(new MaxNumberSource(max = 10))
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val ant = Vehicle(GlobalDefinitions.ant) val ant = Vehicle(GlobalDefinitions.ant)
val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition) val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition)
@ -485,7 +485,7 @@ class AutoRepairTowerIntegrationTest extends FreedContextActorTest {
val building = Building.Structure(StructureType.Tower)(name = "integ-twr-test-building", guid = 6, map_id = 0, zone, context) val building = Building.Structure(StructureType.Tower)(name = "integ-twr-test-building", guid = 6, map_id = 0, zone, context)
building.Invalidate() building.Invalidate()
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition) val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition)

View file

@ -20,13 +20,13 @@ import net.psforever.objects.vital.projectile.ProjectileReason
import net.psforever.objects.zones.{Zone, ZoneMap} import net.psforever.objects.zones.{Zone, ZoneMap}
import net.psforever.objects.{GlobalDefinitions, Player, Tool} import net.psforever.objects.{GlobalDefinitions, Player, Tool}
import net.psforever.services.ServiceManager import net.psforever.services.ServiceManager
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire, Vector3}
import scala.concurrent.duration._ import scala.concurrent.duration._
class AutoRepairRequestNtuTest extends FreedContextActorTest { class AutoRepairRequestNtuTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)
@ -87,7 +87,7 @@ class AutoRepairRequestNtuTest extends FreedContextActorTest {
class AutoRepairRequestNtuRepeatTest extends FreedContextActorTest { class AutoRepairRequestNtuRepeatTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)
@ -151,7 +151,7 @@ class AutoRepairRequestNtuRepeatTest extends FreedContextActorTest {
class AutoRepairNoRequestNtuTest extends FreedContextActorTest { class AutoRepairNoRequestNtuTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)
@ -209,7 +209,7 @@ class AutoRepairNoRequestNtuTest extends FreedContextActorTest {
class AutoRepairRestoreRequestNtuTest extends FreedContextActorTest { class AutoRepairRestoreRequestNtuTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)
@ -274,7 +274,7 @@ class AutoRepairRestoreRequestNtuTest extends FreedContextActorTest {
class AutoRepairRepairWithNtuTest extends FreedContextActorTest { class AutoRepairRepairWithNtuTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)
@ -336,7 +336,7 @@ class AutoRepairRepairWithNtuTest extends FreedContextActorTest {
class AutoRepairRepairWithNtuUntilDoneTest extends FreedContextActorTest { class AutoRepairRepairWithNtuUntilDoneTest extends FreedContextActorTest {
ServiceManager.boot ServiceManager.boot
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val weapon = new Tool(GlobalDefinitions.suppressor) val weapon = new Tool(GlobalDefinitions.suppressor)
val terminal = new Terminal(AutoRepairTest.terminal_definition) val terminal = new Terminal(AutoRepairTest.terminal_definition)

View file

@ -58,7 +58,7 @@ class VehicleSpawnControl3Test extends ActorTest {
val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR) val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR)
//we can recycle the vehicle and the player for each order //we can recycle the vehicle and the player for each order
val probe = new TestProbe(system, "zone-events") val probe = new TestProbe(system, "zone-events")
val player2 = Player(Avatar(0, "test2", player.Faction, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar(0, "test2", player.Faction, CharacterSex.Male, 0, CharacterVoice.Mute))
player2.GUID = PlanetSideGUID(11) player2.GUID = PlanetSideGUID(11)
player2.Continent = zone.id player2.Continent = zone.id
player2.Spawn() player2.Spawn()
@ -216,7 +216,7 @@ object VehicleSpawnPadControlTest {
import net.psforever.objects.serverobject.structures.Building import net.psforever.objects.serverobject.structures.Building
import net.psforever.objects.vehicles.VehicleControl import net.psforever.objects.vehicles.VehicleControl
import net.psforever.objects.Tool import net.psforever.objects.Tool
import net.psforever.types.CharacterGender import net.psforever.types.CharacterSex
val vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) val vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
val weapon = vehicle.WeaponControlledFromSeat(1).get.asInstanceOf[Tool] val weapon = vehicle.WeaponControlledFromSeat(1).get.asInstanceOf[Tool]
@ -245,7 +245,7 @@ object VehicleSpawnPadControlTest {
pad.Owner.Faction = faction pad.Owner.Faction = faction
pad.Zone = zone pad.Zone = zone
guid.register(pad, "test-pool") guid.register(pad, "test-pool")
val player = Player(Avatar(0, "test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", faction, CharacterSex.Male, 0, CharacterVoice.Mute))
guid.register(player, "test-pool") guid.register(player, "test-pool")
player.Zone = zone player.Zone = zone
player.Spawn() player.Spawn()

View file

@ -181,7 +181,7 @@ class DroptItemTest extends ActorTest {
} }
class LoadPlayerTest extends ActorTest { class LoadPlayerTest extends ActorTest {
val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterSex.Female, 1, CharacterVoice.Voice1))
obj.GUID = PlanetSideGUID(10) obj.GUID = PlanetSideGUID(10)
obj.Slot(5).Equipment.get.GUID = PlanetSideGUID(11) obj.Slot(5).Equipment.get.GUID = PlanetSideGUID(11)
val c1data = obj.Definition.Packet.DetailedConstructorData(obj).get val c1data = obj.Definition.Packet.DetailedConstructorData(obj).get
@ -335,7 +335,7 @@ class PlayerStateTest extends ActorTest {
} }
class PickupItemTest extends ActorTest { class PickupItemTest extends ActorTest {
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 1, CharacterVoice.Voice1))
val tool = Tool(GlobalDefinitions.beamer) val tool = Tool(GlobalDefinitions.beamer)
tool.GUID = PlanetSideGUID(40) tool.GUID = PlanetSideGUID(40)
@ -512,7 +512,7 @@ class AvatarReleaseTest extends FreedContextActorTest {
GUID(guid) GUID(guid)
} }
zone.init(context) zone.init(context)
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 1, CharacterVoice.Voice1))
guid.register(obj) guid.register(obj)
guid.register(obj.Slot(5).Equipment.get) guid.register(obj.Slot(5).Equipment.get)
obj.Zone = zone obj.Zone = zone
@ -563,7 +563,7 @@ class AvatarReleaseEarly1Test extends FreedContextActorTest {
GUID(guid) GUID(guid)
} }
zone.init(context) zone.init(context)
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 1, CharacterVoice.Voice1))
guid.register(obj) guid.register(obj)
guid.register(obj.Slot(5).Equipment.get) guid.register(obj.Slot(5).Equipment.get)
obj.Zone = zone obj.Zone = zone
@ -615,13 +615,13 @@ class AvatarReleaseEarly2Test extends FreedContextActorTest {
GUID(guid) GUID(guid)
} }
zone.init(context) zone.init(context)
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 1, CharacterVoice.Voice1))
guid.register(obj) guid.register(obj)
guid.register(obj.Slot(5).Equipment.get) guid.register(obj.Slot(5).Equipment.get)
obj.Zone = zone obj.Zone = zone
obj.Release obj.Release
val objAlt = Player( val objAlt = Player(
Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1) Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 1, CharacterVoice.Voice1)
) //necessary clutter ) //necessary clutter
objAlt.GUID = PlanetSideGUID(3) objAlt.GUID = PlanetSideGUID(3)
objAlt.Slot(5).Equipment.get.GUID = PlanetSideGUID(4) objAlt.Slot(5).Equipment.get.GUID = PlanetSideGUID(4)

View file

@ -47,7 +47,7 @@ import net.psforever.packet.game.{
PlanetsideAttributeMessage PlanetsideAttributeMessage
} }
import net.psforever.types.{ import net.psforever.types.{
CharacterGender, CharacterSex,
CharacterVoice, CharacterVoice,
ExoSuitType, ExoSuitType,
ImplantType, ImplantType,
@ -98,7 +98,7 @@ object AvatarActor {
name: String, name: String,
head: Int, head: Int,
voice: CharacterVoice.Value, voice: CharacterVoice.Value,
gender: CharacterGender.Value, gender: CharacterSex,
empire: PlanetSideEmpire.Value empire: PlanetSideEmpire.Value
) extends Command ) extends Command
@ -1275,7 +1275,7 @@ class AvatarActor(
.run(query[persistence.Loadout].filter(_.avatarId == lift(avatar.id))) .run(query[persistence.Loadout].filter(_.avatarId == lift(avatar.id)))
.map { loadouts => .map { loadouts =>
loadouts.map { loadout => loadouts.map { loadout =>
val doll = new Player(Avatar(0, "doll", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val doll = new Player(Avatar(0, "doll", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
doll.ExoSuit = ExoSuitType(loadout.exosuitId) doll.ExoSuit = ExoSuitType(loadout.exosuitId)
loadout.items.split("/").foreach { loadout.items.split("/").foreach {

View file

@ -349,7 +349,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
out out
case None => case None =>
//delete stale entity reference from client //delete stale entity reference from client
log.warn(s"${player.Name} has an invalid reference to GUID ${id.get} in zone ${continent.id}") log.warn(s"ValidObject - ${player.Name} has an invalid GUID ${id.get.guid}, believing it in ${player.Sex.possessive} locker")
sendResponse(ObjectDeleteMessage(id.get, 0)) sendResponse(ObjectDeleteMessage(id.get, 0))
None None
} }
@ -359,7 +359,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case None if id.nonEmpty && id.get != PlanetSideGUID(0) => case None if id.nonEmpty && id.get != PlanetSideGUID(0) =>
//delete stale entity reference from client //delete stale entity reference from client
log.warn(s"${player.Name} has an invalid reference to GUID ${id.get} in zone ${continent.id}") log.warn(s"${player.Name} has an invalid reference to GUID ${id.get.guid} in zone ${continent.id}")
sendResponse(ObjectDeleteMessage(id.get, 0)) sendResponse(ObjectDeleteMessage(id.get, 0))
None None
@ -556,7 +556,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
vehicle.Seats(index).mount(player) vehicle.Seats(index).mount(player)
Some(vehicle) Some(vehicle)
case Some((name, index)) => case Some((name, index)) =>
log.warn(s"TransferPassenger: mount $index is already occupied") log.warn(s"TransferPassenger: $player tried to mount seat $index when it was already occupied, and was rebuked")
None None
case None => case None =>
None None
@ -943,7 +943,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
log.warn(s"${tplayer.Name} can not spawn in zone ${zone.id}; why?") log.warn(s"${tplayer.Name} can not spawn in zone ${zone.id}; why?")
case Zone.Population.PlayerAlreadySpawned(zone, tplayer) => case Zone.Population.PlayerAlreadySpawned(zone, tplayer) =>
log.warn(s"${tplayer.Name} is already spawned on zone ${zone.id}; a clerical error?") log.warn(s"${tplayer.Name} is already spawned on zone ${zone.id}; is this a clerical error?")
case ICS.SpawnPointResponse(response) => case ICS.SpawnPointResponse(response) =>
zoningType match { zoningType match {
@ -955,8 +955,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
cluster ! ICS.GetInstantActionSpawnPoint(player.Faction, context.self) cluster ! ICS.GetInstantActionSpawnPoint(player.Faction, context.self)
}) })
case zoningType => case _ =>
val currentZoningType = zoningType log.warn(s"SpawnPointResponse: ${player.Name}'s zoning was not in order at the time a response was received; attempting to guess what ${player.Sex.pronounSubject} wants to do")
val previousZoningType = zoningType
CancelZoningProcess() CancelZoningProcess()
PlayerActionsToCancel() PlayerActionsToCancel()
CancelAllProximityUnits() CancelAllProximityUnits()
@ -970,14 +971,14 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
player player
} }
val (pos, ori) = spawnPoint.SpecificPoint(obj) val (pos, ori) = spawnPoint.SpecificPoint(obj)
if (zoningType == Zoning.Method.InstantAction) if (previousZoningType == Zoning.Method.InstantAction)
LoadZonePhysicalSpawnPoint(zone.id, pos, ori, 0 seconds) LoadZonePhysicalSpawnPoint(zone.id, pos, ori, respawnTime = 0 seconds)
else else
LoadZonePhysicalSpawnPoint(zone.id, pos, ori, CountSpawnDelay(zone.id, spawnPoint, continent.id)) LoadZonePhysicalSpawnPoint(zone.id, pos, ori, CountSpawnDelay(zone.id, spawnPoint, continent.id))
case None => case None =>
log.error("got None spawn point response from InterstellarClusterService") log.warn(s"SpawnPointResponse: ${player.Name} received no spawn point response when asking InterstellarClusterService; sending home")
Thread.sleep(1000) // throttle in case of infinite loop //Thread.sleep(1000) // throttle in case of infinite loop
RequestSanctuaryZoneSpawn(player, 0) RequestSanctuaryZoneSpawn(player, currentZone = 0)
} }
} }
@ -990,12 +991,12 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case msg @ Zone.Vehicle.HasSpawned(zone, vehicle) => ; case msg @ Zone.Vehicle.HasSpawned(zone, vehicle) => ;
case msg @ Zone.Vehicle.CanNotSpawn(zone, vehicle, reason) => case msg @ Zone.Vehicle.CanNotSpawn(zone, vehicle, reason) =>
log.warn(s"$msg") log.warn(s"${player.Name}'s ${vehicle.Definition.Name} can not spawn in ${zone.id} because $reason")
case msg @ Zone.Vehicle.HasDespawned(zone, vehicle) => ; case msg @ Zone.Vehicle.HasDespawned(zone, vehicle) => ;
case msg @ Zone.Vehicle.CanNotDespawn(zone, vehicle, reason) => case msg @ Zone.Vehicle.CanNotDespawn(zone, vehicle, reason) =>
log.warn(s"$msg") log.warn(s"${player.Name}'s ${vehicle.Definition.Name} can not deconstruct in ${zone.id} because $reason")
case Zone.Deployable.DeployableIsBuilt(obj, tool) => case Zone.Deployable.DeployableIsBuilt(obj, tool) =>
val index = player.Find(tool) match { val index = player.Find(tool) match {
@ -1019,7 +1020,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case GlobalDefinitions.router_telepad => ; case GlobalDefinitions.router_telepad => ;
case _ => case _ =>
log.warn( log.warn(
s"Zone.Deployable.DeployableIsBuilt: not sure what kind of construction item to animate - ${tool.Definition}" s"Zone.Deployable.DeployableIsBuilt: not sure what kind of construction item to animate - ${tool.Definition.Name}"
) )
} }
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
@ -1116,9 +1117,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
sendResponse(GenericObjectActionMessage(guid, 21)) //reset build cooldown sendResponse(GenericObjectActionMessage(guid, 21)) //reset build cooldown
sendResponse(ObjectDeployedMessage.Failure(definition.Name)) sendResponse(ObjectDeployedMessage.Failure(definition.Name))
log.warn( log.warn(
s"FinalizeDeployable: deployable ${definition.asInstanceOf[BaseDeployableDefinition].Item}@$guid not handled by specific case" s"FinalizeDeployable: deployable ${definition.Item}@$guid not handled by specific case"
) )
log.warn(s"FinalizeDeployable: deployable will be cleaned up, but may not get unregistered properly") log.warn(s"FinalizeDeployable: deployable ${definition.Item}@$guid will be cleaned up, but may not get unregistered properly")
TryDropFDU(tool, index, obj.Position) TryDropFDU(tool, index, obj.Position)
obj.Position = Vector3.Zero obj.Position = Vector3.Zero
continent.Deployables ! Zone.Deployable.Dismiss(obj) continent.Deployables ! Zone.Deployable.Dismiss(obj)
@ -1194,7 +1195,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Zone.Nowhere => case Zone.Nowhere =>
RequestSanctuaryZoneSpawn(player, currentZone = 0) RequestSanctuaryZoneSpawn(player, currentZone = 0)
case zone => case zone =>
log.info(s"Zone ${zone.id} will now load for ${player.Name}") log.trace(s"zone ${zone.id} will now load for ${player.Name}")
loadConfZone = true loadConfZone = true
val oldZone = continent val oldZone = continent
session = session.copy(zone = zone) session = session.copy(zone = zone)
@ -1218,7 +1219,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case ICS.ZoneResponse(zone) => case ICS.ZoneResponse(zone) =>
log.info(s"Zone ${zone.get.id} will now load for ${player.Name}") log.trace(s"Zone ${zone.get.id} will now load for ${player.Name}")
loadConfZone = true loadConfZone = true
val oldZone = session.zone val oldZone = session.zone
session = session.copy(zone = zone.get) session = session.copy(zone = zone.get)
@ -1239,7 +1240,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case NewPlayerLoaded(tplayer) => case NewPlayerLoaded(tplayer) =>
//new zone //new zone
log.info(s"Player ${tplayer.Name} has been loaded") log.info(s"Player ${tplayer.Name} has spawned into ${tplayer.Zone.id}")
tplayer.avatar = avatar tplayer.avatar = avatar
session = session.copy(player = tplayer) session = session.copy(player = tplayer)
avatarActor ! AvatarActor.CreateImplants() avatarActor ! AvatarActor.CreateImplants()
@ -1296,7 +1297,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
/** /**
* The user is either already in the current zone and merely transporting himself from one location to another, * The user is either already in the current zone and merely transporting from one location to another,
* also called "dying", or occasionally "deconstructing," * also called "dying", or occasionally "deconstructing,"
* or is completely switching in between zones. * or is completely switching in between zones.
* These correspond to the message `NewPlayerLoaded` for the case of "dying" or the latter zone switching case, * These correspond to the message `NewPlayerLoaded` for the case of "dying" or the latter zone switching case,
@ -1318,21 +1319,21 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
val waitingOnUpstream = upstreamMessageCount == 0 val waitingOnUpstream = upstreamMessageCount == 0
if (attempt >= max_attempts && waitingOnUpstream) { if (attempt >= max_attempts && waitingOnUpstream) {
log.warn( log.warn(
s"SetCurrentAvatar-max attempt failure: " + s"SetCurrentAvatar/${player.Name}: max attempt failure: " +
s"zone=${if (zoneLoaded.contains(true)) "loaded" s"zone=${if (zoneLoaded.contains(true)) "loaded"
else if (zoneLoaded.contains(false)) "failed" else if (zoneLoaded.contains(false)) "failed"
else "unloaded"}," + else "unloaded"}, " +
s"guid=${tplayer.HasGUID}, control=${(tplayer.Actor != Default.Actor)}, avatar=$waitingOnUpstream" s"guid=${tplayer.HasGUID}, control=${tplayer.Actor != Default.Actor}, no upstream messaging"
) )
zoneLoaded match { zoneLoaded match {
case None | Some(false) => case None | Some(false) =>
log.warn( log.warn(
"SetCurrentAvatar-max attempt failure: failed to load intended destination zone; routing to faction sanctuary" s"SetCurrentAvatar/${player.Name}: max attempt failure: failed to load intended destination zone; routing to faction sanctuary"
) )
RequestSanctuaryZoneSpawn(tplayer, continent.Number) RequestSanctuaryZoneSpawn(tplayer, continent.Number)
case _ => case _ =>
log.warn( log.warn(
"SetCurrentAvatar-max attempt failure: the zone loaded but elements remain unready; restarting the process ..." s"SetCurrentAvatar/${player.Name}: max attempt failure: the zone loaded but elements remain unready; restarting the process ..."
) )
val pos = shiftPosition.getOrElse(player.Position) val pos = shiftPosition.getOrElse(player.Position)
val orient = shiftOrientation.getOrElse(player.Orientation) val orient = shiftOrientation.getOrElse(player.Orientation)
@ -1382,7 +1383,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case Vitality.DamageResolution(target: PlanetSideGameObject, _) => case Vitality.DamageResolution(target: PlanetSideGameObject, _) =>
log.warn(s"Vital target ${target.Definition.Name} damage resolution not supported using this method") log.warn(s"DamageResolution: vital target ${target.Definition.Name} damage resolution not supported")
case ResponseToSelf(pkt) => case ResponseToSelf(pkt) =>
sendResponse(pkt) sendResponse(pkt)
@ -1499,12 +1500,12 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case _ => case _ =>
//fall back to sanctuary/prior? //fall back to sanctuary/prior?
log.error(s"LoginInfo: player $playerName could not be found in game world") log.info(s"LoginInfo: player $playerName could not be found in game world")
self.forward(PlayerToken.LoginInfo(playerName, Zone.Nowhere, pos)) self.forward(PlayerToken.LoginInfo(playerName, Zone.Nowhere, pos))
} }
case PlayerToken.CanNotLogin(playerName, reason) => case PlayerToken.CanNotLogin(playerName, reason) =>
log.warn(s"LoginInfo: player $playerName is denied login for reason: $reason") log.warn(s"LoginInfo: $playerName is denied login for reason - $reason")
reason match { reason match {
case PlayerToken.DeniedLoginReason.Kicked => KickedByAdministration() case PlayerToken.DeniedLoginReason.Kicked => KickedByAdministration()
case _ => sendResponse(DisconnectMessage("You will be logged out.")) case _ => sendResponse(DisconnectMessage("You will be logged out."))
@ -1693,7 +1694,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
else PlanetSideGUID(0) else PlanetSideGUID(0)
reply match { reply match {
case AvatarResponse.TeardownConnection() => case AvatarResponse.TeardownConnection() =>
log.info("ending session by event system request (relog)") log.trace(s"ending ${player.Name}'s old session by event system request (relog)")
context.stop(self) context.stop(self)
case AvatarResponse.SendResponse(msg) => case AvatarResponse.SendResponse(msg) =>
@ -1984,12 +1985,11 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
// Check that the magazine is still empty before sending WeaponDryFireMessage // Check that the magazine is still empty before sending WeaponDryFireMessage
// As it could have been reloaded since the packet was dispatched, which would make other clients not see it firing // As it could have been reloaded since the packet was dispatched, which would make other clients not see it firing
continent.GUID(weapon_guid) match { continent.GUID(weapon_guid) match {
case Some(tool: Tool) => { case Some(tool: Tool) =>
if (tool.Magazine == 0) { if (tool.Magazine == 0) {
sendResponse(WeaponDryFireMessage(weapon_guid)) sendResponse(WeaponDryFireMessage(weapon_guid))
} }
} case _ => ;
case _ => log.warn(s"Tried to send WeaponDryFire but GUID ${weapon_guid} does not seem to be a Tool")
} }
} }
@ -2385,7 +2385,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Mountable.CanMount(obj: Vehicle, seat_number, _) => case Mountable.CanMount(obj: Vehicle, seat_number, _) =>
CancelZoningProcessWithDescriptiveReason("cancel_mount") CancelZoningProcessWithDescriptiveReason("cancel_mount")
val obj_guid: PlanetSideGUID = obj.GUID val obj_guid: PlanetSideGUID = obj.GUID
log.info(s"MountVehicleMsg: ${player.Name} mounts ${obj.Definition.Name} in seat $seat_number") log.info(s"${player.Name} mounts ${obj.Definition.Name} in seat $seat_number")
CancelAllProximityUnits() CancelAllProximityUnits()
sendResponse(PlanetsideAttributeMessage(obj_guid, 0, obj.Health)) sendResponse(PlanetsideAttributeMessage(obj_guid, 0, obj.Health))
sendResponse(PlanetsideAttributeMessage(obj_guid, 68, obj.Shields)) //shield health sendResponse(PlanetsideAttributeMessage(obj_guid, 68, obj.Shields)) //shield health
@ -2436,7 +2436,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
keepAliveFunc = KeepAlivePersistence keepAliveFunc = KeepAlivePersistence
case Mountable.CanMount(obj: Mountable, _, _) => case Mountable.CanMount(obj: Mountable, _, _) =>
log.warn(s"MountVehicleMsg: $obj is some generic mountable object and nothing will happen") log.warn(s"MountVehicleMsg: $obj is some mountable object and nothing will happen for ${player.Name}")
case Mountable.CanDismount(obj: ImplantTerminalMech, seat_num, _) => case Mountable.CanDismount(obj: ImplantTerminalMech, seat_num, _) =>
DismountAction(tplayer, obj, seat_num) DismountAction(tplayer, obj, seat_num)
@ -2505,7 +2505,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
DismountAction(tplayer, obj, seat_num) DismountAction(tplayer, obj, seat_num)
case Mountable.CanDismount(obj: Mountable, _, _) => case Mountable.CanDismount(obj: Mountable, _, _) =>
log.warn(s"DismountVehicleMsg: $obj is some generic mountable object and nothing will happen") log.warn(s"DismountVehicleMsg: $obj is some dismountable object but nothing will happen for ${player.Name}")
case Mountable.CanNotMount(obj: Vehicle, mount_point) => case Mountable.CanNotMount(obj: Vehicle, mount_point) =>
log.warn(s"MountVehicleMsg: ${tplayer.Name} attempted to mount $obj's mount $mount_point, but was not allowed") log.warn(s"MountVehicleMsg: ${tplayer.Name} attempted to mount $obj's mount $mount_point, but was not allowed")
@ -2597,7 +2597,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
slot.Equipment = entry.obj slot.Equipment = entry.obj
case None => case None =>
log.warn( log.warn(
s"applying default loadout to $vehicle on spawn, but can not find a mounted weapon @ ${entry.start}" s"BuyVehicle: ${player.Name} tries to apply default loadout to $vehicle on spawn, but can not find a mounted weapon for ${entry.start}"
) )
} }
}) })
@ -2620,11 +2620,11 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Terminal.NoDeal() => case Terminal.NoDeal() =>
val order: String = if (msg == null) { val order: String = if (msg == null) {
s"order $msg"
} else {
"missing order" "missing order"
} else {
s"${msg.transaction_type} order"
} }
log.warn(s"${tplayer.Name} made a request but the terminal rejected the $order") log.warn(s"NoDeal: ${tplayer.Name} made a request but the terminal rejected the $order")
sendResponse(ItemTransactionResultMessage(msg.terminal_guid, msg.transaction_type, false)) sendResponse(ItemTransactionResultMessage(msg.terminal_guid, msg.transaction_type, false))
lastTerminalOrderFulfillment = true lastTerminalOrderFulfillment = true
@ -3254,8 +3254,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
def handleGamePkt(pkt: PlanetSideGamePacket) = def handleGamePkt(pkt: PlanetSideGamePacket) =
pkt match { pkt match {
case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) => case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) =>
val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate" log.trace(s"ConnectToWorldRequestMessage: client with versioning $majorVersion.$minorVersion.$revision, $buildDate has sent token $token to the server")
log.info(s"New world login to $server with Token:$token. $clientVersion")
sendResponse(ChatMsg(ChatMessageType.CMT_CULLWATERMARK, false, "", "", None)) sendResponse(ChatMsg(ChatMessageType.CMT_CULLWATERMARK, false, "", "", None))
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.ExecutionContext.Implicits.global
clientKeepAlive.cancel() clientKeepAlive.cancel()
@ -3272,12 +3271,12 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
cargo.Actor ! CargoBehavior.CheckCargoMounting(carrier_guid, mountPoint, 0) cargo.Actor ! CargoBehavior.CheckCargoMounting(carrier_guid, mountPoint, 0)
case _ => case _ =>
log.warn( log.warn(
s"MountVehicleCargoMsg: target carrier vehicle (${carrier.Definition.Name}) does not have a cargo hold" s"MountVehicleCargoMsg: ${player.Name} trying to load cargo into a ${carrier.Definition.Name} which oes not have a cargo hold"
) )
} }
case (None, _) | (Some(_), None) => case (None, _) | (Some(_), None) =>
log.warn( log.warn(
s"MountVehicleCargoMsg: one or more of the target vehicles do not exist - $carrier_guid or $cargo_guid" s"MountVehicleCargoMsg: ${player.Name} lost a vehicle while working with cargo - either $carrier_guid or $cargo_guid"
) )
case _ => ; case _ => ;
} }
@ -3464,11 +3463,10 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
_.GUID != vehicle.GUID _.GUID != vehicle.GUID
} }
case Some(_) => case Some(_) =>
//vehicle, but we're not seated in it log.warn(s"BeginZoningMessage: ${player.Name} thought ${player.Sex.pronounSubject} was sitting in a vehicle, but it just evaporated around ${player.Sex.pronounObject}")
player.VehicleSeated = None player.VehicleSeated = None
(b, List.empty[Vehicle]) (b, List.empty[Vehicle])
case None => case None =>
//throw error since VehicleSeated didn't point to a vehicle?
player.VehicleSeated = None player.VehicleSeated = None
(b, List.empty[Vehicle]) (b, List.empty[Vehicle])
} }
@ -3791,16 +3789,15 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) )
} else { } else {
log.warn( log.warn(
s"ChildObjectState: ${player.Name} is using a different controllable agent than #${object_guid.guid}" s"ChildObjectState: ${player.Name} is using a different controllable agent than entity ${object_guid.guid}"
) )
} }
case (Some(obj), None) => case (Some(obj), None) =>
log.warn( log.warn(
s"ChildObjectState: ${player.Name} can not find any controllable agent, let alone #${object_guid.guid}" s"ChildObjectState: ${player.Name} can not find any controllable agent, let alone entity ${object_guid.guid}"
) )
case (None, _) => ; case (None, _) => ;
//TODO status condition of "playing getting out of vehicle to allow for late packets without warning //TODO status condition of "playing getting out of vehicle to allow for late packets without warning
//log.warn(s"ChildObjectState: player ${player.Name} not related to anything with a controllable agent")
} }
if (player.death_by == -1) { if (player.death_by == -1) {
KickedByAdministration() KickedByAdministration()
@ -3873,7 +3870,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
//TODO placing a "not driving" warning here may trigger as we are disembarking the vehicle //TODO placing a "not driving" warning here may trigger as we are disembarking the vehicle
case (_, Some(index)) => case (_, Some(index)) =>
log.error( log.error(
s"VehicleState: player should not be dispatching this kind of packet from vehicle#$vehicle_guid when not the driver ($index)" s"VehicleState: ${player.Name} should not be dispatching this kind of packet from vehicle ${vehicle_guid.guid} when not the driver (actually, seat $index)"
) )
case _ => ; case _ => ;
} }
@ -3882,7 +3879,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ VehicleSubStateMessage(vehicle_guid, player_guid, vehicle_pos, vehicle_ang, vel, unk1, unk2) => case msg @ VehicleSubStateMessage(vehicle_guid, player_guid, vehicle_pos, vehicle_ang, vel, unk1, unk2) =>
//log.info(s"VehicleSubState: $vehicle_guid, ${player.Name}_guid, $vehicle_pos, $vehicle_ang, $vel, $unk1, $unk2") log.debug(s"VehicleSubState: $vehicle_guid, ${player.Name}_guid, $vehicle_pos, $vehicle_ang, $vel, $unk1, $unk2")
case msg @ ProjectileStateMessage(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid) => case msg @ ProjectileStateMessage(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid) =>
val index = projectile_guid.guid - Projectile.baseUID val index = projectile_guid.guid - Projectile.baseUID
@ -3912,13 +3909,13 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ ReleaseAvatarRequestMessage() => case msg @ ReleaseAvatarRequestMessage() =>
log.info(s"ReleaseAvatarRequest: ${player.Name} on ${continent.id} has released") log.info(s"${player.Name} on ${continent.id} has released")
reviveTimer.cancel() reviveTimer.cancel()
GoToDeploymentMap() GoToDeploymentMap()
HandleReleaseAvatar(player, continent) HandleReleaseAvatar(player, continent)
case msg @ SpawnRequestMessage(u1, spawnGroup, u3, u4, zoneNumber) => case msg @ SpawnRequestMessage(u1, spawnGroup, u3, u4, zoneNumber) =>
log.info(s"SpawnRequestMessage: ${player.Name} on ${continent.id} wants to respawn in $zoneNumber") log.info(s"${player.Name} on ${continent.id} wants to respawn in zone #$zoneNumber")
if (deadState != DeadState.RespawnTime) { if (deadState != DeadState.RespawnTime) {
deadState = DeadState.RespawnTime deadState = DeadState.RespawnTime
cluster ! ICS.GetNearbySpawnPoint( cluster ! ICS.GetNearbySpawnPoint(
@ -3933,20 +3930,22 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
context.self context.self
) )
} else { } else {
log.warn("SpawnRequestMessage: request consumed; already respawning ...") log.warn(s"SpawnRequestMessage: request consumed because ${player.Name} is already respawning ...")
} }
case msg @ SetChatFilterMessage(send_channel, origin, whitelist) => case _ : SetChatFilterMessage => //msg @ SetChatFilterMessage(send_channel, origin, whitelist) => ;
//log.info("SetChatFilters: " + msg)
case msg: ChatMsg => case msg : ChatMsg =>
chatActor ! ChatActor.Message(msg) chatActor ! ChatActor.Message(msg)
case msg @ VoiceHostRequest(unk, PlanetSideGUID(player_guid), data) => case _ : VoiceHostRequest =>
log.trace("Player " + player_guid + " requested in-game voice chat.") log.trace(s"${player.Name} requested in-game voice chat.")
sendResponse(VoiceHostKill()) sendResponse(VoiceHostKill())
sendResponse(
ChatMsg(ChatMessageType.CMT_OPEN, false, "", "Try our Discord at https://discord.gg/0nRe5TNbTYoUruA4", None)
)
case msg @ VoiceHostInfo(player_guid, data) => case _ : VoiceHostInfo =>
sendResponse(VoiceHostKill()) sendResponse(VoiceHostKill())
case msg @ ChangeAmmoMessage(item_guid, unk1) => case msg @ ChangeAmmoMessage(item_guid, unk1) =>
@ -3956,9 +3955,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case (Some(obj), Some(tool: Tool)) => case (Some(obj), Some(tool: Tool)) =>
PerformToolAmmoChange(tool, obj) PerformToolAmmoChange(tool, obj)
case (_, Some(obj)) => case (_, Some(obj)) =>
log.error(s"ChangeAmmo: the ${obj.Definition.Name} in ${player.Name}'s hands does not contain ammunition") log.warn(s"ChangeAmmo: the ${obj.Definition.Name} in ${player.Name}'s hands does not contain ammunition")
case (_, None) => case (_, None) =>
log.error(s"ChangeAmmo: can not find $item_guid") log.warn(s"ChangeAmmo: can not find $item_guid")
} }
case msg @ ChangeFireModeMessage(item_guid, fire_mode) => case msg @ ChangeFireModeMessage(item_guid, fire_mode) =>
@ -3977,7 +3976,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
obj.FireModeIndex = originalModeIndex obj.FireModeIndex = originalModeIndex
sendResponse(ChangeFireModeMessage(tool_guid, originalModeIndex)) //reinforcement sendResponse(ChangeFireModeMessage(tool_guid, originalModeIndex)) //reinforcement
} else { } else {
log.info(s"ChangeFireMode: ${player.Name} is changing his ${obj.Definition.Name} to fire mode $modeIndex") log.info(s"${player.Name} is changing his ${obj.Definition.Name} to fire mode #$modeIndex")
sendResponse(ChangeFireModeMessage(tool_guid, modeIndex)) sendResponse(ChangeFireModeMessage(tool_guid, modeIndex))
continent.AvatarEvents ! AvatarServiceMessage( continent.AvatarEvents ! AvatarServiceMessage(
continent.id, continent.id,
@ -3985,9 +3984,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) )
} }
case Some(_) => case Some(_) =>
log.error(s"ChangeFireMode: the object that was found for $item_guid does not possess fire modes") log.warn(s"ChangeFireMode: the object that was found for $item_guid does not possess fire modes")
case None => case None =>
log.error(s"ChangeFireMode: can not find $item_guid") log.warn(s"ChangeFireMode: can not find $item_guid")
} }
case msg @ ChangeFireStateMessage_Start(item_guid) => case msg @ ChangeFireStateMessage_Start(item_guid) =>
@ -4018,7 +4017,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
} else { } else {
log.warn( log.warn(
s"ChangeFireState_Start: ${player.Name}'s ${tool.Definition.Name} magazine was empty before trying to shoot!" s"ChangeFireState_Start: ${player.Name}'s ${tool.Definition.Name} magazine was empty before trying to shoot"
) )
EmptyMagazine(item_guid, tool) EmptyMagazine(item_guid, tool)
} }
@ -4031,7 +4030,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
AvatarAction.ChangeFireState_Start(player.GUID, item_guid) AvatarAction.ChangeFireState_Start(player.GUID, item_guid)
) )
case None => case None =>
log.error(s"ChangeFireState_Start: can not find $item_guid") log.warn(s"ChangeFireState_Start: can not find $item_guid")
} }
} }
@ -4072,7 +4071,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) )
Some(tool) Some(tool)
case _ => case _ =>
log.warn(s"ChangeFireState_Stop: received an unexpected message about $item_guid") log.warn(s"ChangeFireState_Stop: ${player.Name} never started firing item ${item_guid.guid} in the first place?")
None None
} }
} }
@ -4126,7 +4125,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
log.warn(s"DropItem: ${player.Name} wanted to drop a $obj, but that isn't possible") log.warn(s"DropItem: ${player.Name} wanted to drop a $obj, but that isn't possible")
case None => case None =>
sendResponse(ObjectDeleteMessage(item_guid, 0)) //this is fine; item doesn't exist to the server anyway sendResponse(ObjectDeleteMessage(item_guid, 0)) //this is fine; item doesn't exist to the server anyway
log.warn(s"DropItem: ${player.Name} wanted to drop an item ($item_guid), but it was nowhere to be found") log.warn(s"DropItem: ${player.Name} wanted to drop an item ${item_guid.guid}, but it was nowhere to be found")
} }
case msg @ PickupItemMessage(item_guid, player_guid, unk1, unk2) => case msg @ PickupItemMessage(item_guid, player_guid, unk1, unk2) =>
@ -4141,29 +4140,25 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case _ => case _ =>
log.warn( log.warn(
s"PickupItem: ${player.Name} requested an item that doesn't seem to exist" s"PickupItem: ${player.Name} requested an item ${item_guid.guid} that doesn't seem to exist"
) )
sendResponse(ObjectDeleteMessage(item_guid, 0))
} }
case msg @ ReloadMessage(item_guid, ammo_clip, unk1) => case msg @ ReloadMessage(item_guid, ammo_clip, unk1) =>
FindContainedWeapon match { FindContainedWeapon match {
case (Some(obj), Some(tool: Tool)) => case (Some(obj: PlanetSideServerObject with Container), Some(tool: Tool)) =>
val currentMagazine: Int = tool.Magazine val currentMagazine: Int = tool.Magazine
val magazineSize: Int = tool.MaxMagazine val magazineSize: Int = tool.MaxMagazine
val reloadValue: Int = magazineSize - currentMagazine val reloadValue: Int = magazineSize - currentMagazine
if (magazineSize > 0 && reloadValue > 0) { if (magazineSize > 0 && reloadValue > 0) {
FindEquipmentStock(obj, FindAmmoBoxThatUses(tool.AmmoType), reloadValue, CountAmmunition).reverse match { FindEquipmentStock(obj, FindAmmoBoxThatUses(tool.AmmoType), reloadValue, CountAmmunition).reverse match {
case Nil => case Nil => ;
log.warn(s"ReloadMessage: no ammunition could be found for $item_guid")
case x :: xs => case x :: xs =>
val (deleteFunc, modifyFunc): (Equipment => Future[Any], (AmmoBox, Int) => Unit) = obj match { val (deleteFunc, modifyFunc): (Equipment => Future[Any], (AmmoBox, Int) => Unit) = obj match {
case veh: Vehicle => case veh: Vehicle =>
(RemoveOldEquipmentFromInventory(veh), ModifyAmmunitionInVehicle(veh)) (RemoveOldEquipmentFromInventory(veh), ModifyAmmunitionInVehicle(veh))
case o: PlanetSideServerObject with Container =>
(RemoveOldEquipmentFromInventory(o), ModifyAmmunition(o))
case _ => case _ =>
throw new Exception("ReloadMessage: should be a server object, not a regular game object") (RemoveOldEquipmentFromInventory(obj), ModifyAmmunition(obj))
} }
xs.foreach { item => deleteFunc(item.obj) } xs.foreach { item => deleteFunc(item.obj) }
val box = x.obj.asInstanceOf[AmmoBox] val box = x.obj.asInstanceOf[AmmoBox]
@ -4180,7 +4175,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
modifyFunc(box, reloadValue - tailReloadValue) modifyFunc(box, reloadValue - tailReloadValue)
reloadValue reloadValue
}) + currentMagazine }) + currentMagazine
log.info(s"ReloadMessage: ${player.Name} successfully reloaded $actualReloadValue ${tool.AmmoType} into $tool") log.info(s"${player.Name} successfully reloaded $actualReloadValue ${tool.AmmoType} into $tool")
tool.Magazine = actualReloadValue tool.Magazine = actualReloadValue
sendResponse(ReloadMessage(item_guid, actualReloadValue, unk1)) sendResponse(ReloadMessage(item_guid, actualReloadValue, unk1))
continent.AvatarEvents ! AvatarServiceMessage( continent.AvatarEvents ! AvatarServiceMessage(
@ -4189,12 +4184,12 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) )
} }
} else { } else {
log.warn(s"ReloadMessage: the $tool in ${player.Name}'s hand can not reload (full=$magazineSize, want=$reloadValue)") log.warn(s"ReloadMessage: the ${tool.Definition.Name} under ${player.Name}'s control can not reload (full=$magazineSize, want=$reloadValue)")
} }
case (_, Some(_)) => case (_, Some(_)) =>
log.error(s"ReloadMessage: the object that was found for $item_guid was not a Tool") log.warn(s"ReloadMessage: the object that was found for $item_guid was not a Tool")
case (_, None) => case (_, None) =>
log.error(s"ReloadMessage: can not find $item_guid") log.warn(s"ReloadMessage: can not find $item_guid")
} }
case msg @ ObjectHeldMessage(avatar_guid, held_holsters, unk1) => case msg @ ObjectHeldMessage(avatar_guid, held_holsters, unk1) =>
@ -4214,7 +4209,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
if (held_holsters >= 0 && held_holsters < 5) { if (held_holsters >= 0 && held_holsters < 5) {
player.Holsters()(held_holsters).Equipment match { player.Holsters()(held_holsters).Equipment match {
case Some(unholsteredItem: Equipment) => case Some(unholsteredItem: Equipment) =>
log.info(s"ObjectHeld: ${player.Name} has drawn a $unholsteredItem from its holster") log.info(s"${player.Name} has drawn a $unholsteredItem from its holster")
if (unholsteredItem.Definition == GlobalDefinitions.remote_electronics_kit) { if (unholsteredItem.Definition == GlobalDefinitions.remote_electronics_kit) {
// Player has unholstered a REK - we need to set an atttribute on the REK itself to change the beam/icon colour to the correct one for the player's hack level // Player has unholstered a REK - we need to set an atttribute on the REK itself to change the beam/icon colour to the correct one for the player's hack level
continent.AvatarEvents ! AvatarServiceMessage( continent.AvatarEvents ! AvatarServiceMessage(
@ -4434,11 +4429,11 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) )
} }
case (Some(obj), _) => case (Some(obj), _) =>
log.warn(s"LootItem: item $obj is (probably) not lootable to ${player.Name}") log.error(s"LootItem: item $obj is (probably) not lootable to ${player.Name}")
case (None, _) => case (None, _) =>
log.warn(s"LootItem: ${player.Name} can not find $item_guid") log.error(s"LootItem: ${player.Name} can not find $item_guid")
case (_, None) => case (_, None) =>
log.warn(s"LootItem: ${player.Name} can not find where to put $item_guid") log.error(s"LootItem: ${player.Name} can not find where to put $item_guid")
} }
case msg @ AvatarImplantMessage(player_guid, action, slot, status) => case msg @ AvatarImplantMessage(player_guid, action, slot, status) =>
@ -4452,7 +4447,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
avatarActor ! AvatarActor.DeactivateImplant(implant.definition.implantType) avatarActor ! AvatarActor.DeactivateImplant(implant.definition.implantType)
} }
case Some(implant) if !implant.initialized => () case Some(implant) if !implant.initialized => ()
case _ => log.error(s"AvatarImplantMessage: ${player.Name} has an unknown implant in $slot") case _ => log.error(s"AvatarImplantMessage: ${player.Name} has an unknown implant in $slot")
} }
} }
@ -4494,7 +4489,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
if (obj.isBackpack) { if (obj.isBackpack) {
if (equipment.isEmpty) { if (equipment.isEmpty) {
log.info(s"UseItem: ${player.Name} is looting the corpse of ${obj.Name}") log.info(s"${player.Name} is looting the corpse of ${obj.Name}")
sendResponse( sendResponse(
UseItemMessage( UseItemMessage(
avatar_guid, avatar_guid,
@ -4638,7 +4633,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Some(item) => case Some(item) =>
log.warn(s"UseItem: ${player.Name} looking for Kit to use, but found $item instead") log.warn(s"UseItem: ${player.Name} looking for Kit to use, but found $item instead")
case None => case None =>
log.warn(s"UseItem: anticipated a Kit $item_used_guid for ${player.Name}, but can't find it") log.error(s"UseItem: anticipated a Kit $item_used_guid for ${player.Name}, but can't find it")
} }
} else if (itemType == ObjectClass.avatar && unk3) { } else if (itemType == ObjectClass.avatar && unk3) {
equipment match { equipment match {
@ -4656,8 +4651,8 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Some(item) => case Some(item) =>
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
locker.Actor ! CommonMessages.Use(player, Some(item)) locker.Actor ! CommonMessages.Use(player, Some(item))
case None if locker.Faction == player.Faction || !locker.HackedBy.isEmpty => case None if locker.Faction == player.Faction || locker.HackedBy.nonEmpty =>
log.info(s"UseItem: ${player.Name} is accessing a locker") log.info(s"${player.Name} is accessing a locker")
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
val playerLocker = player.avatar.locker val playerLocker = player.avatar.locker
sendResponse( sendResponse(
@ -4936,7 +4931,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case Some(obj) => ; case Some(obj) => ;
log.warn(s"ProximityTerminalUse: $obj does not have proximity effects for ${player.Name}") log.warn(s"ProximityTerminalUse: $obj does not have proximity effects for ${player.Name}")
case None => case None =>
log.warn(s"ProximityTerminalUse: ${player.Name} can not find an oject with guid $object_guid") log.error(s"ProximityTerminalUse: ${player.Name} can not find an oject with guid $object_guid")
} }
case msg @ UnuseItemMessage(player_guid, object_guid) => case msg @ UnuseItemMessage(player_guid, object_guid) =>
@ -4967,7 +4962,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case turret => case turret =>
turret turret
} }
log.info(s"DeployObject: ${player.Name} is constructing a $ammoType deployable") log.info(s"${player.Name} is constructing a $ammoType deployable")
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
val dObj: PlanetSideGameObject with Deployable = Deployables.Make(ammoType)() val dObj: PlanetSideGameObject with Deployable = Deployables.Make(ammoType)()
dObj.Position = pos dObj.Position = pos
@ -4983,9 +4978,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
continent.tasks ! CallBackForTask(tasking, continent.Deployables, Zone.Deployable.Build(dObj, obj)) continent.tasks ! CallBackForTask(tasking, continent.Deployables, Zone.Deployable.Build(dObj, obj))
case Some(obj) => case Some(obj) =>
log.warn(s"DeployObject: What is $obj, ${player.Name}? It's not a construction tool!") log.warn(s"DeployObject: what is $obj, ${player.Name}? It's not a construction tool!")
case None => case None =>
log.warn(s"DeployObject: nothing, ${player.Name}? It's not a construction tool!") log.error(s"DeployObject: nothing, ${player.Name}? It's not a construction tool!")
} }
case msg @ GenericObjectActionMessage(object_guid, code) => case msg @ GenericObjectActionMessage(object_guid, code) =>
@ -4999,13 +4994,12 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ GenericObjectStateMsg(object_guid, unk1) => case msg @ GenericObjectStateMsg(object_guid, unk1) =>
log.info("GenericObjectState: " + msg) log.debug("GenericObjectState: " + msg)
case msg @ GenericActionMessage(action) => case msg @ GenericActionMessage(action) =>
log.info(s"GenericAction: $msg")
if (player == null) { if (player == null) {
if (action == 29) { if (action == 29) {
log.info("AFK state reported during login") log.debug("GenericObjectState: AFK state reported during login")
} }
} else { } else {
val (toolOpt, definition) = player.Slot(0).Equipment match { val (toolOpt, definition) = player.Slot(0).Equipment match {
@ -5022,7 +5016,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
player.AwayFromKeyboard = false player.AwayFromKeyboard = false
} }
if (action == 15) { //max deployment if (action == 15) { //max deployment
log.info(s"GenericObject: ${player.Name} is anchored") log.info(s"${player.Name} has anchored ${player.Sex.pronounObject}self to the ground")
player.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored player.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
continent.AvatarEvents ! AvatarServiceMessage( continent.AvatarEvents ! AvatarServiceMessage(
continent.id, continent.id,
@ -5040,10 +5034,10 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
tool.ToFireMode = convertFireModeIndex tool.ToFireMode = convertFireModeIndex
sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex))
case _ => case _ =>
log.warn(s"GenericObject: ${player.Name} is a MAX with an unexpected weapon - ${definition.Name}") log.warn(s"GenericObject: ${player.Name} is a MAX with an unexpected attachment - ${definition.Name}")
} }
} else if (action == 16) { //max deployment } else if (action == 16) { //max deployment
log.info(s"GenericObject: ${player.Name} has released the anchors") log.info(s"${player.Name} has released the anchors")
player.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal player.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal
continent.AvatarEvents ! AvatarServiceMessage( continent.AvatarEvents ! AvatarServiceMessage(
continent.id, continent.id,
@ -5061,23 +5055,23 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
tool.ToFireMode = convertFireModeIndex tool.ToFireMode = convertFireModeIndex
sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex))
case _ => case _ =>
log.warn(s"GenericObject: $player is MAX with an unexpected weapon - ${definition.Name}") log.warn(s"GenericObject: $player is MAX with an unexpected attachment - ${definition.Name}")
} }
} else if (action == 20) { } else if (action == 20) {
if (player.ExoSuit == ExoSuitType.MAX) { if (player.ExoSuit == ExoSuitType.MAX) {
ToggleMaxSpecialState(enable = true) ToggleMaxSpecialState(enable = true)
} else { } else {
log.warn(s"${player.Name} got GenericActionMessage 20 but can't handle it") log.warn(s"GenericActionMessage: ${player.Name} can't handle action code 20")
} }
} else if (action == 21) { } else if (action == 21) {
if (player.ExoSuit == ExoSuitType.MAX) { if (player.ExoSuit == ExoSuitType.MAX) {
player.Faction match { player.Faction match {
case PlanetSideEmpire.NC => case PlanetSideEmpire.NC =>
ToggleMaxSpecialState(enable = false) ToggleMaxSpecialState(enable = false)
case _ => log.warn(s"${player.Name} tried to cancel an uncancellable MAX special ability") case _ => log.warn(s"GenericActionMessage: ${player.Name} tried to cancel an uncancellable MAX special ability")
} }
} else { } else {
log.warn(s"${player.Name} got GenericActionMessage 21 but can't handle it") log.warn(s"GenericActionMessage: ${player.Name} can't handle action code 21")
} }
} else if (action == 36) { //Looking For Squad ON } else if (action == 36) { //Looking For Squad ON
if (squadUI.nonEmpty) { if (squadUI.nonEmpty) {
@ -5103,13 +5097,15 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} else if (avatar.lookingForSquad) { } else if (avatar.lookingForSquad) {
avatarActor ! AvatarActor.SetLookingForSquad(false) avatarActor ! AvatarActor.SetLookingForSquad(false)
} }
} else {
log.debug(s"$msg")
} }
} }
case msg @ ItemTransactionMessage(terminal_guid, transaction_type, _, _, _, _) => case msg @ ItemTransactionMessage(terminal_guid, transaction_type, _, _, _, _) =>
continent.GUID(terminal_guid) match { continent.GUID(terminal_guid) match {
case Some(term: Terminal) => case Some(term: Terminal) =>
log.info(s"ItemTransaction: ${player.Name} is using a terminal") log.info(s"${player.Name} is using a terminal")
if (lastTerminalOrderFulfillment) { if (lastTerminalOrderFulfillment) {
lastTerminalOrderFulfillment = false lastTerminalOrderFulfillment = false
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
@ -5123,7 +5119,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case msg @ FavoritesRequest(player_guid, loadoutType, action, line, label) => case msg @ FavoritesRequest(player_guid, loadoutType, action, line, label) =>
CancelZoningProcessWithDescriptiveReason("cancel_use") CancelZoningProcessWithDescriptiveReason("cancel_use")
log.info(s"FavoritesRequest: ${player.Name} wishes to load a saved favorite entry") log.info(s"${player.Name} wishes to load a saved favorite loadout")
action match { action match {
case FavoritesAction.Save => avatarActor ! AvatarActor.SaveLoadout(player, loadoutType, label, line) case FavoritesAction.Save => avatarActor ! AvatarActor.SaveLoadout(player, loadoutType, label, line)
case FavoritesAction.Delete => avatarActor ! AvatarActor.DeleteLoadout(player, loadoutType, line) case FavoritesAction.Delete => avatarActor ! AvatarActor.DeleteLoadout(player, loadoutType, line)
@ -5139,7 +5135,10 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
continent.id, continent.id,
AvatarAction.WeaponDryFire(player.GUID, weapon_guid) AvatarAction.WeaponDryFire(player.GUID, weapon_guid)
) )
case _ => ; case Some(_) =>
log.warn(s"WeaponDryFire: ${player.Name}'s weapon ${weapon_guid.guid} does not seem to be a weapon")
case None =>
log.error(s"WeaponDryFire: ${player.Name}'s weapon ${weapon_guid.guid} does not seem to exist")
} }
case msg @ WeaponFireMessage( case msg @ WeaponFireMessage(
@ -5157,8 +5156,8 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
) => ) =>
HandleWeaponFire(weapon_guid, projectile_guid, shot_origin) HandleWeaponFire(weapon_guid, projectile_guid, shot_origin)
case msg @ WeaponLazeTargetPositionMessage(weapon, pos1, pos2) => case msg @ WeaponLazeTargetPositionMessage(_, _, pos2) =>
//log.info(s"Lazing position: ${pos2.toString}") log.debug(s"${player.Name} is lazing the position $pos2; to what ends?")
case msg @ ObjectDetectedMessage(guid1, guid2, unk, targets) => case msg @ ObjectDetectedMessage(guid1, guid2, unk, targets) =>
FindWeapon match { FindWeapon match {
@ -5183,7 +5182,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
unk3, unk3,
unk4 unk4
) => ) =>
log.trace(s"Hit: $msg") log.trace(s"${player.Name} hits with $msg")
//find defined projectile //find defined projectile
FindProjectileEntry(projectile_guid) match { FindProjectileEntry(projectile_guid) match {
case Some(projectile) => case Some(projectile) =>
@ -5258,7 +5257,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
unk4, unk4,
targets targets
) => ) =>
log.trace(s"Splash: $msg") log.trace(s"${player.Name} splashes with $msg")
FindProjectileEntry(projectile_guid) match { FindProjectileEntry(projectile_guid) match {
case Some(projectile) => case Some(projectile) =>
val profile = projectile.profile val profile = projectile.profile
@ -5319,7 +5318,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ LashMessage(seq_time, killer_guid, victim_guid, projectile_guid, hit_pos, unk1) => case msg @ LashMessage(seq_time, killer_guid, victim_guid, projectile_guid, hit_pos, unk1) =>
log.info(s"Lash: $msg") log.trace(s"${player.Name} lashes with $msg")
ValidObject(victim_guid) match { ValidObject(victim_guid) match {
case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) => case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) =>
CheckForHitPositionDiscrepancy(projectile_guid, hit_pos, target) CheckForHitPositionDiscrepancy(projectile_guid, hit_pos, target)
@ -5358,7 +5357,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
destinationBuildingGuid, destinationBuildingGuid,
context.self context.self
) )
log.info(s"WarpgateRequest: ${player.Name} is trying to use a warp gate") log.info(s"${player.Name} is trying to use a warp gate")
case Some(wg: WarpGate) if !wg.Active => case Some(wg: WarpGate) if !wg.Active =>
log.warn(s"WarpgateRequest: ${player.Name} is knocking on an inactive warp gate") log.warn(s"WarpgateRequest: ${player.Name} is knocking on an inactive warp gate")
@ -5368,22 +5367,23 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
RequestSanctuaryZoneSpawn(player, continent.Number) RequestSanctuaryZoneSpawn(player, continent.Number)
} }
} else { } else {
log.warn(s"WarpgateRequest: your request was already consumed, ${player.Name}; already working on it ...") log.debug(s"WarpgateRequest: your request was already consumed, ${player.Name}; already working on it ...")
} }
case msg @ MountVehicleMsg(player_guid, mountable_guid, entry_point) => case msg @ MountVehicleMsg(player_guid, mountable_guid, entry_point) =>
ValidObject(mountable_guid) match { ValidObject(mountable_guid) match {
case Some(obj: Mountable) => case Some(obj: Mountable) =>
obj.Actor ! Mountable.TryMount(player, entry_point) obj.Actor ! Mountable.TryMount(player, entry_point)
case None | Some(_) => case None | Some(_) =>
log.warn(s"MountVehicleMsg: object ${mountable_guid.guid} not a mountable thing, ${player.Name}") log.error(s"MountVehicleMsg: object ${mountable_guid.guid} not a mountable thing, ${player.Name}")
} }
case msg @ DismountVehicleMsg(player_guid, bailType, wasKickedByDriver) => case msg @ DismountVehicleMsg(player_guid, bailType, wasKickedByDriver) =>
//TODO optimize this later //TODO optimize this later
//common warning for this section //common warning for this section
def dismountWarning(note: String): Unit = { def dismountWarning(note: String): Unit = {
log.warn(s"$note; some vehicle might not know that ${player.Name} is no longer sitting in it") log.error(s"$note; some vehicle might not know that ${player.Name} is no longer sitting in it")
} }
if (player.GUID == player_guid) { if (player.GUID == player_guid) {
//normally disembarking from a mount //normally disembarking from a mount
@ -5469,22 +5469,26 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ DeployRequestMessage(player_guid, vehicle_guid, deploy_state, unk2, unk3, pos) => case msg @ DeployRequestMessage(player_guid, vehicle_guid, deploy_state, unk2, unk3, pos) =>
if (player.avatar.vehicle.contains(vehicle_guid) && player.avatar.vehicle == player.VehicleSeated) { if (player.avatar.vehicle.contains(vehicle_guid)) {
continent.GUID(vehicle_guid) match { if (player.avatar.vehicle == player.VehicleSeated) {
case Some(obj: Vehicle) => continent.GUID(vehicle_guid) match {
log.info(s"DeployRequest: ${player.Name} is requesting a deployment change for ${obj.Definition.Name}") case Some(obj: Vehicle) =>
obj.Actor ! Deployment.TryDeploymentChange(deploy_state) log.info(s"${player.Name} is requesting a deployment change for ${obj.Definition.Name}")
obj.Actor ! Deployment.TryDeploymentChange(deploy_state)
case _ => case _ =>
log.error(s"DeployRequest: can not find vehicle $vehicle_guid") log.error(s"DeployRequest: ${player.Name} can not find vehicle $vehicle_guid")
avatarActor ! AvatarActor.SetVehicle(None) avatarActor ! AvatarActor.SetVehicle(None)
}
} else {
log.warn(s"${player.Name} must be mounted to request a deployment change")
} }
} else { } else {
log.warn(s"DeployRequest: ${player.Name} does not own the deploying $vehicle_guid object") log.warn(s"DeployRequest: ${player.Name} does not own the deploying $vehicle_guid object")
} }
case msg @ AvatarGrenadeStateMessage(player_guid, state) => case msg @ AvatarGrenadeStateMessage(player_guid, state) =>
log.info("AvatarGrenadeStateMessage: " + msg) //TODO I thought I had this working? log.debug(s"${player.Name} lofts his grenade high ... $msg") //TODO I thought I had this working?
case msg @ SquadDefinitionActionMessage(u1, u2, action) => case msg @ SquadDefinitionActionMessage(u1, u2, action) =>
squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Definition(u1, u2, action)) squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Definition(u1, u2, action))
@ -5514,13 +5518,13 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
summary, summary,
desc desc
) => ) =>
log.info(s"BugReportMessage: ${player.Name} filed $msg") log.warn(s"${player.Name} filed a $msg")
log.debug(s"$msg")
case msg @ BindPlayerMessage(action, bindDesc, unk1, logging, unk2, unk3, unk4, pos) => case msg @ BindPlayerMessage(action, bindDesc, unk1, logging, unk2, unk3, unk4, pos) =>
//log.info("BindPlayerMessage: " + msg) //log.info("BindPlayerMessage: " + msg)
case msg @ PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value) => case msg @ PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value) =>
log.info("PlanetsideAttributeMessage: " + msg)
ValidObject(object_guid) match { ValidObject(object_guid) match {
case Some(vehicle: Vehicle) => case Some(vehicle: Vehicle) =>
if (player.avatar.vehicle.contains(vehicle.GUID)) { if (player.avatar.vehicle.contains(vehicle.GUID)) {
@ -5528,7 +5532,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
vehicle.PermissionGroup(attribute_type, attribute_value) match { vehicle.PermissionGroup(attribute_type, attribute_value) match {
case Some(allow) => case Some(allow) =>
val group = AccessPermissionGroup(attribute_type - 10) val group = AccessPermissionGroup(attribute_type - 10)
log.info(s"Vehicle attributes: ${player.Name} changed ${vehicle.Definition.Name}'s access permission $group changed to $allow") log.info(s"${player.Name} changed ${vehicle.Definition.Name}'s access permission $group changed to $allow")
continent.VehicleEvents ! VehicleServiceMessage( continent.VehicleEvents ! VehicleServiceMessage(
continent.id, continent.id,
VehicleAction.SeatPermissions(player.GUID, vehicle.GUID, attribute_type, attribute_value) VehicleAction.SeatPermissions(player.GUID, vehicle.GUID, attribute_type, attribute_value)
@ -5569,7 +5573,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
log.warn(s"Vehicle attributes: unsupported change on vehicle $object_guid - $attribute_type, ${player.Name}") log.warn(s"Vehicle attributes: unsupported change on vehicle $object_guid - $attribute_type, ${player.Name}")
} }
} else { } else {
log.warn(s"Vehicle attributes: ${player.Name} does not own vehicle ${vehicle.GUID} and can not change it") log.warn(s"PlanetsideAttributeMessage: vehicle attributes - ${player.Name} does not own vehicle ${vehicle.GUID} and can not change it")
} }
// Cosmetics options // Cosmetics options
@ -5577,7 +5581,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
avatarActor ! AvatarActor.SetCosmetics(Cosmetic.valuesFromAttributeValue(attribute_value)) avatarActor ! AvatarActor.SetCosmetics(Cosmetic.valuesFromAttributeValue(attribute_value))
case _ => case _ =>
log.warn(s"echoing unknown attributes behavior") log.warn(s"PlanetsideAttributeMessage: echoing unknown attributes behavior $attribute_type back to ${player.Name}")
sendResponse(PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value)) sendResponse(PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value))
} }
@ -5599,7 +5603,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
} }
case msg @ BattleplanMessage(char_id, player_name, zone_id, diagrams) => case msg @ BattleplanMessage(char_id, player_name, zone_id, diagrams) =>
log.info(s"Battleplan: ${player.Name} has a brilliant idea that no one will ever see") val lament: String = s"${player.Name} has a brilliant idea that no one will ever see"
log.info(lament)
log.debug(s"BattleplanMessage: $lament - $msg")
case msg @ CreateShortcutMessage(player_guid, slot, unk, add, shortcut) => ; case msg @ CreateShortcutMessage(player_guid, slot, unk, add, shortcut) => ;
@ -6367,8 +6373,8 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
sumReloadValue sumReloadValue
} else { } else {
val splitReloadAmmo: Int = sumReloadValue - fullMagazine val splitReloadAmmo: Int = sumReloadValue - fullMagazine
log.info( log.trace(
s"ChangeAmmo: ${player.Name} takes ${originalBoxCapacity - splitReloadAmmo} from a box of ${originalBoxCapacity} $requestedAmmoType ammo" s"${player.Name} takes ${originalBoxCapacity - splitReloadAmmo} from a box of $originalBoxCapacity $requestedAmmoType ammo"
) )
val boxForInventory = AmmoBox(box.Definition, splitReloadAmmo) val boxForInventory = AmmoBox(box.Definition, splitReloadAmmo)
continent.tasks ! stowNewFunc(boxForInventory) continent.tasks ! stowNewFunc(boxForInventory)
@ -6377,7 +6383,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
sendResponse( sendResponse(
InventoryStateMessage(box.GUID, tool.GUID, box.Capacity) InventoryStateMessage(box.GUID, tool.GUID, box.Capacity)
) //should work for both players and vehicles ) //should work for both players and vehicles
log.info(s"ChangeAmmo: ${player.Name} loads ${box.Capacity} $requestedAmmoType into ${tool.GUID} in $ammoSlotIndex") log.info(s"${player.Name} loads ${box.Capacity} $requestedAmmoType into ${tool.GUID} in $ammoSlotIndex")
if (previousBox.Capacity > 0) { if (previousBox.Capacity > 0) {
//divide capacity across other existing and not full boxes of that ammo type //divide capacity across other existing and not full boxes of that ammo type
var capacity = previousBox.Capacity var capacity = previousBox.Capacity
@ -6397,7 +6403,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
val entry = iter.next() val entry = iter.next()
val item: AmmoBox = entry.obj.asInstanceOf[AmmoBox] val item: AmmoBox = entry.obj.asInstanceOf[AmmoBox]
val ammoAllocated = math.min(item.FullCapacity - item.Capacity, capacity) val ammoAllocated = math.min(item.FullCapacity - item.Capacity, capacity)
log.info(s"ChangeAmmo: ${player.Name} put $ammoAllocated back into a box of ${item.Capacity} $originalAmmoType") log.info(s"${player.Name} put $ammoAllocated back into a box of ${item.Capacity} $originalAmmoType")
capacity -= ammoAllocated capacity -= ammoAllocated
modifyFunc(item, -ammoAllocated) modifyFunc(item, -ammoAllocated)
} }
@ -7738,7 +7744,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
def DismountAction(tplayer: Player, obj: PlanetSideGameObject with Mountable, seatNum: Int): Unit = { def DismountAction(tplayer: Player, obj: PlanetSideGameObject with Mountable, seatNum: Int): Unit = {
val player_guid: PlanetSideGUID = tplayer.GUID val player_guid: PlanetSideGUID = tplayer.GUID
log.info( log.info(
s"DismountVehicleMsg: ${tplayer.Name} dismounts a ${obj.Definition.asInstanceOf[ObjectDefinition].Name} from seat $seatNum" s"${tplayer.Name} dismounts a ${obj.Definition.asInstanceOf[ObjectDefinition].Name} from seat $seatNum"
) )
keepAliveFunc = NormalKeepAlive keepAliveFunc = NormalKeepAlive
sendResponse(DismountVehicleMsg(player_guid, BailType.Normal, wasKickedByDriver = false)) sendResponse(DismountVehicleMsg(player_guid, BailType.Normal, wasKickedByDriver = false))
@ -7943,7 +7949,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
obj.ModePermissions obj.ModePermissions
) && originalAmmoIndex != obj.AmmoTypeIndex) ) && originalAmmoIndex != obj.AmmoTypeIndex)
log.info( log.info(
s"ChangeFireMode: ${player.Name} switched construction object ${obj.Definition.Name} to ${obj.AmmoType} (mode ${obj.FireModeIndex})" s"${player.Name} switched construction object ${obj.Definition.Name} to ${obj.AmmoType} (mode #${obj.FireModeIndex})"
) )
sendResponse(ChangeAmmoMessage(obj.GUID, obj.AmmoTypeIndex)) sendResponse(ChangeAmmoMessage(obj.GUID, obj.AmmoTypeIndex))
} }
@ -8119,7 +8125,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
player.Slot(newIndex).Equipment = None player.Slot(newIndex).Equipment = None
true true
case None => case None =>
log.error(s"$logDecorator: ${player.Name} could not find the target ${tool.Definition.Name}") log.warn(s"$logDecorator: ${player.Name} could not find the target ${tool.Definition.Name}")
false false
} }
} }
@ -8345,7 +8351,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
* does not factor in any time required for loading zone or game objects * does not factor in any time required for loading zone or game objects
*/ */
def LoadZonePhysicalSpawnPoint(zoneId: String, pos: Vector3, ori: Vector3, respawnTime: FiniteDuration): Unit = { def LoadZonePhysicalSpawnPoint(zoneId: String, pos: Vector3, ori: Vector3, respawnTime: FiniteDuration): Unit = {
log.info(s"LoadZonePhysicalSpawnPoint: ${player.Name} will load in zone $zoneId at position $pos in $respawnTime") val msg = s"${player.Name} will load in zone $zoneId at position $pos in $respawnTime"
log.info(msg)
log.debug(s"LoadZonePhysicalSpawnPoint: $msg")
respawnTimer.cancel() respawnTimer.cancel()
reviveTimer.cancel() reviveTimer.cancel()
deadState = DeadState.RespawnTime deadState = DeadState.RespawnTime
@ -8409,7 +8417,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
* @param zoneId the zone in which the player will be placed * @param zoneId the zone in which the player will be placed
*/ */
def LoadZoneAsPlayer(targetPlayer: Player, zoneId: String): Unit = { def LoadZoneAsPlayer(targetPlayer: Player, zoneId: String): Unit = {
log.info(s"LoadZoneAsPlayer ${targetPlayer.avatar.name} loading into $zoneId") val msg: String = s"${targetPlayer.avatar.name} loading into $zoneId"
log.info(msg)
log.debug(s"LoadZoneAsPlayer: $msg")
if (!zoneReload && zoneId == continent.id) { if (!zoneReload && zoneId == continent.id) {
if (player.isBackpack) { // important! test the actor-wide player ref, not the parameter if (player.isBackpack) { // important! test the actor-wide player ref, not the parameter
// respawning from unregistered player // respawning from unregistered player
@ -8490,7 +8500,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
* @return a tuple composed of an `ActorRef` destination and a message to send to that destination * @return a tuple composed of an `ActorRef` destination and a message to send to that destination
*/ */
def LoadZoneInVehicleAsDriver(vehicle: Vehicle, zoneId: String): Unit = { def LoadZoneInVehicleAsDriver(vehicle: Vehicle, zoneId: String): Unit = {
log.info(s"LoadZoneInVehicleAsDriver: ${player.Name} loading into $zoneId, driving a ${vehicle.Definition.Name}") val msg: String = s"${player.Name} loading into $zoneId, driving a ${vehicle.Definition.Name}"
log.info(msg)
log.debug(s"LoadZoneInVehicleAsDriver: $msg")
val manifest = vehicle.PrepareGatingManifest() val manifest = vehicle.PrepareGatingManifest()
val pguid = player.GUID val pguid = player.GUID
val toChannel = manifest.file val toChannel = manifest.file
@ -8502,7 +8514,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
manifest.cargo.foreach { manifest.cargo.foreach {
case ("MISSING_DRIVER", index) => case ("MISSING_DRIVER", index) =>
val cargo = vehicle.CargoHolds(index).occupant.get val cargo = vehicle.CargoHolds(index).occupant.get
log.error(s"LoadZoneInVehicleAsDriver: ${player.Name} must eject cargo in hold $index; vehicle is missing driver") log.warn(s"LoadZoneInVehicleAsDriver: ${player.Name} must eject cargo in hold $index; vehicle is missing driver")
CargoBehavior.HandleVehicleCargoDismount(cargo.GUID, cargo, vehicle.GUID, vehicle, false, false, true) CargoBehavior.HandleVehicleCargoDismount(cargo.GUID, cargo, vehicle.GUID, vehicle, false, false, true)
case (name, index) => case (name, index) =>
val cargo = vehicle.CargoHolds(index).occupant.get val cargo = vehicle.CargoHolds(index).occupant.get
@ -8581,7 +8593,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
* @return a tuple composed of an `ActorRef` destination and a message to send to that destination * @return a tuple composed of an `ActorRef` destination and a message to send to that destination
*/ */
def LoadZoneInVehicleAsPassenger(vehicle: Vehicle, zoneId: String): Unit = { def LoadZoneInVehicleAsPassenger(vehicle: Vehicle, zoneId: String): Unit = {
log.info(s"LoadZoneInVehicleAsPassenger: ${player.Name} loading into $zoneId as the passenger of a ${vehicle.Definition.Name}") val msg: String = s"${player.Name} loading into $zoneId as the passenger of a ${vehicle.Definition.Name}\""
log.info(msg)
log.debug(s"LoadZoneInVehicleAsPassenger: $msg")
if (!zoneReload && zoneId == continent.id) { if (!zoneReload && zoneId == continent.id) {
//transferring a vehicle between spawn points (warp gates) in the same zone //transferring a vehicle between spawn points (warp gates) in the same zone
self ! PlayerLoaded(player) self ! PlayerLoaded(player)

View file

@ -1646,7 +1646,7 @@ object GlobalDefinitions {
1.093750f // same regardless of gender 1.093750f // same regardless of gender
} else if (p.ExoSuit == ExoSuitType.MAX) { } else if (p.ExoSuit == ExoSuitType.MAX) {
1.906250f // VS female MAX 1.906250f // VS female MAX
} else if (p.Sex == CharacterGender.Male) { } else if (p.Sex == CharacterSex.Male) {
obj.Definition.MaxDepth // male obj.Definition.MaxDepth // male
} else { } else {
1.546875f // female 1.546875f // female

View file

@ -79,7 +79,7 @@ class Player(var avatar: Avatar)
def Faction: PlanetSideEmpire.Value = avatar.faction def Faction: PlanetSideEmpire.Value = avatar.faction
def Sex: CharacterGender.Value = avatar.sex def Sex: CharacterSex = avatar.sex
def Head: Int = avatar.head def Head: Int = avatar.head

View file

@ -72,7 +72,7 @@ case class Avatar(
id: Int, id: Int,
name: String, name: String,
faction: PlanetSideEmpire.Value, faction: PlanetSideEmpire.Value,
sex: CharacterGender.Value, sex: CharacterSex,
head: Int, head: Int,
voice: CharacterVoice.Value, voice: CharacterVoice.Value,
bep: Long = 0, bep: Long = 0,

View file

@ -714,7 +714,7 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm
case Some(a) => case Some(a) =>
damageLog.info(s"DisplayDestroy: ${a.defender} was killed by ${a.attacker}") damageLog.info(s"DisplayDestroy: ${a.defender} was killed by ${a.attacker}")
case _ => case _ =>
damageLog.info(s"DisplayDestroy: ${player.Name} killed ${if(player.Sex==CharacterGender.Male){"himself"}else{"herself"}}.") damageLog.info(s"DisplayDestroy: ${player.Name} killed ${player.Sex.pronounObject}self.")
} }
events ! AvatarServiceMessage( events ! AvatarServiceMessage(
nameChannel, nameChannel,

View file

@ -30,7 +30,7 @@ class CorpseConverter extends AvatarConverter {
*/ */
private def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = { private def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = {
val aa: Int => CharacterAppearanceA = CharacterAppearanceA( val aa: Int => CharacterAppearanceA = CharacterAppearanceA(
BasicCharacterData(obj.Name, obj.Faction, CharacterGender.Male, 0, CharacterVoice.Mute), BasicCharacterData(obj.Name, obj.Faction, CharacterSex.Male, 0, CharacterVoice.Mute),
CommonFieldData( CommonFieldData(
obj.Faction, obj.Faction,
bops = false, bops = false,

View file

@ -183,7 +183,7 @@ object CargoBehavior {
) )
) )
false false
//sending packet to the cargo vehicle's client results in player locking himself in his vehicle //sending packet to the cargo vehicle's client results in player being lock in own vehicle
//player gets stuck as "always trying to remount the cargo hold" //player gets stuck as "always trying to remount the cargo hold"
//obviously, don't do this //obviously, don't do this
} else { } else {
@ -281,7 +281,7 @@ object CargoBehavior {
) )
) )
false false
//sending packet to the cargo vehicle's client results in player locking himself in his vehicle //sending packet to the cargo vehicle's client results in player being lock in own vehicle
//player gets stuck as "always trying to remount the cargo hold" //player gets stuck as "always trying to remount the cargo hold"
//obviously, don't do this //obviously, don't do this
} else if (iteration > 40) { } else if (iteration > 40) {

View file

@ -2,7 +2,7 @@
package net.psforever.packet.game package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
import scodec.{Attempt, Codec, Err} import scodec.{Attempt, Codec, Err}
import scodec.codecs._ import scodec.codecs._
import shapeless.{::, HNil} import shapeless.{::, HNil}
@ -14,7 +14,7 @@ final case class CharacterCreateRequestMessage(
name: String, name: String,
headId: Int, headId: Int,
voiceId: CharacterVoice.Value, voiceId: CharacterVoice.Value,
gender: CharacterGender.Value, gender: CharacterSex,
empire: PlanetSideEmpire.Value empire: PlanetSideEmpire.Value
) extends PlanetSideGamePacket { ) extends PlanetSideGamePacket {
type Packet = CharacterCreateRequestMessage type Packet = CharacterCreateRequestMessage
@ -29,7 +29,7 @@ object CharacterCreateRequestMessage extends Marshallable[CharacterCreateRequest
("name" | PacketHelpers.encodedWideString) :: ("name" | PacketHelpers.encodedWideString) ::
("headId" | uint8L) :: ("headId" | uint8L) ::
("voiceId" | character_voice_codec) :: ("voiceId" | character_voice_codec) ::
("gender" | CharacterGender.codec) :: ("gender" | CharacterSex.codec) ::
("empire" | PlanetSideEmpire.codec) ("empire" | PlanetSideEmpire.codec)
).exmap[CharacterCreateRequestMessage]( ).exmap[CharacterCreateRequestMessage](
{ {

View file

@ -9,7 +9,7 @@ import net.psforever.types._
* This partition of the data stream contains information used to represent how the player's avatar is presented. * This partition of the data stream contains information used to represent how the player's avatar is presented.
* This appearance coincides with the data available from the `CharacterCreateRequestMessage` packet. * This appearance coincides with the data available from the `CharacterCreateRequestMessage` packet.
* @see `PlanetSideEmpire`<br> * @see `PlanetSideEmpire`<br>
* `CharacterGender` * `CharacterSex`
* @param name the unique name of the avatar; * @param name the unique name of the avatar;
* minimum of two characters * minimum of two characters
* @param faction the empire to which the avatar belongs * @param faction the empire to which the avatar belongs
@ -21,7 +21,7 @@ import net.psforever.types._
final case class BasicCharacterData( final case class BasicCharacterData(
name: String, name: String,
faction: PlanetSideEmpire.Value, faction: PlanetSideEmpire.Value,
sex: CharacterGender.Value, sex: CharacterSex,
head: Int, head: Int,
voice: CharacterVoice.Value voice: CharacterVoice.Value
) )

View file

@ -304,7 +304,7 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] {
("name" | PacketHelpers.encodedWideStringAligned(namePadding(name_padding, data.v2))) :: ("name" | PacketHelpers.encodedWideStringAligned(namePadding(name_padding, data.v2))) ::
("exosuit" | ExoSuitType.codec) :: ("exosuit" | ExoSuitType.codec) ::
("unk5" | uint2) :: //unknown ("unk5" | uint2) :: //unknown
("sex" | CharacterGender.codec) :: ("sex" | CharacterSex.codec) ::
("head" | uint8L) :: ("head" | uint8L) ::
("voice" | CharacterVoice.codec) :: ("voice" | CharacterVoice.codec) ::
("unk6" | uint32L) :: ("unk6" | uint32L) ::

View file

@ -3,7 +3,7 @@ package net.psforever.persistence
import net.psforever.objects.avatar import net.psforever.objects.avatar
import net.psforever.objects.avatar.Cosmetic import net.psforever.objects.avatar.Cosmetic
import org.joda.time.LocalDateTime import org.joda.time.LocalDateTime
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
case class Avatar( case class Avatar(
id: Int, id: Int,
@ -27,7 +27,7 @@ case class Avatar(
id, id,
name, name,
PlanetSideEmpire(factionId), PlanetSideEmpire(factionId),
CharacterGender(genderId), CharacterSex(genderId),
headId, headId,
CharacterVoice(voiceId), CharacterVoice(voiceId),
bep, bep,

View file

@ -1,16 +0,0 @@
// Copyright (c) 2017 PSForever
package net.psforever.types
import net.psforever.packet.PacketHelpers
import scodec.codecs.uint2L
/**
* Values for two genders, Male and Female, starting at 1 = Male.
*/
object CharacterGender extends Enumeration(1) {
type Type = Value
val Male, Female = Value
implicit val codec = PacketHelpers.createEnumerationCodec(this, uint2L)
}

View file

@ -0,0 +1,45 @@
// Copyright (c) 2021 PSForever
package net.psforever.types
import enumeratum.values.{IntEnum, IntEnumEntry}
import net.psforever.packet.PacketHelpers
import scodec.codecs.uint2L
/**
* Values for two sexes, Male and Female, as required by `ObjectCreateMessage` parameters.
* Some quaint language for log decoration is provided.
* Blame the lack of gender dysphoria on the Terran Republic.
*/
sealed abstract class CharacterSex(
val value: Int,
val pronounSubject: String,
val pronounObject: String,
val possessive: String
) extends IntEnumEntry {
def possessiveNoObject: String = possessive
}
/**
* Values for two sexes, Male and Female.
*/
object CharacterSex extends IntEnum[CharacterSex] {
val values = findValues
case object Male extends CharacterSex(
value = 1,
pronounSubject = "he",
pronounObject = "him",
possessive = "his"
)
case object Female extends CharacterSex(
value = 2,
pronounSubject = "she",
pronounObject = "her",
possessive = "her"
) {
override def possessiveNoObject: String = "hers"
}
implicit val codec = PacketHelpers.createIntEnumCodec(enum = this, uint2L)
}

View file

@ -10,7 +10,7 @@ import scodec.codecs.uint
* While it is technically not valid to have a wrong-gendered voice, * While it is technically not valid to have a wrong-gendered voice,
* unlisted sixth and seventh entries would give a male character a female voice; * unlisted sixth and seventh entries would give a male character a female voice;
* a female character with either entry would become mute, however. * a female character with either entry would become mute, however.
* @see `CharacterGender` * @see `CharacterSex`
*/ */
object CharacterVoice extends Enumeration { object CharacterVoice extends Enumeration {
type Type = Value type Type = Value

View file

@ -4,7 +4,7 @@ package game
import org.specs2.mutable._ import org.specs2.mutable._
import net.psforever.packet._ import net.psforever.packet._
import net.psforever.packet.game._ import net.psforever.packet.game._
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
import scodec.bits._ import scodec.bits._
class CharacterCreateRequestMessageTest extends Specification { class CharacterCreateRequestMessageTest extends Specification {
@ -16,7 +16,7 @@ class CharacterCreateRequestMessageTest extends Specification {
name mustEqual "TestChar" name mustEqual "TestChar"
head mustEqual 50 head mustEqual 50
voice mustEqual CharacterVoice.Voice5 voice mustEqual CharacterVoice.Voice5
gender mustEqual CharacterGender.Female gender mustEqual CharacterSex.Female
faction mustEqual PlanetSideEmpire.NC faction mustEqual PlanetSideEmpire.NC
case _ => case _ =>
ko ko
@ -25,7 +25,7 @@ class CharacterCreateRequestMessageTest extends Specification {
"encode" in { "encode" in {
val msg = val msg =
CharacterCreateRequestMessage("TestChar", 50, CharacterVoice.Voice5, CharacterGender.Female, PlanetSideEmpire.NC) CharacterCreateRequestMessage("TestChar", 50, CharacterVoice.Voice5, CharacterSex.Female, PlanetSideEmpire.NC)
val pkt = PacketCoding.encodePacket(msg).require.toByteVector val pkt = PacketCoding.encodePacket(msg).require.toByteVector
pkt mustEqual string pkt mustEqual string

View file

@ -40,7 +40,7 @@ class CharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "ScrawnyRonnie" a.app.name mustEqual "ScrawnyRonnie"
a.app.faction mustEqual PlanetSideEmpire.TR a.app.faction mustEqual PlanetSideEmpire.TR
a.app.sex mustEqual CharacterGender.Male a.app.sex mustEqual CharacterSex.Male
a.app.head mustEqual 5 a.app.head mustEqual 5
a.app.voice mustEqual CharacterVoice.Voice5 a.app.voice mustEqual CharacterVoice.Voice5
a.data.bops mustEqual false a.data.bops mustEqual false
@ -157,7 +157,7 @@ class CharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "ScrawnyRonnie" a.app.name mustEqual "ScrawnyRonnie"
a.app.faction mustEqual PlanetSideEmpire.TR a.app.faction mustEqual PlanetSideEmpire.TR
a.app.sex mustEqual CharacterGender.Male a.app.sex mustEqual CharacterSex.Male
a.app.head mustEqual 5 a.app.head mustEqual 5
a.app.voice mustEqual CharacterVoice.Voice5 a.app.voice mustEqual CharacterVoice.Voice5
a.data.bops mustEqual false a.data.bops mustEqual false
@ -226,7 +226,7 @@ class CharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "Angello" a.app.name mustEqual "Angello"
a.app.faction mustEqual PlanetSideEmpire.VS a.app.faction mustEqual PlanetSideEmpire.VS
a.app.sex mustEqual CharacterGender.Male a.app.sex mustEqual CharacterSex.Male
a.app.head mustEqual 10 a.app.head mustEqual 10
a.app.voice mustEqual CharacterVoice.Voice2 a.app.voice mustEqual CharacterVoice.Voice2
a.data.bops mustEqual false a.data.bops mustEqual false
@ -300,7 +300,7 @@ class CharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"ScrawnyRonnie", "ScrawnyRonnie",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
5, 5,
CharacterVoice.Voice5 CharacterVoice.Voice5
), ),
@ -408,7 +408,7 @@ class CharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"ScrawnyRonnie", "ScrawnyRonnie",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
5, 5,
CharacterVoice.Voice5 CharacterVoice.Voice5
), ),
@ -524,7 +524,7 @@ class CharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"Angello", "Angello",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Male, CharacterSex.Male,
10, 10,
CharacterVoice.Voice2 CharacterVoice.Voice2
), ),

View file

@ -70,7 +70,7 @@ class DetailedCharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "IlllIIIlllIlIllIlllIllI" a.app.name mustEqual "IlllIIIlllIlIllIlllIllI"
a.app.faction mustEqual PlanetSideEmpire.VS a.app.faction mustEqual PlanetSideEmpire.VS
a.app.sex mustEqual CharacterGender.Female a.app.sex mustEqual CharacterSex.Female
a.app.head mustEqual 41 a.app.head mustEqual 41
a.app.voice mustEqual CharacterVoice.Voice1 a.app.voice mustEqual CharacterVoice.Voice1
a.data.bops mustEqual false a.data.bops mustEqual false
@ -258,7 +258,7 @@ class DetailedCharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "IlllIIIlllIlIllIlllIllI" a.app.name mustEqual "IlllIIIlllIlIllIlllIllI"
a.app.faction mustEqual PlanetSideEmpire.VS a.app.faction mustEqual PlanetSideEmpire.VS
a.app.sex mustEqual CharacterGender.Female a.app.sex mustEqual CharacterSex.Female
a.app.head mustEqual 41 a.app.head mustEqual 41
a.app.voice mustEqual CharacterVoice.Voice1 a.app.voice mustEqual CharacterVoice.Voice1
a.data.bops mustEqual false a.data.bops mustEqual false
@ -443,7 +443,7 @@ class DetailedCharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "HaHaATRMax" a.app.name mustEqual "HaHaATRMax"
a.app.faction mustEqual PlanetSideEmpire.TR a.app.faction mustEqual PlanetSideEmpire.TR
a.app.sex mustEqual CharacterGender.Male a.app.sex mustEqual CharacterSex.Male
a.app.head mustEqual 57 a.app.head mustEqual 57
a.app.voice mustEqual CharacterVoice.Voice1 a.app.voice mustEqual CharacterVoice.Voice1
a.data.bops mustEqual false a.data.bops mustEqual false
@ -670,7 +670,7 @@ class DetailedCharacterDataTest extends Specification {
case CharacterAppearanceData(a, b, ribbons) => case CharacterAppearanceData(a, b, ribbons) =>
a.app.name mustEqual "KiCkJr" a.app.name mustEqual "KiCkJr"
a.app.faction mustEqual PlanetSideEmpire.NC a.app.faction mustEqual PlanetSideEmpire.NC
a.app.sex mustEqual CharacterGender.Male a.app.sex mustEqual CharacterSex.Male
a.app.head mustEqual 24 a.app.head mustEqual 24
a.app.voice mustEqual CharacterVoice.Voice4 a.app.voice mustEqual CharacterVoice.Voice4
a.data.bops mustEqual false a.data.bops mustEqual false
@ -1189,7 +1189,7 @@ class DetailedCharacterDataTest extends Specification {
a.app mustEqual BasicCharacterData( a.app mustEqual BasicCharacterData(
"CCRIDER", "CCRIDER",
PlanetSideEmpire.NC, PlanetSideEmpire.NC,
CharacterGender.Male, CharacterSex.Male,
20, 20,
CharacterVoice.Voice3 CharacterVoice.Voice3
) )
@ -1336,7 +1336,7 @@ class DetailedCharacterDataTest extends Specification {
a.app mustEqual BasicCharacterData( a.app mustEqual BasicCharacterData(
"xRider912", "xRider912",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
4, 4,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -1515,7 +1515,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
41, 41,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),
@ -1697,7 +1697,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
41, 41,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),
@ -1886,7 +1886,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"HaHaATRMax", "HaHaATRMax",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
57, 57,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),
@ -2103,7 +2103,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"KiCkJr", "KiCkJr",
PlanetSideEmpire.NC, PlanetSideEmpire.NC,
CharacterGender.Male, CharacterSex.Male,
24, 24,
CharacterVoice.Voice4 CharacterVoice.Voice4
), ),
@ -3588,7 +3588,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"CCRIDER", "CCRIDER",
PlanetSideEmpire.NC, PlanetSideEmpire.NC,
CharacterGender.Male, CharacterSex.Male,
20, 20,
CharacterVoice.Voice3 CharacterVoice.Voice3
), ),
@ -4512,7 +4512,7 @@ class DetailedCharacterDataTest extends Specification {
BasicCharacterData( BasicCharacterData(
"xRider912", "xRider912",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
4, 4,
CharacterVoice.Voice1 CharacterVoice.Voice1
), ),

View file

@ -57,7 +57,7 @@ class MountedVehiclesTest extends Specification {
a.app mustEqual BasicCharacterData( a.app mustEqual BasicCharacterData(
"ScrawnyRonnie", "ScrawnyRonnie",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
5, 5,
CharacterVoice.Voice5 CharacterVoice.Voice5
) )
@ -146,7 +146,7 @@ class MountedVehiclesTest extends Specification {
BasicCharacterData( BasicCharacterData(
"ScrawnyRonnie", "ScrawnyRonnie",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
5, 5,
CharacterVoice.Voice5 CharacterVoice.Voice5
), ),

View file

@ -6,12 +6,12 @@ import net.psforever.objects._
import net.psforever.objects.avatar.{Avatar, BattleRank, Implant} import net.psforever.objects.avatar.{Avatar, BattleRank, Implant}
import net.psforever.objects.definition.ImplantDefinition import net.psforever.objects.definition.ImplantDefinition
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{CharacterGender, CharacterVoice, ImplantType, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, ImplantType, PlanetSideEmpire}
import org.specs2.mutable._ import org.specs2.mutable._
class AvatarTest extends Specification { class AvatarTest extends Specification {
def CreatePlayer(): (Player, Avatar) = { def CreatePlayer(): (Player, Avatar) = {
val avatar = Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) val avatar = Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 41, CharacterVoice.Voice1)
val player = Player(avatar) val player = Player(avatar)
player.Slot(0).Equipment = Tool(beamer) player.Slot(0).Equipment = Tool(beamer)
player.Slot(2).Equipment = Tool(suppressor) player.Slot(2).Equipment = Tool(suppressor)
@ -26,10 +26,10 @@ class AvatarTest extends Specification {
} }
"construct" in { "construct" in {
val av = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val av = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
av.name mustEqual "Chord" av.name mustEqual "Chord"
av.faction mustEqual PlanetSideEmpire.TR av.faction mustEqual PlanetSideEmpire.TR
av.sex mustEqual CharacterGender.Male av.sex mustEqual CharacterSex.Male
av.head mustEqual 0 av.head mustEqual 0
av.voice mustEqual CharacterVoice.Voice5 av.voice mustEqual CharacterVoice.Voice5
av.bep mustEqual 0 av.bep mustEqual 0
@ -39,7 +39,7 @@ class AvatarTest extends Specification {
} }
"can not maintain experience point values below zero" in { "can not maintain experience point values below zero" in {
val av = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val av = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
av.bep mustEqual 0 av.bep mustEqual 0
av.copy(bep = -1) must throwA[AssertionError] av.copy(bep = -1) must throwA[AssertionError]
av.copy(cep = -1) must throwA[AssertionError] av.copy(cep = -1) must throwA[AssertionError]
@ -47,7 +47,7 @@ class AvatarTest extends Specification {
//refer to ImplantTest.scala for more tests //refer to ImplantTest.scala for more tests
"maximum of three implant slots" in { "maximum of three implant slots" in {
val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.implants.length mustEqual 3 obj.implants.length mustEqual 3
obj.implants(0) must beNone obj.implants(0) must beNone
obj.implants(1) must beNone obj.implants(1) must beNone
@ -61,7 +61,7 @@ class AvatarTest extends Specification {
0, 0,
"Chord", "Chord",
PlanetSideEmpire.TR, PlanetSideEmpire.TR,
CharacterGender.Male, CharacterSex.Male,
0, 0,
CharacterVoice.Voice5, CharacterVoice.Voice5,
bep = BattleRank.BR6.experience bep = BattleRank.BR6.experience
@ -81,7 +81,7 @@ class AvatarTest extends Specification {
"can not install the same type of implant twice" in { "can not install the same type of implant twice" in {
val testplant1 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen)) val testplant1 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen))
val testplant2 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen)) val testplant2 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen))
val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.copy(implants = obj.implants.updated(0, Some(testplant1)).updated(1, Some(testplant2))) must throwA[ obj.copy(implants = obj.implants.updated(0, Some(testplant1)).updated(1, Some(testplant2))) must throwA[
AssertionError AssertionError
] ]
@ -91,7 +91,7 @@ class AvatarTest extends Specification {
val testplant1 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen)) val testplant1 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen))
val testplant2 = Implant(new ImplantDefinition(ImplantType.Surge)) val testplant2 = Implant(new ImplantDefinition(ImplantType.Surge))
val testplant3 = Implant(new ImplantDefinition(ImplantType.DarklightVision)) val testplant3 = Implant(new ImplantDefinition(ImplantType.DarklightVision))
val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.copy( obj.copy(
bep = BattleRank.BR12.value, bep = BattleRank.BR12.value,
implants = Seq(Some(testplant1), Some(testplant2), Some(testplant3)) implants = Seq(Some(testplant1), Some(testplant2), Some(testplant3))

View file

@ -648,7 +648,7 @@ class ConverterTest extends Specification {
} }
"Player" should { "Player" should {
var avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) var avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val obj: Player = { val obj: Player = {
/* /*
Create an AmmoBoxDefinition with which to build two AmmoBoxes Create an AmmoBoxDefinition with which to build two AmmoBoxes

View file

@ -26,7 +26,7 @@ class DamageCalculationsTests extends Specification {
val wep_prof = wep_fmode.Add val wep_prof = wep_fmode.Add
val proj = DamageModelTests.projectile val proj = DamageModelTests.projectile
val proj_prof = proj.asInstanceOf[DamageProfile] val proj_prof = proj.asInstanceOf[DamageProfile]
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
val target = Vehicle(GlobalDefinitions.fury) val target = Vehicle(GlobalDefinitions.fury)
target.Position = Vector3(10, 0, 0) target.Position = Vector3(10, 0, 0)
@ -450,7 +450,7 @@ class DamageCalculationsTests extends Specification {
"galaxy gunship reduction (target is not a vehicle)" in { "galaxy gunship reduction (target is not a vehicle)" in {
val tplayer = val tplayer =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val resfprojectile = DamageInteraction( val resfprojectile = DamageInteraction(
SourceEntry(tplayer), SourceEntry(tplayer),
ProjectileReason( ProjectileReason(
@ -479,7 +479,7 @@ class ResistanceCalculationsTests extends Specification {
val wep = GlobalDefinitions.galaxy_gunship_cannon val wep = GlobalDefinitions.galaxy_gunship_cannon
val wep_fmode = Tool(wep).FireMode val wep_fmode = Tool(wep).FireMode
val proj = DamageModelTests.projectile val proj = DamageModelTests.projectile
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
"ResistanceCalculations" should { "ResistanceCalculations" should {
@ -515,7 +515,7 @@ class ResistanceCalculationsTests extends Specification {
} }
"discern mechanized infantry targets" in { "discern mechanized infantry targets" in {
val target = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val target = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
target.ExoSuit = ExoSuitType.MAX target.ExoSuit = ExoSuitType.MAX
val resprojectile = DamageInteraction( val resprojectile = DamageInteraction(
SourceEntry(target), SourceEntry(target),
@ -592,7 +592,7 @@ class ResolutionCalculationsTests extends Specification {
val wep = GlobalDefinitions.galaxy_gunship_cannon val wep = GlobalDefinitions.galaxy_gunship_cannon
val wep_fmode = Tool(wep).FireMode val wep_fmode = Tool(wep).FireMode
val proj = DamageModelTests.projectile val proj = DamageModelTests.projectile
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
@ -656,7 +656,7 @@ class ResolutionCalculationsTests extends Specification {
InfantryDamageAfterResist(100, 100)(50, 60) mustEqual (0, 50) InfantryDamageAfterResist(100, 100)(50, 60) mustEqual (0, 50)
} }
val player2 = Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player2.ExoSuit = ExoSuitType.MAX player2.ExoSuit = ExoSuitType.MAX
player2.Spawn() player2.Spawn()
"calculate no max damage for vehicles" in { "calculate no max damage for vehicles" in {
@ -740,7 +740,7 @@ class DamageModelTests extends Specification {
val wep_tool = Tool(wep) val wep_tool = Tool(wep)
val wep_fmode = wep_tool.FireMode val wep_fmode = wep_tool.FireMode
val proj = DamageModelTests.projectile val proj = DamageModelTests.projectile
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
player.Spawn() player.Spawn()
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
@ -767,7 +767,7 @@ class DamageModelTests extends Specification {
"resolve infantry targets" in { "resolve infantry targets" in {
val tplayer = val tplayer =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
tplayer.Spawn() tplayer.Spawn()
tplayer.Health mustEqual 100 tplayer.Health mustEqual 100
tplayer.Armor mustEqual 50 tplayer.Armor mustEqual 50
@ -789,7 +789,7 @@ class DamageModelTests extends Specification {
"resolve infantry targets in a specific way" in { "resolve infantry targets in a specific way" in {
val tplayer = val tplayer =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
tplayer.Spawn() tplayer.Spawn()
tplayer.Health mustEqual 100 tplayer.Health mustEqual 100
tplayer.Armor mustEqual 50 tplayer.Armor mustEqual 50
@ -811,7 +811,7 @@ class DamageModelTests extends Specification {
"resolve infantry targets, with damage overflow" in { "resolve infantry targets, with damage overflow" in {
val tplayer = val tplayer =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
tplayer.Spawn() tplayer.Spawn()
tplayer.Health mustEqual 100 tplayer.Health mustEqual 100
tplayer.Armor mustEqual 50 tplayer.Armor mustEqual 50

View file

@ -35,7 +35,7 @@ import net.psforever.objects.vital.base.DamageResolution
import net.psforever.objects.vital.projectile.ProjectileReason import net.psforever.objects.vital.projectile.ProjectileReason
class DamageableTest extends Specification { class DamageableTest extends Specification {
val player1 = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player1 = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val pSource = PlayerSource(player1) val pSource = PlayerSource(player1)
val weaponA = Tool(GlobalDefinitions.phoenix) //decimator val weaponA = Tool(GlobalDefinitions.phoenix) //decimator
val projectileA = weaponA.Projectile val projectileA = weaponA.Projectile
@ -128,7 +128,7 @@ class DamageableTest extends Specification {
"permit damaging friendly targets, even those not designated for friendly fire, if the target is hacked" in { "permit damaging friendly targets, even those not designated for friendly fire, if the target is hacked" in {
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute))
player2.GUID = PlanetSideGUID(1) player2.GUID = PlanetSideGUID(1)
val target = new Terminal(new TerminalDefinition(0) { val target = new Terminal(new TerminalDefinition(0) {
Damageable = true Damageable = true
@ -240,7 +240,7 @@ class DamageableTest extends Specification {
"permit jamming friendly targets if the target is hacked" in { "permit jamming friendly targets if the target is hacked" in {
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute))
player2.GUID = PlanetSideGUID(1) player2.GUID = PlanetSideGUID(1)
val target = new SensorDeployable(GlobalDefinitions.motionalarmsensor) val target = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
target.Faction = player1.Faction target.Faction = player1.Faction
@ -285,7 +285,7 @@ class DamageableEntityDamageTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val gen = Generator(GlobalDefinitions.generator) //guid=2 val gen = Generator(GlobalDefinitions.generator) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
guid.register(building, 1) guid.register(building, 1)
guid.register(gen, 2) guid.register(gen, 2)
guid.register(player1, 3) guid.register(player1, 3)
@ -355,7 +355,7 @@ class DamageableEntityDestroyedTest extends ActorTest {
mech.Position = Vector3(1, 0, 0) mech.Position = Vector3(1, 0, 0)
mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control") mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
@ -426,7 +426,7 @@ class DamageableEntityNotDestroyTwice extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val gen = Generator(GlobalDefinitions.generator) //guid=2 val gen = Generator(GlobalDefinitions.generator) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(gen, 2) guid.register(gen, 2)
@ -499,7 +499,7 @@ class DamageableAmenityTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 val term = Terminal(GlobalDefinitions.order_terminal) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(term, 2) guid.register(term, 2)
@ -589,11 +589,11 @@ class DamageableMountableDamageTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(mech, 2) guid.register(mech, 2)
@ -683,13 +683,13 @@ class DamageableMountableDestroyTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -784,13 +784,13 @@ class DamageableWeaponTurretDamageTest extends ActorTest {
turret.Zone = zone turret.Zone = zone
turret.Position = Vector3(1, 0, 0) turret.Position = Vector3(1, 0, 0)
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -882,13 +882,13 @@ class DamageableWeaponTurretJammerTest extends ActorTest {
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -982,13 +982,13 @@ class DamageableWeaponTurretDestructionTest extends ActorTest {
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -1133,13 +1133,13 @@ class DamageableVehicleDamageTest extends ActorTest {
atv.Position = Vector3(1, 0, 0) atv.Position = Vector3(1, 0, 0)
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 0, 0) player1.Position = Vector3(2, 0, 0)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -1242,18 +1242,18 @@ class DamageableVehicleDamageMountedTest extends ActorTest {
atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control") atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 0, 0) player1.Position = Vector3(2, 0, 0)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
val player3 = val player3 =
Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=10 Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=10
player3.Spawn() player3.Spawn()
val player3Probe = TestProbe() val player3Probe = TestProbe()
player3.Actor = player3Probe.ref player3.Actor = player3Probe.ref
@ -1387,18 +1387,18 @@ class DamageableVehicleJammeringMountedTest extends ActorTest {
lodestar.Position = Vector3(1, 0, 0) lodestar.Position = Vector3(1, 0, 0)
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=7
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 0, 0) player1.Position = Vector3(2, 0, 0)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=8
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
val player3 = val player3 =
Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=9
player3.Spawn() player3.Spawn()
val player3Probe = TestProbe() val player3Probe = TestProbe()
player3.Actor = player3Probe.ref player3.Actor = player3Probe.ref
@ -1499,13 +1499,13 @@ class DamageableVehicleDestroyTest extends ActorTest {
val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] //guid=4 & 5 val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] //guid=4 & 5
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 0, 0) player1.Position = Vector3(2, 0, 0)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
@ -1595,18 +1595,18 @@ class DamageableVehicleDestroyMountedTest extends ActorTest {
lodestar.Position = Vector3(1, 0, 0) lodestar.Position = Vector3(1, 0, 0)
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=7
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 0, 0) player1.Position = Vector3(2, 0, 0)
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=8
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
player2.Actor = player2Probe.ref player2.Actor = player2Probe.ref
val player3 = val player3 =
Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 Player(Avatar(0, "TestCharacter3", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=9
player3.Spawn() player3.Spawn()
val player3Probe = TestProbe() val player3Probe = TestProbe()
player3.Actor = player3Probe.ref player3.Actor = player3Probe.ref

View file

@ -320,10 +320,10 @@ class ExplosiveDeployableJammerTest extends ActorTest {
val j_mine = Deployables.Make(DeployedItem.jammer_mine)().asInstanceOf[ExplosiveDeployable] //guid=1 val j_mine = Deployables.Make(DeployedItem.jammer_mine)().asInstanceOf[ExplosiveDeployable] //guid=1
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5 val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5
guid.register(j_mine, 1) guid.register(j_mine, 1)
@ -420,10 +420,10 @@ class ExplosiveDeployableJammerExplodeTest extends ActorTest {
val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2 val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5 val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5
guid.register(h_mine, 2) guid.register(h_mine, 2)
@ -531,10 +531,10 @@ class ExplosiveDeployableDestructionTest extends ActorTest {
val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2 val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player2.Spawn() player2.Spawn()
val weapon = Tool(GlobalDefinitions.suppressor) //guid=5 val weapon = Tool(GlobalDefinitions.suppressor) //guid=5
guid.register(h_mine, 2) guid.register(h_mine, 2)
@ -673,7 +673,7 @@ class TurretControlMountTest extends ActorTest {
obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test") obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test")
assert(obj.Seats(0).occupant.isEmpty) assert(obj.Seats(0).occupant.isEmpty)
val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.Actor ! Mountable.TryMount(player1, 1) obj.Actor ! Mountable.TryMount(player1, 1)
val reply1a = receiveOne(200 milliseconds) val reply1a = receiveOne(200 milliseconds)
assert(reply1a.isInstanceOf[Mountable.MountMessages]) assert(reply1a.isInstanceOf[Mountable.MountMessages])
@ -693,7 +693,7 @@ class TurretControlBlockMountTest extends ActorTest {
obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test") obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test")
assert(obj.Seats(0).occupant.isEmpty) assert(obj.Seats(0).occupant.isEmpty)
val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.Actor ! Mountable.TryMount(player1, 1) obj.Actor ! Mountable.TryMount(player1, 1)
val reply1a = receiveOne(200 milliseconds) val reply1a = receiveOne(200 milliseconds)
assert(reply1a.isInstanceOf[Mountable.MountMessages]) assert(reply1a.isInstanceOf[Mountable.MountMessages])
@ -702,7 +702,7 @@ class TurretControlBlockMountTest extends ActorTest {
assert(reply1b.response.isInstanceOf[Mountable.CanMount]) assert(reply1b.response.isInstanceOf[Mountable.CanMount])
assert(obj.Seats(0).occupant.contains(player1)) assert(obj.Seats(0).occupant.contains(player1))
val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.Actor ! Mountable.TryMount(player2, 1) obj.Actor ! Mountable.TryMount(player2, 1)
val reply2a = receiveOne(200 milliseconds) val reply2a = receiveOne(200 milliseconds)
assert(reply2a.isInstanceOf[Mountable.MountMessages]) assert(reply2a.isInstanceOf[Mountable.MountMessages])
@ -721,7 +721,7 @@ class TurretControlBlockBetrayalMountTest extends ActorTest {
obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test") obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test")
assert(obj.Seats(0).occupant.isEmpty) assert(obj.Seats(0).occupant.isEmpty)
val player = Player(Avatar(0, "test", PlanetSideEmpire.VS, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.VS, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.Actor ! Mountable.TryMount(player, 1) obj.Actor ! Mountable.TryMount(player, 1)
val reply1a = receiveOne(200 milliseconds) val reply1a = receiveOne(200 milliseconds)
assert(reply1a.isInstanceOf[Mountable.MountMessages]) assert(reply1a.isInstanceOf[Mountable.MountMessages])
@ -741,8 +741,9 @@ class TurretControlDismountTest extends ActorTest {
obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test") obj.Actor = system.actorOf(Props(classOf[TurretControl], obj), s"${obj.Definition.Name}_test")
assert(obj.Seats(0).occupant.isEmpty) assert(obj.Seats(0).occupant.isEmpty)
val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.Actor ! Mountable.TryMount(player, 1) obj.Actor ! Mountable.TryMount(player, 1)
val reply1a = receiveOne(200 milliseconds) val reply1a = receiveOne(200 milliseconds)
assert(reply1a.isInstanceOf[Mountable.MountMessages]) assert(reply1a.isInstanceOf[Mountable.MountMessages])
val reply1b = reply1a.asInstanceOf[Mountable.MountMessages] val reply1b = reply1a.asInstanceOf[Mountable.MountMessages]
@ -775,7 +776,7 @@ class TurretControlBetrayalMountTest extends ActorTest {
val probe = new TestProbe(system) val probe = new TestProbe(system)
assert(obj.Seats(0).occupant.isEmpty) assert(obj.Seats(0).occupant.isEmpty)
val player = Player(Avatar(0, "test", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute))
assert(player.Faction != obj.Faction) assert(player.Faction != obj.Faction)
obj.Actor.tell(Mountable.TryMount(player, 1), probe.ref) obj.Actor.tell(Mountable.TryMount(player, 1), probe.ref)
val reply1a = probe.receiveOne(200 milliseconds) val reply1a = probe.receiveOne(200 milliseconds)

View file

@ -20,7 +20,7 @@ import org.specs2.mutable.Specification
import scala.concurrent.duration._ import scala.concurrent.duration._
class DoorTest extends Specification { class DoorTest extends Specification {
val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
"Door" should { "Door" should {
"construct" in { "construct" in {
@ -148,7 +148,7 @@ object DoorControlTest {
GlobalDefinitions.building GlobalDefinitions.building
) )
door.Owner.Faction = faction door.Owner.Faction = faction
val player = Player(Avatar(0, "test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", faction, CharacterSex.Male, 0, CharacterVoice.Mute))
guid.register(player, 2) guid.register(player, 2)
(player, door) (player, door)
} }

View file

@ -100,7 +100,7 @@ class FacilityTurretControl1Test extends ActorTest {
} }
class FacilityTurretControl2Test extends ActorTest { class FacilityTurretControl2Test extends ActorTest {
val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = FacilityTurret(GlobalDefinitions.manned_turret) val obj = FacilityTurret(GlobalDefinitions.manned_turret)
obj.GUID = PlanetSideGUID(1) obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control") obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control")
@ -127,7 +127,7 @@ class FacilityTurretControl2Test extends ActorTest {
} }
class FacilityTurretControl3Test extends ActorTest { class FacilityTurretControl3Test extends ActorTest {
val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = FacilityTurret(GlobalDefinitions.manned_turret) val obj = FacilityTurret(GlobalDefinitions.manned_turret)
obj.GUID = PlanetSideGUID(1) obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control") obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control")
@ -153,7 +153,7 @@ class FacilityTurretControl3Test extends ActorTest {
} }
class FacilityTurretControl4Test extends ActorTest { class FacilityTurretControl4Test extends ActorTest {
val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = FacilityTurret(GlobalDefinitions.vanu_sentry_turret) val obj = FacilityTurret(GlobalDefinitions.vanu_sentry_turret)
obj.GUID = PlanetSideGUID(1) obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control") obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control")
@ -201,7 +201,7 @@ class FacilityTurretControlRestorationTest extends ActorTest {
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()

View file

@ -66,7 +66,7 @@ class GeneratorControlDamageTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
@ -149,7 +149,7 @@ class GeneratorControlCriticalTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
@ -234,7 +234,7 @@ class GeneratorControlDestroyedTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
player1.Actor = TestProbe().ref player1.Actor = TestProbe().ref
@ -343,13 +343,13 @@ class GeneratorControlKillsTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
val player1Probe = TestProbe() val player1Probe = TestProbe()
player1.Actor = player1Probe.ref player1.Actor = player1Probe.ref
val player2 = val player2 =
Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Female, 1, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Female, 1, CharacterVoice.Mute)) //guid=4
player2.Position = Vector3(25, 0, 0) //>14m from generator; lives player2.Position = Vector3(25, 0, 0) //>14m from generator; lives
player2.Spawn() player2.Spawn()
val player2Probe = TestProbe() val player2Probe = TestProbe()
@ -481,7 +481,7 @@ class GeneratorControlNotDestroyTwice extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val gen = Generator(GeneratorTest.generator_definition) //guid=2 val gen = Generator(GeneratorTest.generator_definition) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(gen, 2) guid.register(gen, 2)
@ -572,7 +572,7 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
val player1Probe = TestProbe() val player1Probe = TestProbe()
@ -671,7 +671,7 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
val player1Probe = TestProbe() val player1Probe = TestProbe()
@ -774,7 +774,7 @@ class GeneratorControlRepairPastRestorePoint extends ActorTest {
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Position = Vector3(14, 0, 0) //<14m from generator; dies
player1.Spawn() player1.Spawn()
val player1Probe = TestProbe() val player1Probe = TestProbe()

View file

@ -98,6 +98,6 @@ object IFFLockControlTest {
GlobalDefinitions.building GlobalDefinitions.building
) )
lock.Owner.Faction = faction lock.Owner.Faction = faction
(Player(Avatar(0, "test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), lock) (Player(Avatar(0, "test", faction, CharacterSex.Male, 0, CharacterVoice.Mute)), lock)
} }
} }

View file

@ -3,13 +3,13 @@ package objects
import net.psforever.objects._ import net.psforever.objects._
import net.psforever.objects.loadouts._ import net.psforever.objects.loadouts._
import net.psforever.types.{CharacterGender, CharacterVoice, ExoSuitType, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, ExoSuitType, PlanetSideEmpire}
import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.GlobalDefinitions._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import org.specs2.mutable._ import org.specs2.mutable._
class LoadoutTest extends Specification { class LoadoutTest extends Specification {
val avatar = Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) val avatar = Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterSex.Female, 41, CharacterVoice.Voice1)
def CreatePlayer(): Player = { def CreatePlayer(): Player = {
new Player(avatar) { new Player(avatar) {

View file

@ -8,7 +8,7 @@ import net.psforever.objects.avatar.Avatar
import net.psforever.objects.definition.ObjectDefinition import net.psforever.objects.definition.ObjectDefinition
import net.psforever.objects.serverobject.mount._ import net.psforever.objects.serverobject.mount._
import net.psforever.objects.serverobject.PlanetSideServerObject import net.psforever.objects.serverobject.PlanetSideServerObject
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, PlanetSideGUID} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire, PlanetSideGUID}
import scala.concurrent.duration.Duration import scala.concurrent.duration.Duration
@ -25,7 +25,7 @@ class MountableControl1Test extends ActorTest {
class MountableControl2Test extends ActorTest { class MountableControl2Test extends ActorTest {
"MountableControl" should { "MountableControl" should {
"let a player mount" in { "let a player mount" in {
val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = new MountableTest.MountableTestObject val obj = new MountableTest.MountableTestObject
obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable")
val msg = Mountable.TryMount(player, 0) val msg = Mountable.TryMount(player, 0)
@ -46,8 +46,8 @@ class MountableControl2Test extends ActorTest {
class MountableControl3Test extends ActorTest { class MountableControl3Test extends ActorTest {
"MountableControl" should { "MountableControl" should {
"block a player from mounting" in { "block a player from mounting" in {
val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = new MountableTest.MountableTestObject val obj = new MountableTest.MountableTestObject
obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable")
obj.Actor ! Mountable.TryMount(player1, 0) obj.Actor ! Mountable.TryMount(player1, 0)

View file

@ -26,9 +26,9 @@ import scala.concurrent.duration._
class PlayerControlHealTest extends ActorTest { class PlayerControlHealTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val zone = new Zone("test", new ZoneMap("test"), 0) { val zone = new Zone("test", new ZoneMap("test"), 0) {
@ -111,7 +111,7 @@ class PlayerControlHealTest extends ActorTest {
} }
class PlayerControlHealSelfTest extends ActorTest { class PlayerControlHealSelfTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val zone = new Zone("test", new ZoneMap("test"), 0) { val zone = new Zone("test", new ZoneMap("test"), 0) {
@ -186,9 +186,9 @@ class PlayerControlHealSelfTest extends ActorTest {
class PlayerControlRepairTest extends ActorTest { class PlayerControlRepairTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val zone = new Zone("test", new ZoneMap("test"), 0) { val zone = new Zone("test", new ZoneMap("test"), 0) {
@ -282,7 +282,7 @@ class PlayerControlRepairTest extends ActorTest {
class PlayerControlRepairSelfTest extends ActorTest { class PlayerControlRepairSelfTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val zone = new Zone("test", new ZoneMap("test"), 0) { val zone = new Zone("test", new ZoneMap("test"), 0) {
@ -357,9 +357,9 @@ class PlayerControlRepairSelfTest extends ActorTest {
class PlayerControlDamageTest extends ActorTest { class PlayerControlDamageTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val activityProbe = TestProbe() val activityProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
@ -462,9 +462,9 @@ class PlayerControlDamageTest extends ActorTest {
class PlayerControlDeathStandingTest extends ActorTest { class PlayerControlDeathStandingTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val activityProbe = TestProbe() val activityProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
@ -600,9 +600,9 @@ class PlayerControlDeathStandingTest extends ActorTest {
class PlayerControlDeathSeatedTest extends ActorTest { class PlayerControlDeathSeatedTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val player2 = val player2 =
Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 Player(Avatar(1, "TestCharacter2", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=2
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val activityProbe = TestProbe() val activityProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
@ -756,7 +756,7 @@ class PlayerControlDeathSeatedTest extends ActorTest {
class PlayerControlInteractWithWaterTest extends ActorTest { class PlayerControlInteractWithWaterTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
@ -808,7 +808,7 @@ class PlayerControlInteractWithWaterTest extends ActorTest {
class PlayerControlStopInteractWithWaterTest extends ActorTest { class PlayerControlStopInteractWithWaterTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
@ -871,7 +871,7 @@ class PlayerControlStopInteractWithWaterTest extends ActorTest {
class PlayerControlInteractWithLavaTest extends ActorTest { class PlayerControlInteractWithLavaTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Lava, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Lava, DeepSquare(-1, 10, 10, 0, 0))
@ -931,7 +931,7 @@ class PlayerControlInteractWithLavaTest extends ActorTest {
class PlayerControlInteractWithDeathTest extends ActorTest { class PlayerControlInteractWithDeathTest extends ActorTest {
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0))

View file

@ -6,6 +6,7 @@ import net.psforever.objects._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.definition.{SimpleItemDefinition, SpecialExoSuitDefinition} import net.psforever.objects.definition.{SimpleItemDefinition, SpecialExoSuitDefinition}
import net.psforever.objects.equipment.EquipmentSize import net.psforever.objects.equipment.EquipmentSize
import net.psforever.objects.inventory.InventoryItem
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{PlanetSideGUID, _} import net.psforever.types.{PlanetSideGUID, _}
import org.specs2.mutable._ import org.specs2.mutable._
@ -16,7 +17,7 @@ class PlayerTest extends Specification {
def TestPlayer( def TestPlayer(
name: String, name: String,
faction: PlanetSideEmpire.Value, faction: PlanetSideEmpire.Value,
sex: CharacterGender.Value, sex: CharacterSex,
head: Int, head: Int,
voice: CharacterVoice.Value voice: CharacterVoice.Value
): Player = { ): Player = {
@ -25,7 +26,7 @@ class PlayerTest extends Specification {
"Player" should { "Player" should {
"construct" in { "construct" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.isAlive mustEqual false obj.isAlive mustEqual false
obj.FacingYawUpper mustEqual 0 obj.FacingYawUpper mustEqual 0
obj.Jumping mustEqual false obj.Jumping mustEqual false
@ -43,7 +44,7 @@ class PlayerTest extends Specification {
} }
"(re)spawn" in { "(re)spawn" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.isAlive mustEqual false obj.isAlive mustEqual false
obj.Health mustEqual 0 obj.Health mustEqual 0
obj.Armor mustEqual 0 obj.Armor mustEqual 0
@ -56,7 +57,7 @@ class PlayerTest extends Specification {
} }
"will not (re)spawn if not dead" in { "will not (re)spawn if not dead" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Spawn() obj.Spawn()
obj.Health mustEqual 100 obj.Health mustEqual 100
obj.Armor mustEqual 50 obj.Armor mustEqual 50
@ -72,7 +73,7 @@ class PlayerTest extends Specification {
} }
"can die" in { "can die" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Spawn() obj.Spawn()
obj.Armor = 35 //50 -> 35 obj.Armor = 35 //50 -> 35
obj.isAlive mustEqual true obj.isAlive mustEqual true
@ -85,7 +86,7 @@ class PlayerTest extends Specification {
} }
"can not become a backpack if alive" in { "can not become a backpack if alive" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Spawn() obj.Spawn()
obj.isAlive mustEqual true obj.isAlive mustEqual true
obj.isBackpack mustEqual false obj.isBackpack mustEqual false
@ -95,7 +96,7 @@ class PlayerTest extends Specification {
} }
"can become a backpack" in { "can become a backpack" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.isAlive mustEqual false obj.isAlive mustEqual false
obj.isBackpack mustEqual false obj.isBackpack mustEqual false
obj.Release obj.Release
@ -104,7 +105,7 @@ class PlayerTest extends Specification {
} }
"set new maximum values (health, stamina)" in { "set new maximum values (health, stamina)" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.MaxHealth mustEqual 100 obj.MaxHealth mustEqual 100
obj.MaxHealth = 123 obj.MaxHealth = 123
obj.MaxHealth mustEqual 123 obj.MaxHealth mustEqual 123
@ -114,7 +115,7 @@ class PlayerTest extends Specification {
} }
// "set new values (health, armor, stamina) but only when alive" in { // "set new values (health, armor, stamina) but only when alive" in {
// val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) // val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
// obj.Health = 23 // obj.Health = 23
// obj.Armor = 34 // obj.Armor = 34
// obj.Stamina = 45 // obj.Stamina = 45
@ -135,7 +136,7 @@ class PlayerTest extends Specification {
// } // }
"has visible slots" in { "has visible slots" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.VisibleSlots mustEqual Set(0, 2, 4) //Standard obj.VisibleSlots mustEqual Set(0, 2, 4) //Standard
obj.ExoSuit = ExoSuitType.Agile obj.ExoSuit = ExoSuitType.Agile
obj.VisibleSlots mustEqual Set(0, 1, 2, 4) obj.VisibleSlots mustEqual Set(0, 1, 2, 4)
@ -148,7 +149,7 @@ class PlayerTest extends Specification {
} }
"init (Standard Exo-Suit)" in { "init (Standard Exo-Suit)" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.ExoSuit mustEqual ExoSuitType.Standard obj.ExoSuit mustEqual ExoSuitType.Standard
obj.Slot(0).Size mustEqual EquipmentSize.Pistol obj.Slot(0).Size mustEqual EquipmentSize.Pistol
obj.Slot(1).Size mustEqual EquipmentSize.Blocked obj.Slot(1).Size mustEqual EquipmentSize.Blocked
@ -162,7 +163,7 @@ class PlayerTest extends Specification {
"draw equipped holsters only" in { "draw equipped holsters only" in {
val wep = SimpleItem(SimpleItemDefinition(149)) val wep = SimpleItem(SimpleItemDefinition(149))
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(1).Size = EquipmentSize.Pistol obj.Slot(1).Size = EquipmentSize.Pistol
obj.Slot(1).Equipment = wep obj.Slot(1).Equipment = wep
obj.DrawnSlot mustEqual Player.HandsDownSlot obj.DrawnSlot mustEqual Player.HandsDownSlot
@ -175,7 +176,7 @@ class PlayerTest extends Specification {
"remember the last drawn holster" in { "remember the last drawn holster" in {
val wep1 = SimpleItem(SimpleItemDefinition(149)) val wep1 = SimpleItem(SimpleItemDefinition(149))
val wep2 = SimpleItem(SimpleItemDefinition(149)) val wep2 = SimpleItem(SimpleItemDefinition(149))
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(0).Size = EquipmentSize.Pistol obj.Slot(0).Size = EquipmentSize.Pistol
obj.Slot(0).Equipment = wep1 obj.Slot(0).Equipment = wep1
obj.Slot(1).Size = EquipmentSize.Pistol obj.Slot(1).Size = EquipmentSize.Pistol
@ -214,7 +215,7 @@ class PlayerTest extends Specification {
"hold something in their free hand" in { "hold something in their free hand" in {
val wep = SimpleItem(SimpleItemDefinition(149)) val wep = SimpleItem(SimpleItemDefinition(149))
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(Player.FreeHandSlot).Equipment = wep obj.Slot(Player.FreeHandSlot).Equipment = wep
obj.Slot(Player.FreeHandSlot).Equipment.get.Definition.ObjectId mustEqual 149 obj.Slot(Player.FreeHandSlot).Equipment.get.Definition.ObjectId mustEqual 149
@ -222,14 +223,14 @@ class PlayerTest extends Specification {
"provide an invalid hand that can not hold anything" in { "provide an invalid hand that can not hold anything" in {
val wep = SimpleItem(SimpleItemDefinition(149)) val wep = SimpleItem(SimpleItemDefinition(149))
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(-1).Equipment = wep obj.Slot(-1).Equipment = wep
obj.Slot(-1).Equipment.isEmpty mustEqual true obj.Slot(-1).Equipment.isEmpty mustEqual true
} }
"search for the smallest available slot in which to store equipment" in { "search for the smallest available slot in which to store equipment" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Inventory.Resize(3, 3) //fits one item obj.Inventory.Resize(3, 3) //fits one item
obj.Fit(Tool(GlobalDefinitions.beamer)).contains(0) mustEqual true obj.Fit(Tool(GlobalDefinitions.beamer)).contains(0) mustEqual true
@ -247,7 +248,7 @@ class PlayerTest extends Specification {
} }
"can use their free hand to hold things" in { "can use their free hand to hold things" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val ammo = AmmoBox(GlobalDefinitions.bullet_9mm) val ammo = AmmoBox(GlobalDefinitions.bullet_9mm)
obj.FreeHand.Equipment.isEmpty mustEqual true obj.FreeHand.Equipment.isEmpty mustEqual true
@ -256,12 +257,12 @@ class PlayerTest extends Specification {
} }
"can access the player's locker-space" in { "can access the player's locker-space" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(5).Equipment.get.isInstanceOf[LockerEquipment] mustEqual true obj.Slot(5).Equipment.get.isInstanceOf[LockerEquipment] mustEqual true
} }
"can find equipment" in { "can find equipment" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Slot(0).Equipment = { obj.Slot(0).Equipment = {
val item = Tool(beamer) val item = Tool(beamer)
item.GUID = PlanetSideGUID(1) item.GUID = PlanetSideGUID(1)
@ -297,7 +298,7 @@ class PlayerTest extends Specification {
} }
"does equipment collision checking (are we already holding something there?)" in { "does equipment collision checking (are we already holding something there?)" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val item1 = Tool(beamer) val item1 = Tool(beamer)
val item2 = Kit(medkit) val item2 = Kit(medkit)
val item3 = AmmoBox(GlobalDefinitions.bullet_9mm) val item3 = AmmoBox(GlobalDefinitions.bullet_9mm)
@ -306,7 +307,7 @@ class PlayerTest extends Specification {
obj.FreeHand.Equipment = item3 obj.FreeHand.Equipment = item3
obj.Collisions(0, 1, 1) match { obj.Collisions(0, 1, 1) match {
case Success(List(item)) => case Success(List(item: InventoryItem)) =>
item.obj mustEqual item1 item.obj mustEqual item1
item.start mustEqual 0 item.start mustEqual 0
case _ => case _ =>
@ -320,7 +321,7 @@ class PlayerTest extends Specification {
} //holsters, nothing } //holsters, nothing
obj.Collisions(6, 1, 1) match { obj.Collisions(6, 1, 1) match {
case Success(List(item)) => case Success(List(item: InventoryItem)) =>
item.obj mustEqual item2 item.obj mustEqual item2
item.start mustEqual 6 item.start mustEqual 6
case _ => case _ =>
@ -328,16 +329,17 @@ class PlayerTest extends Specification {
} //inventory } //inventory
obj.Collisions(Player.FreeHandSlot, 1, 1) match { obj.Collisions(Player.FreeHandSlot, 1, 1) match {
case Success(List(item)) => case Success(List(item: InventoryItem)) =>
item.obj mustEqual item3 item.obj mustEqual item3
item.start mustEqual Player.FreeHandSlot item.start mustEqual Player.FreeHandSlot
case _ => case _ =>
ko ko
} //free hand } //free hand
ok
} }
"mount in a vehicle" in { "mount in a vehicle" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.VehicleSeated.isEmpty mustEqual true obj.VehicleSeated.isEmpty mustEqual true
obj.VehicleSeated = PlanetSideGUID(65) obj.VehicleSeated = PlanetSideGUID(65)
obj.VehicleSeated.contains(PlanetSideGUID(65)) mustEqual true obj.VehicleSeated.contains(PlanetSideGUID(65)) mustEqual true
@ -346,7 +348,7 @@ class PlayerTest extends Specification {
} }
"own in a vehicle" in { "own in a vehicle" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.avatar.vehicle.isEmpty mustEqual true obj.avatar.vehicle.isEmpty mustEqual true
obj.avatar.vehicle = Some(PlanetSideGUID(65)) obj.avatar.vehicle = Some(PlanetSideGUID(65))
obj.avatar.vehicle.contains(PlanetSideGUID(65)) mustEqual true obj.avatar.vehicle.contains(PlanetSideGUID(65)) mustEqual true
@ -355,21 +357,21 @@ class PlayerTest extends Specification {
} }
"remember what zone he is in" in { "remember what zone he is in" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.Continent mustEqual "home2" obj.Continent mustEqual "home2"
obj.Continent = "ugd01" obj.Continent = "ugd01"
obj.Continent mustEqual "ugd01" obj.Continent mustEqual "ugd01"
} }
"special is typically normal and can not be changed from normal" in { "special is typically normal and can not be changed from normal" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
} }
"a TR MAX can change its special to Overdrive or Anchored" in { "a TR MAX can change its special to Overdrive or Anchored" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.ExoSuit = ExoSuitType.MAX obj.ExoSuit = ExoSuitType.MAX
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
@ -384,7 +386,7 @@ class PlayerTest extends Specification {
} }
"an NC MAX can change its special to Shielded" in { "an NC MAX can change its special to Shielded" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.ExoSuit = ExoSuitType.MAX obj.ExoSuit = ExoSuitType.MAX
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
@ -394,13 +396,13 @@ class PlayerTest extends Specification {
} }
"one faction can not use the other's specials" in { "one faction can not use the other's specials" in {
val objtr = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val objtr = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
objtr.ExoSuit = ExoSuitType.MAX objtr.ExoSuit = ExoSuitType.MAX
objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
objtr.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded objtr.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
val objnc = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Voice5) val objnc = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterSex.Male, 0, CharacterVoice.Voice5)
objnc.ExoSuit = ExoSuitType.MAX objnc.ExoSuit = ExoSuitType.MAX
objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
objnc.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive objnc.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive
@ -410,7 +412,7 @@ class PlayerTest extends Specification {
} }
"changing exo-suit type resets the special to Normal (and changing back does not revert it again)" in { "changing exo-suit type resets the special to Normal (and changing back does not revert it again)" in {
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
obj.ExoSuit = ExoSuitType.MAX obj.ExoSuit = ExoSuitType.MAX
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored

View file

@ -13,7 +13,7 @@ import net.psforever.types.{PlanetSideGUID, _}
import org.specs2.mutable.Specification import org.specs2.mutable.Specification
class ProjectileTest extends Specification { class ProjectileTest extends Specification {
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val fury = Vehicle(GlobalDefinitions.fury) val fury = Vehicle(GlobalDefinitions.fury)
"Range" should { "Range" should {
@ -209,7 +209,7 @@ class ProjectileTest extends Specification {
"contain timely information" in { "contain timely information" in {
val obj = val obj =
Player(Avatar(0, "TestCharacter-alt", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) Player(Avatar(0, "TestCharacter-alt", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
obj.VehicleSeated = Some(PlanetSideGUID(1)) obj.VehicleSeated = Some(PlanetSideGUID(1))
obj.Position = Vector3(1.2f, 3.4f, 5.6f) obj.Position = Vector3(1.2f, 3.4f, 5.6f)
obj.Orientation = Vector3(2.1f, 4.3f, 6.5f) obj.Orientation = Vector3(2.1f, 4.3f, 6.5f)
@ -333,7 +333,7 @@ class ProjectileTest extends Specification {
"Projectile DamageInteraction" should { //TODO wrong place for this test? "Projectile DamageInteraction" should { //TODO wrong place for this test?
val beamer_wep = Tool(GlobalDefinitions.beamer) val beamer_wep = Tool(GlobalDefinitions.beamer)
val p_source = PlayerSource(player) val p_source = PlayerSource(player)
val player2 = Player(Avatar(0, "TestTarget", PlanetSideEmpire.NC, CharacterGender.Female, 1, CharacterVoice.Mute)) val player2 = Player(Avatar(0, "TestTarget", PlanetSideEmpire.NC, CharacterSex.Female, 1, CharacterVoice.Mute))
val p2_source = PlayerSource(player2) val p2_source = PlayerSource(player2)
val projectile = Projectile( val projectile = Projectile(
beamer_wep.Projectile, beamer_wep.Projectile,

View file

@ -37,7 +37,7 @@ class RepairableEntityRepairTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val gen = Generator(GlobalDefinitions.generator) //guid=2 val gen = Generator(GlobalDefinitions.generator) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(gen, 2) guid.register(gen, 2)
@ -109,7 +109,7 @@ class RepairableEntityNotRepairTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val gen = Generator(GlobalDefinitions.generator) //guid=2 val gen = Generator(GlobalDefinitions.generator) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(gen, 2) guid.register(gen, 2)
@ -150,7 +150,7 @@ class RepairableAmenityTest extends ActorTest {
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 val term = Terminal(GlobalDefinitions.order_terminal) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
guid.register(building, 1) guid.register(building, 1)
guid.register(term, 2) guid.register(term, 2)
@ -251,7 +251,7 @@ class RepairableTurretWeapon extends ActorTest {
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=3
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
@ -337,7 +337,7 @@ class RepairableVehicleRepair extends ActorTest {
val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()
@ -410,7 +410,7 @@ class RepairableVehicleRestoration extends ActorTest {
val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool]
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=4
player1.Spawn() player1.Spawn()
player1.Position = Vector3(2, 2, 2) player1.Position = Vector3(2, 2, 2)
val player1Probe = TestProbe() val player1Probe = TestProbe()

View file

@ -154,7 +154,7 @@ class ResourceSiloControlUseTest extends FreedContextActorTest {
expectNoMessage(1000 milliseconds) expectNoMessage(1000 milliseconds)
var buildingMap = new TrieMap[Int, Building]() var buildingMap = new TrieMap[Int, Building]()
val guid = new NumberPoolHub(new MaxNumberSource(max = 10)) val guid = new NumberPoolHub(new MaxNumberSource(max = 10))
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val ant = Vehicle(GlobalDefinitions.ant) val ant = Vehicle(GlobalDefinitions.ant)
val silo = new ResourceSilo() val silo = new ResourceSilo()
val catchall = new TestProbe(system).ref val catchall = new TestProbe(system).ref
@ -427,7 +427,7 @@ class ResourceSiloControlNoUpdateTest extends ActorTest {
object ResourceSiloTest { object ResourceSiloTest {
val player = Player( val player = Player(
new Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) new Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
) )
class ProbedAvatarService(probe: TestProbe) extends Actor { class ProbedAvatarService(probe: TestProbe) extends Actor {

View file

@ -60,7 +60,7 @@ class UtilityTest extends Specification {
val veh = Vehicle(GlobalDefinitions.quadstealth) val veh = Vehicle(GlobalDefinitions.quadstealth)
veh.Faction = PlanetSideEmpire.TR veh.Faction = PlanetSideEmpire.TR
val obj = Utility(UtilityType.teleportpad_terminal, UtilityTest.vehicle) val obj = Utility(UtilityType.teleportpad_terminal, UtilityTest.vehicle)
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
veh.GUID = PlanetSideGUID(101) veh.GUID = PlanetSideGUID(101)
obj().Owner = veh //hack obj().Owner = veh //hack
obj().GUID = PlanetSideGUID(1) obj().GUID = PlanetSideGUID(1)

View file

@ -330,25 +330,6 @@ class VehicleControlMountingBlockedExosuitTest extends ActorTest {
override def VehicleEvents: ActorRef = catchall override def VehicleEvents: ActorRef = catchall
override def Activity: ActorRef = catchall override def Activity: ActorRef = catchall
} }
def checkCanNotMount(probe: TestProbe, id: String): Unit = {
val reply = probe.receiveOne(Duration.create(250, "ms"))
reply match {
case msg: Mountable.MountMessages =>
assert(msg.response.isInstanceOf[Mountable.CanNotMount], s"test $id")
case _ =>
assert(false, s"test $id-b")
}
}
def checkCanMount(probe: TestProbe, id: String): Unit = {
val reply = probe.receiveOne(Duration.create(250, "ms"))
reply match {
case msg: Mountable.MountMessages =>
assert(msg.response.isInstanceOf[Mountable.CanMount], s" - test: $id")
case _ =>
assert(false, s" - test: $id-b")
}
}
val vehicle = Vehicle(GlobalDefinitions.apc_tr) val vehicle = Vehicle(GlobalDefinitions.apc_tr)
vehicle.Faction = PlanetSideEmpire.TR vehicle.Faction = PlanetSideEmpire.TR
vehicle.GUID = PlanetSideGUID(10) vehicle.GUID = PlanetSideGUID(10)
@ -379,28 +360,28 @@ class VehicleControlMountingBlockedExosuitTest extends ActorTest {
val probe = new TestProbe(system) val probe = new TestProbe(system)
// disallow // disallow
vehicle.Actor.tell(Mountable.TryMount(player2, 1), probe.ref) //MAX in non-Max mount vehicle.Actor.tell(Mountable.TryMount(player2, 1), probe.ref) //MAX in non-Max mount
checkCanNotMount(probe, "MAX in non-Max mount 1") VehicleControlTest.checkCanNotMount(probe, "MAX in non-Max mount 1")
vehicle.Actor.tell(Mountable.TryMount(player2, 2), probe.ref) //MAX in non-MAX mount vehicle.Actor.tell(Mountable.TryMount(player2, 2), probe.ref) //MAX in non-MAX mount
checkCanNotMount(probe, "MAX in non-MAX mount 2") VehicleControlTest.checkCanNotMount(probe, "MAX in non-MAX mount 2")
vehicle.Actor.tell(Mountable.TryMount(player1, 11), probe.ref) //Reinforced in MAX-only mount vehicle.Actor.tell(Mountable.TryMount(player1, 11), probe.ref) //Reinforced in MAX-only mount
checkCanNotMount(probe, "Reinforced in MAX-only mount") VehicleControlTest.checkCanNotMount(probe, "Reinforced in MAX-only mount")
vehicle.Actor.tell(Mountable.TryMount(player3, 11), probe.ref) //Agile in MAX-only mount vehicle.Actor.tell(Mountable.TryMount(player3, 11), probe.ref) //Agile in MAX-only mount
checkCanNotMount(probe, "Agile in MAX-only mount") VehicleControlTest.checkCanNotMount(probe, "Agile in MAX-only mount")
//allow //allow
vehicle.Actor.tell(Mountable.TryMount(player1, 1), probe.ref) // Reinforced in driver mount allowing all except MAX vehicle.Actor.tell(Mountable.TryMount(player1, 1), probe.ref) // Reinforced in driver mount allowing all except MAX
checkCanMount(probe, "Reinforced in driver mount allowing all except MAX") VehicleControlTest.checkCanMount(probe, "Reinforced in driver mount allowing all except MAX")
// Reset to allow further driver mount mounting tests // Reset to allow further driver mount mounting tests
vehicle.Actor.tell(Mountable.TryDismount(player1, 0), probe.ref) vehicle.Actor.tell(Mountable.TryDismount(player1, 0), probe.ref)
probe.receiveOne(500 milliseconds) //discard probe.receiveOne(500 milliseconds) //discard
vehicle.Owner = None //ensure vehicle.Owner = None //ensure
vehicle.OwnerName = None //ensure vehicle.OwnerName = None //ensure
vehicle.Actor.tell(Mountable.TryMount(player3, 1), probe.ref) // Agile in driver mount allowing all except MAX vehicle.Actor.tell(Mountable.TryMount(player3, 1), probe.ref) // Agile in driver mount allowing all except MAX
checkCanMount(probe, "Agile in driver mount allowing all except MAX") VehicleControlTest.checkCanMount(probe, "Agile in driver mount allowing all except MAX")
vehicle.Actor.tell(Mountable.TryMount(player1, 3), probe.ref) // Reinforced in passenger mount allowing all except MAX vehicle.Actor.tell(Mountable.TryMount(player1, 3), probe.ref) // Reinforced in passenger mount allowing all except MAX
checkCanMount(probe, "Reinforced in passenger mount allowing all except MAX") VehicleControlTest.checkCanMount(probe, "Reinforced in passenger mount allowing all except MAX")
vehicle.Actor.tell(Mountable.TryMount(player2, 11), probe.ref) // MAX in MAX-only mount vehicle.Actor.tell(Mountable.TryMount(player2, 11), probe.ref) // MAX in MAX-only mount
checkCanMount(probe, "MAX in MAX-only mount") VehicleControlTest.checkCanMount(probe, "MAX in MAX-only mount")
} }
} }
} }
@ -621,7 +602,7 @@ class VehicleControlShieldsNotChargingTooEarlyTest extends ActorTest {
// } // }
// // // //
// val beamer_wep = Tool(GlobalDefinitions.beamer) // val beamer_wep = Tool(GlobalDefinitions.beamer)
// val p_source = PlayerSource( Player(Avatar(0, "TestTarget", PlanetSideEmpire.NC, CharacterGender.Female, 1, CharacterVoice.Mute)) ) // val p_source = PlayerSource( Player(Avatar(0, "TestTarget", PlanetSideEmpire.NC, CharacterSex.Female, 1, CharacterVoice.Mute)) )
// val projectile = Projectile(beamer_wep.Projectile, GlobalDefinitions.beamer, beamer_wep.FireMode, p_source, GlobalDefinitions.beamer.ObjectId, Vector3.Zero, Vector3.Zero) // val projectile = Projectile(beamer_wep.Projectile, GlobalDefinitions.beamer, beamer_wep.FireMode, p_source, GlobalDefinitions.beamer.ObjectId, Vector3.Zero, Vector3.Zero)
// val fury_dm = Vehicle(GlobalDefinitions.fury).DamageModel // val fury_dm = Vehicle(GlobalDefinitions.fury).DamageModel
// val obj = DamageInteraction(p_source, ProjectileReason(DamageResolution.Hit, projectile, fury_dm), Vector3(1.2f, 3.4f, 5.6f)) // val obj = DamageInteraction(p_source, ProjectileReason(DamageResolution.Hit, projectile, fury_dm), Vector3(1.2f, 3.4f, 5.6f))
@ -643,7 +624,7 @@ class VehicleControlShieldsNotChargingTooEarlyTest extends ActorTest {
class VehicleControlInteractWithWaterPartialTest extends ActorTest { class VehicleControlInteractWithWaterPartialTest extends ActorTest {
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2 val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val playerProbe = TestProbe() val playerProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
@ -694,7 +675,7 @@ class VehicleControlInteractWithWaterPartialTest extends ActorTest {
class VehicleControlInteractWithWaterTest extends ActorTest { class VehicleControlInteractWithWaterTest extends ActorTest {
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2 val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val vehicleProbe = TestProbe() val vehicleProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
@ -765,7 +746,7 @@ class VehicleControlInteractWithWaterTest extends ActorTest {
class VehicleControlStopInteractWithWaterTest extends ActorTest { class VehicleControlStopInteractWithWaterTest extends ActorTest {
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2 val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val playerProbe = TestProbe() val playerProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
@ -829,7 +810,7 @@ class VehicleControlStopInteractWithWaterTest extends ActorTest {
class VehicleControlInteractWithLavaTest extends ActorTest { class VehicleControlInteractWithLavaTest extends ActorTest {
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2 val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val avatarProbe = TestProbe() val avatarProbe = TestProbe()
val vehicleProbe = TestProbe() val vehicleProbe = TestProbe()
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
@ -890,7 +871,7 @@ class VehicleControlInteractWithLavaTest extends ActorTest {
class VehicleControlInteractWithDeathTest extends ActorTest { class VehicleControlInteractWithDeathTest extends ActorTest {
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2 val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
val player1 = val player1 =
Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)) //guid=1
val guid = new NumberPoolHub(new MaxNumberSource(15)) val guid = new NumberPoolHub(new MaxNumberSource(15))
val pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0)) val pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0))
val zone = new Zone( val zone = new Zone(
@ -937,11 +918,10 @@ class VehicleControlInteractWithDeathTest extends ActorTest {
object VehicleControlTest { object VehicleControlTest {
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.types.{CharacterGender, PlanetSideEmpire} import net.psforever.types.{CharacterSex, PlanetSideEmpire}
val avatar1 = Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
val avatar2 = Avatar(1, "test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
val avatar1 = Avatar(0, "test1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
val avatar2 = Avatar(1, "test2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
def checkCanNotMount(probe: TestProbe, id: String): Unit = { def checkCanNotMount(probe: TestProbe, id: String): Unit = {
val reply = probe.receiveOne(Duration.create(250, "ms")) val reply = probe.receiveOne(Duration.create(250, "ms"))

View file

@ -307,8 +307,8 @@ class VehicleTest extends Specification {
object VehicleTest { object VehicleTest {
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.types.{CharacterGender, PlanetSideEmpire} import net.psforever.types.{CharacterSex, PlanetSideEmpire}
val avatar1 = Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val avatar1 = Avatar(0, "test1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
val avatar2 = Avatar(1, "test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val avatar2 = Avatar(1, "test2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
} }

View file

@ -20,7 +20,7 @@ class VitalityTest extends Specification {
val vSource = VehicleSource(vehicle) val vSource = VehicleSource(vehicle)
"accept a variety of events" in { "accept a variety of events" in {
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val pSource = PlayerSource(player) val pSource = PlayerSource(player)
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
val resprojectile = DamageInteraction( val resprojectile = DamageInteraction(
@ -47,7 +47,7 @@ class VitalityTest extends Specification {
} }
"return and clear the former list of vital activities" in { "return and clear the former list of vital activities" in {
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val pSource = PlayerSource(player) val pSource = PlayerSource(player)
player.History(HealFromKit(pSource, 10, GlobalDefinitions.medkit)) player.History(HealFromKit(pSource, 10, GlobalDefinitions.medkit))
@ -71,7 +71,7 @@ class VitalityTest extends Specification {
} }
"get exactly one entry that was caused by projectile damage" in { "get exactly one entry that was caused by projectile damage" in {
val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val pSource = PlayerSource(player) val pSource = PlayerSource(player)
val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
val resprojectile = DamageInteraction( val resprojectile = DamageInteraction(

View file

@ -217,7 +217,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -237,7 +237,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(1, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(1, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -257,7 +257,7 @@ class ZonePopulationTest extends ActorTest {
/* TODO they need AvatarActor, which has further dependencies /* TODO they need AvatarActor, which has further dependencies
"associate user with a character" in { "associate user with a character" in {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -278,7 +278,7 @@ class ZonePopulationTest extends ActorTest {
"disassociate character from a user" in { "disassociate character from a user" in {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -301,7 +301,7 @@ class ZonePopulationTest extends ActorTest {
"user tries to Leave, but still has an associated character" in { "user tries to Leave, but still has an associated character" in {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -326,7 +326,7 @@ class ZonePopulationTest extends ActorTest {
"user tries to Spawn a character, but an associated character already exists" in { "user tries to Spawn a character, but an associated character already exists" in {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player1 = Player(avatar) val player1 = Player(avatar)
player1.GUID = PlanetSideGUID(1) player1.GUID = PlanetSideGUID(1)
val player2 = Player(avatar) val player2 = Player(avatar)
@ -354,7 +354,7 @@ class ZonePopulationTest extends ActorTest {
"user tries to Spawn a character, but did not Join first" in { "user tries to Spawn a character, but did not Join first" in {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -376,7 +376,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(2, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(2, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -402,7 +402,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(3, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(3, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
player.Release player.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -419,7 +419,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(4, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(4, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
player.Release player.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -438,13 +438,13 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player1 = Player(Avatar(5, "Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player1 = Player(Avatar(5, "Chord1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player1.GUID = PlanetSideGUID(1) player1.GUID = PlanetSideGUID(1)
player1.Release player1.Release
val player2 = Player(Avatar(6, "Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player2 = Player(Avatar(6, "Chord2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player2.GUID = PlanetSideGUID(2) player2.GUID = PlanetSideGUID(2)
player2.Release player2.Release
val player3 = Player(Avatar(7, "Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player3 = Player(Avatar(7, "Chord3", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player3.GUID = PlanetSideGUID(3) player3.GUID = PlanetSideGUID(3)
player3.Release player3.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
@ -469,7 +469,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { val zone = new Zone("test", new ZoneMap(""), 0) {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(8, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(8, "Chord", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(1)
//player.Release !!important //player.Release !!important
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)

View file

@ -6,12 +6,12 @@ import net.psforever.objects._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.guid.{GUIDTask, TaskResolver}
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
class GUIDTaskRegisterAvatarTest extends ActorTest { class GUIDTaskRegisterAvatarTest extends ActorTest {
"RegisterAvatar" in { "RegisterAvatar" in {
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj_wep = Tool(GlobalDefinitions.beamer) val obj_wep = Tool(GlobalDefinitions.beamer)
obj.Slot(0).Equipment = obj_wep obj.Slot(0).Equipment = obj_wep
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)

View file

@ -6,12 +6,12 @@ import net.psforever.objects._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.guid.{GUIDTask, TaskResolver}
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
class GUIDTaskRegisterPlayerTest extends ActorTest { class GUIDTaskRegisterPlayerTest extends ActorTest {
"RegisterPlayer" in { "RegisterPlayer" in {
val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj_wep = Tool(GlobalDefinitions.beamer) val obj_wep = Tool(GlobalDefinitions.beamer)
obj.Slot(0).Equipment = obj_wep obj.Slot(0).Equipment = obj_wep
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)

View file

@ -6,12 +6,12 @@ import net.psforever.objects._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.guid.{GUIDTask, TaskResolver}
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
class GUIDTaskUnregisterAvatarTest extends ActorTest { class GUIDTaskUnregisterAvatarTest extends ActorTest {
"UnregisterAvatar" in { "UnregisterAvatar" in {
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj_wep = Tool(GlobalDefinitions.beamer) val obj_wep = Tool(GlobalDefinitions.beamer)
obj.Slot(0).Equipment = obj_wep obj.Slot(0).Equipment = obj_wep
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)

View file

@ -6,12 +6,12 @@ import net.psforever.objects._
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.guid.{GUIDTask, TaskResolver}
import net.psforever.objects.locker.LockerEquipment import net.psforever.objects.locker.LockerEquipment
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
class GUIDTaskUnregisterPlayerTest extends ActorTest { class GUIDTaskUnregisterPlayerTest extends ActorTest {
"UnregisterPlayer" in { "UnregisterPlayer" in {
val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup
val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val obj = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj_wep = Tool(GlobalDefinitions.beamer) val obj_wep = Tool(GlobalDefinitions.beamer)
obj.Slot(0).Equipment = obj_wep obj.Slot(0).Equipment = obj_wep
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)

View file

@ -12,7 +12,7 @@ import net.psforever.objects.serverobject.mount.{MountInfo, Mountable, Seat, Sea
import net.psforever.objects.serverobject.structures.{Building, StructureType} import net.psforever.objects.serverobject.structures.{Building, StructureType}
import net.psforever.objects.serverobject.terminals.Terminal import net.psforever.objects.serverobject.terminals.Terminal
import net.psforever.objects.zones.{Zone, ZoneMap} import net.psforever.objects.zones.{Zone, ZoneMap}
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire, Vector3}
import org.specs2.mutable.Specification import org.specs2.mutable.Specification
import scala.concurrent.duration.Duration import scala.concurrent.duration.Duration
@ -46,7 +46,7 @@ class ImplantTerminalMechTest extends Specification {
} }
"get passenger in a mount" in { "get passenger in a mount" in {
val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech)
obj.PassengerInSeat(player).isEmpty mustEqual true obj.PassengerInSeat(player).isEmpty mustEqual true
obj.Seats(0).mount(player) obj.Seats(0).mount(player)
@ -87,11 +87,11 @@ class ImplantTerminalMechControl2Test extends ActorTest {
} }
class ImplantTerminalMechControl3Test extends ActorTest { class ImplantTerminalMechControl3Test extends ActorTest {
import net.psforever.types.CharacterGender import net.psforever.types.CharacterSex
"ImplantTerminalMechControl" should { "ImplantTerminalMechControl" should {
"block a player from mounting" in { "block a player from mounting" in {
val (player1, mech) = ImplantTerminalMechTest.SetUpAgents(PlanetSideEmpire.TR) val (player1, mech) = ImplantTerminalMechTest.SetUpAgents(PlanetSideEmpire.TR)
val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar(1, "test2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
mech.Actor ! Mountable.TryMount(player1, 1) mech.Actor ! Mountable.TryMount(player1, 1)
receiveOne(Duration.create(100, "ms")) //consume reply receiveOne(Duration.create(100, "ms")) //consume reply
@ -183,6 +183,6 @@ object ImplantTerminalMechTest {
map.linkTerminalToInterface(1, 2) map.linkTerminalToInterface(1, 2)
terminal.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], terminal), "terminal-control") terminal.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], terminal), "terminal-control")
(Player(Avatar(0, "test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal) (Player(Avatar(0, "test", faction, CharacterSex.Male, 0, CharacterVoice.Mute)), terminal)
} }
} }

View file

@ -21,7 +21,7 @@ class MatrixTerminalTest extends Specification {
} }
"invalid message" in { "invalid message" in {
val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player = Player(Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute))
val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0))
val terminal = Terminal(new MatrixTerminalDefinition(519)) val terminal = Terminal(new MatrixTerminalDefinition(519))
terminal.Owner = Vehicle(GlobalDefinitions.quadstealth) terminal.Owner = Vehicle(GlobalDefinitions.quadstealth)

View file

@ -11,7 +11,7 @@ import net.psforever.types._
import org.specs2.mutable.Specification import org.specs2.mutable.Specification
class OrderTerminalTest extends Specification { class OrderTerminalTest extends Specification {
val avatar = Avatar(0, "test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val avatar = Avatar(0, "test", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
val player = Player(avatar) val player = Player(avatar)
val building = new Building( val building = new Building(

View file

@ -17,7 +17,7 @@ import net.psforever.objects.serverobject.terminals.{
} }
import net.psforever.objects.zones.{Zone, ZoneMap} import net.psforever.objects.zones.{Zone, ZoneMap}
import net.psforever.objects.{GlobalDefinitions, Player} import net.psforever.objects.{GlobalDefinitions, Player}
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, PlanetSideGUID} import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire, PlanetSideGUID}
import org.specs2.mutable.Specification import org.specs2.mutable.Specification
import net.psforever.services.Service import net.psforever.services.Service
import net.psforever.services.local.LocalService import net.psforever.services.local.LocalService
@ -41,7 +41,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -54,7 +54,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter2", "TestCharacter2",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -77,7 +77,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -90,7 +90,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter2", "TestCharacter2",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -118,7 +118,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -140,7 +140,7 @@ class ProximityTest extends Specification {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -184,7 +184,7 @@ class ProximityTerminalControlStartTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -235,7 +235,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -249,7 +249,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter2", "TestCharacter2",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -307,7 +307,7 @@ class ProximityTerminalControlStopTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -361,7 +361,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter1", "TestCharacter1",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )
@ -375,7 +375,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest {
ProximityTest.avatarId.getAndIncrement(), ProximityTest.avatarId.getAndIncrement(),
"TestCharacter2", "TestCharacter2",
PlanetSideEmpire.VS, PlanetSideEmpire.VS,
CharacterGender.Female, CharacterSex.Female,
1, 1,
CharacterVoice.Voice1 CharacterVoice.Voice1
) )

View file

@ -143,6 +143,6 @@ object TerminalControlTest {
GlobalDefinitions.building GlobalDefinitions.building
) )
terminal.Owner.Faction = faction terminal.Owner.Faction = faction
(Player(Avatar(0, "test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal) (Player(Avatar(0, "test", faction, CharacterSex.Male, 0, CharacterVoice.Mute)), terminal)
} }
} }