mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-19 18:14:44 +00:00
commit
a22f1118d1
|
|
@ -79,7 +79,8 @@ lazy val psforeverSettings = Seq(
|
|||
"io.circe" %% "circe-generic" % "0.13.0",
|
||||
"io.circe" %% "circe-parser" % "0.13.0",
|
||||
"org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.1",
|
||||
"org.bouncycastle" % "bcprov-jdk15on" % "1.68"
|
||||
"org.bouncycastle" % "bcprov-jdk15on" % "1.68",
|
||||
"org.codehaus.janino" % "janino" % "2.6.1"
|
||||
),
|
||||
// TODO(chord): remove exclusion when SessionActor is refactored: https://github.com/psforever/PSF-LoginServer/issues/279
|
||||
coverageExcludedPackages := "net\\.psforever\\.actors\\.session\\.SessionActor.*"
|
||||
|
|
|
|||
|
|
@ -10,36 +10,116 @@
|
|||
</filter>
|
||||
</appender>
|
||||
|
||||
<appender name="FILE-DEBUG" class="ch.qos.logback.core.FileAppender">
|
||||
<file>logs/pslogin-debug_${bySecond}.log</file>
|
||||
<appender name="FILE-GENERAL" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>logs/psforever-general_${bySecond}.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>logs/psforever-general_%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||||
<maxHistory>60</maxHistory>
|
||||
<totalSizeCap>10GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%date{ISO8601} %5level "%X" %logger{35} - %msg%n</pattern>
|
||||
<pattern>%date{ISO8601} %5level %logger{35} - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
|
||||
<evaluator>
|
||||
<matcher>
|
||||
<Name>encrypted</Name>
|
||||
<!-- occurs during latency or relogging complications; the messages are useless -->
|
||||
<regex>Unexpected packet type EncryptedPacket</regex>
|
||||
</matcher>
|
||||
<expression>encrypted.matches(formattedMessage)</expression>
|
||||
</evaluator>
|
||||
<OnMatch>DENY</OnMatch>
|
||||
<OnMismatch>NEUTRAL</OnMismatch>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!--
|
||||
c.g.j.s.d.p.c.PostgreSQLConnectionHandler
|
||||
-->
|
||||
<prefix>com.github.jasync.sql.db.postgresql.codec</prefix>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!--
|
||||
i.s.c.AbstractConnection.lockdown
|
||||
i.sentry.connection.AsyncConnection
|
||||
-->
|
||||
<prefix>io.sentry.connection</prefix>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!-- damage log -->
|
||||
<prefix>DamageResolution</prefix>
|
||||
</filter>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>DEBUG</level>
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.ApplyCooldownToDuplicateLoggingFilter">
|
||||
<cooldown>5000</cooldown>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<appender name="FILE-TRACE" class="ch.qos.logback.core.FileAppender">
|
||||
<file>logs/pslogin-trace_${bySecond}.log</file>
|
||||
<appender name="FILE-DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>logs/psforever-debug_${bySecond}.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>logs/psforever-debug_%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||||
<maxHistory>60</maxHistory>
|
||||
<totalSizeCap>10GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%date{ISO8601} [%thread] %5level "%X" %logger{35} - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>OFF</level>
|
||||
<!--<level>TRACE</level>-->
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!--
|
||||
c.g.j.s.d.p.e.CloseStatementEncoder
|
||||
c.g.j.s.d.p.e.PreparedStatementEncoderHelper
|
||||
c.g.j.s.d.p.e.PreparedStatementOpeningEncoder
|
||||
c.g.j.s.d.p.e.QueryMessageEncoder
|
||||
-->
|
||||
<prefix>com.github.jasync.sql.db.postgresql.encoders</prefix>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!--
|
||||
c.g.j.s.d.p.c.PostgreSQLConnectionHandler
|
||||
consider: c.g.j.s.d.p.PostgreSQLConnection?
|
||||
-->
|
||||
<prefix>com.github.jasync.sql.db.postgresql.codec</prefix>
|
||||
</filter>
|
||||
<filter class="net.psforever.filters.LoggerPrefixFilter">
|
||||
<!-- i.g.context.jasync.JAsyncContext -->
|
||||
<prefix>io.getquill.context.jasync</prefix>
|
||||
</filter>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>DEBUG</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>TRACE</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter> -->
|
||||
</appender>
|
||||
|
||||
<appender name="Sentry" class="io.sentry.logback.SentryAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>WARN</level>
|
||||
</filter>
|
||||
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
|
||||
<evaluator>
|
||||
<matcher>
|
||||
<Name>encrypted</Name>
|
||||
<!-- occurs during logging or relogging complications; the messages are useless -->
|
||||
<regex>Unexpected packet type EncryptedPacket</regex>
|
||||
</matcher>
|
||||
<expression>encrypted.matches(formattedMessage)</expression>
|
||||
</evaluator>
|
||||
<OnMatch>DENY</OnMatch>
|
||||
<OnMismatch>NEUTRAL</OnMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<root level="TRACE">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="FILE-TRACE"/>
|
||||
<appender-ref ref="FILE-GENERAL"/>
|
||||
<appender-ref ref="FILE-DEBUG"/>
|
||||
<appender-ref ref="Sentry"/>
|
||||
</root>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
// Copyright (c) 2021 PSForever
|
||||
package net.psforever.filters;
|
||||
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.filter.Filter;
|
||||
import ch.qos.logback.core.spi.FilterReply;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Disrupts a variety of logging messages that would otherwise repeat within a certain frame of time.
|
||||
* Until there is a significant break in time between the logging of the duplicated messages,
|
||||
* those messages are denied logging.
|
||||
* Only exact matches via hash are denied.
|
||||
* Be aware of the pitfalls of default `String` hash code.
|
||||
*/
|
||||
public class ApplyCooldownToDuplicateLoggingFilter extends Filter<ILoggingEvent> {
|
||||
private long cooldown;
|
||||
private ConcurrentHashMap<String, Long> messageMap;
|
||||
private long cleaning = 900000L; //default: 15min
|
||||
private ScheduledExecutorService housecleaning;
|
||||
|
||||
@Override
|
||||
public FilterReply decide(ILoggingEvent event) {
|
||||
String msg = event.getMessage();
|
||||
long currTime = System.currentTimeMillis();
|
||||
Long previousTime = messageMap.put(msg, currTime);
|
||||
if (previousTime != null && previousTime + cooldown > currTime) {
|
||||
return FilterReply.DENY;
|
||||
} else {
|
||||
return FilterReply.NEUTRAL;
|
||||
}
|
||||
}
|
||||
|
||||
public void setCooldown(Long duration) {
|
||||
this.cooldown = duration;
|
||||
}
|
||||
|
||||
public void setCleaning(Long duration) {
|
||||
this.cleaning = duration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
if (this.cooldown != 0L) {
|
||||
messageMap = new ConcurrentHashMap<>(1000);
|
||||
housecleaning = Executors.newScheduledThreadPool(1);
|
||||
Runnable task = () -> {
|
||||
//being "concurrent" should be enough
|
||||
//the worst that can happen is two of the same message back-to-back in the log once in a while
|
||||
if (!messageMap.isEmpty()) {
|
||||
long currTime = System.currentTimeMillis();
|
||||
Iterator<String> oldLogMessages = messageMap.entrySet().stream()
|
||||
.filter( entry -> entry.getValue() + cooldown < currTime )
|
||||
.map( Map.Entry::getKey )
|
||||
.iterator();
|
||||
oldLogMessages.forEachRemaining(key -> messageMap.remove(key));
|
||||
}
|
||||
};
|
||||
housecleaning.scheduleWithFixedDelay(task, cleaning, cleaning, TimeUnit.MILLISECONDS);
|
||||
super.start();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
housecleaning.shutdown();
|
||||
messageMap.clear();
|
||||
messageMap = null;
|
||||
super.stop();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
// Copyright (c) 2021 PSForever
|
||||
package net.psforever.filters;
|
||||
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.filter.Filter;
|
||||
import ch.qos.logback.core.spi.FilterReply;
|
||||
|
||||
/**
|
||||
* Disrupts a variety of logging messages that originate from specific loggers.
|
||||
* A comparison of the prefix text of the logger handling the event is performed,
|
||||
* with a positive match denying that event being appended.
|
||||
* The full prefix must be provided, as the filter uses the fully authenticated name
|
||||
* and the logger occasionally displays an abbreviated form for longer names,
|
||||
* e.g., "i.g.context.jasync ..." instead of "io.getquill.context.jasync ...".
|
||||
*/
|
||||
public class LoggerPrefixFilter extends Filter<ILoggingEvent> {
|
||||
private String prefix;
|
||||
|
||||
@Override
|
||||
public FilterReply decide(ILoggingEvent event) {
|
||||
if (isStarted() && event.getLoggerName().startsWith(prefix)) {
|
||||
return FilterReply.DENY;
|
||||
} else {
|
||||
return FilterReply.NEUTRAL;
|
||||
}
|
||||
}
|
||||
|
||||
public void setPrefix(String name) {
|
||||
this.prefix = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
if (this.prefix != null) {
|
||||
super.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -485,7 +485,7 @@ class PacketCodingActorITest extends ActorTest {
|
|||
BasicCharacterData(
|
||||
"IlllIIIlllIlIllIlllIllI",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
41,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
@ -600,7 +600,7 @@ class PacketCodingActorKTest extends ActorTest {
|
|||
BasicCharacterData(
|
||||
"IlllIIIlllIlIllIlllIllI",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
41,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition)
|
||||
|
|
@ -164,7 +164,7 @@ class AutoRepairFacilityIntegrationAntGiveNtuTest extends FreedContextActorTest
|
|||
expectNoMessage(1000 milliseconds)
|
||||
var buildingMap = new TrieMap[Int, Building]()
|
||||
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 terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition)
|
||||
val silo = new ResourceSilo()
|
||||
|
|
@ -255,7 +255,7 @@ class AutoRepairFacilityIntegrationTerminalDestroyedTerminalAntTest extends Free
|
|||
expectNoMessage(1000 milliseconds)
|
||||
var buildingMap = new TrieMap[Int, Building]()
|
||||
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 ant = Vehicle(GlobalDefinitions.ant)
|
||||
val terminal = new Terminal(AutoRepairIntegrationTest.slow_terminal_definition)
|
||||
|
|
@ -357,7 +357,7 @@ class AutoRepairFacilityIntegrationTerminalIncompleteRepairTest extends FreedCon
|
|||
expectNoMessage(1000 milliseconds)
|
||||
var buildingMap = new TrieMap[Int, Building]()
|
||||
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 ant = Vehicle(GlobalDefinitions.ant)
|
||||
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)
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairIntegrationTest.terminal_definition)
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@ import net.psforever.objects.vital.projectile.ProjectileReason
|
|||
import net.psforever.objects.zones.{Zone, ZoneMap}
|
||||
import net.psforever.objects.{GlobalDefinitions, Player, Tool}
|
||||
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._
|
||||
|
||||
class AutoRepairRequestNtuTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
@ -87,7 +87,7 @@ class AutoRepairRequestNtuTest extends FreedContextActorTest {
|
|||
|
||||
class AutoRepairRequestNtuRepeatTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
@ -151,7 +151,7 @@ class AutoRepairRequestNtuRepeatTest extends FreedContextActorTest {
|
|||
|
||||
class AutoRepairNoRequestNtuTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
@ -209,7 +209,7 @@ class AutoRepairNoRequestNtuTest extends FreedContextActorTest {
|
|||
|
||||
class AutoRepairRestoreRequestNtuTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
@ -274,7 +274,7 @@ class AutoRepairRestoreRequestNtuTest extends FreedContextActorTest {
|
|||
|
||||
class AutoRepairRepairWithNtuTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
@ -336,7 +336,7 @@ class AutoRepairRepairWithNtuTest extends FreedContextActorTest {
|
|||
|
||||
class AutoRepairRepairWithNtuUntilDoneTest extends FreedContextActorTest {
|
||||
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()
|
||||
val weapon = new Tool(GlobalDefinitions.suppressor)
|
||||
val terminal = new Terminal(AutoRepairTest.terminal_definition)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class VehicleSpawnControl3Test extends ActorTest {
|
|||
val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR)
|
||||
//we can recycle the vehicle and the player for each order
|
||||
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.Continent = zone.id
|
||||
player2.Spawn()
|
||||
|
|
@ -216,7 +216,7 @@ object VehicleSpawnPadControlTest {
|
|||
import net.psforever.objects.serverobject.structures.Building
|
||||
import net.psforever.objects.vehicles.VehicleControl
|
||||
import net.psforever.objects.Tool
|
||||
import net.psforever.types.CharacterGender
|
||||
import net.psforever.types.CharacterSex
|
||||
|
||||
val vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy)
|
||||
val weapon = vehicle.WeaponControlledFromSeat(1).get.asInstanceOf[Tool]
|
||||
|
|
@ -245,7 +245,7 @@ object VehicleSpawnPadControlTest {
|
|||
pad.Owner.Faction = faction
|
||||
pad.Zone = zone
|
||||
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")
|
||||
player.Zone = zone
|
||||
player.Spawn()
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ class DroptItemTest 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.Slot(5).Equipment.get.GUID = PlanetSideGUID(11)
|
||||
val c1data = obj.Definition.Packet.DetailedConstructorData(obj).get
|
||||
|
|
@ -335,7 +335,7 @@ class PlayerStateTest 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)
|
||||
tool.GUID = PlanetSideGUID(40)
|
||||
|
||||
|
|
@ -512,7 +512,7 @@ class AvatarReleaseTest extends FreedContextActorTest {
|
|||
GUID(guid)
|
||||
}
|
||||
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.Slot(5).Equipment.get)
|
||||
obj.Zone = zone
|
||||
|
|
@ -563,7 +563,7 @@ class AvatarReleaseEarly1Test extends FreedContextActorTest {
|
|||
GUID(guid)
|
||||
}
|
||||
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.Slot(5).Equipment.get)
|
||||
obj.Zone = zone
|
||||
|
|
@ -615,13 +615,13 @@ class AvatarReleaseEarly2Test extends FreedContextActorTest {
|
|||
GUID(guid)
|
||||
}
|
||||
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.Slot(5).Equipment.get)
|
||||
obj.Zone = zone
|
||||
obj.Release
|
||||
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
|
||||
objAlt.GUID = PlanetSideGUID(3)
|
||||
objAlt.Slot(5).Equipment.get.GUID = PlanetSideGUID(4)
|
||||
|
|
|
|||
|
|
@ -100,10 +100,9 @@ class LoginActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], conne
|
|||
val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate"
|
||||
|
||||
if (token.isDefined)
|
||||
log.info(s"New login UN:$username Token:${token.get}. $clientVersion")
|
||||
log.trace(s"New login UN:$username Token:${token.get}. $clientVersion")
|
||||
else {
|
||||
// log.info(s"New login UN:$username PW:$password. $clientVersion")
|
||||
log.info(s"New login UN:$username. $clientVersion")
|
||||
log.trace(s"New login UN:$username. $clientVersion")
|
||||
}
|
||||
|
||||
accountLogin(username, password.get)
|
||||
|
|
@ -115,7 +114,7 @@ class LoginActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], conne
|
|||
middlewareActor ! MiddlewareActor.Close()
|
||||
|
||||
case _ =>
|
||||
log.debug(s"Unhandled GamePacket $pkt")
|
||||
log.warn(s"Unhandled GamePacket $pkt")
|
||||
}
|
||||
|
||||
def accountLogin(username: String, password: String): Unit = {
|
||||
|
|
@ -197,7 +196,7 @@ class LoginActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], conne
|
|||
}
|
||||
|
||||
def loginPwdFailureResponse(username: String, newToken: String) = {
|
||||
log.info(s"Failed login to account $username")
|
||||
log.warn(s"Failed login to account $username")
|
||||
middlewareActor ! MiddlewareActor.Send(
|
||||
LoginRespMessage(
|
||||
newToken,
|
||||
|
|
@ -212,7 +211,7 @@ class LoginActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], conne
|
|||
}
|
||||
|
||||
def loginFailureResponse(username: String, newToken: String) = {
|
||||
log.info("DB problem")
|
||||
log.warn("DB problem")
|
||||
middlewareActor ! MiddlewareActor.Send(
|
||||
LoginRespMessage(
|
||||
newToken,
|
||||
|
|
@ -227,7 +226,7 @@ class LoginActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], conne
|
|||
}
|
||||
|
||||
def loginAccountFailureResponse(username: String, newToken: String) = {
|
||||
log.info(s"Account $username inactive")
|
||||
log.warn(s"Account $username inactive")
|
||||
middlewareActor ! MiddlewareActor.Send(
|
||||
LoginRespMessage(
|
||||
newToken,
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ class MiddlewareActor(
|
|||
Behaviors.same
|
||||
|
||||
case _: ChangeFireModeMessage =>
|
||||
log.trace(s"What is this packet that just arrived? ${msg.toString}")
|
||||
log.trace(s"What is this packet that just arrived? $msg")
|
||||
//ignore
|
||||
Behaviors.same
|
||||
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ object SocketActor {
|
|||
socketActor ! toSocket(message)
|
||||
}
|
||||
} else {
|
||||
log.info("Network simulator dropped packet")
|
||||
log.trace("Network simulator dropped packet")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ import net.psforever.packet.game.{
|
|||
PlanetsideAttributeMessage
|
||||
}
|
||||
import net.psforever.types.{
|
||||
CharacterGender,
|
||||
CharacterSex,
|
||||
CharacterVoice,
|
||||
ExoSuitType,
|
||||
ImplantType,
|
||||
|
|
@ -98,7 +98,7 @@ object AvatarActor {
|
|||
name: String,
|
||||
head: Int,
|
||||
voice: CharacterVoice.Value,
|
||||
gender: CharacterGender.Value,
|
||||
gender: CharacterSex,
|
||||
empire: PlanetSideEmpire.Value
|
||||
) extends Command
|
||||
|
||||
|
|
@ -306,7 +306,7 @@ class AvatarActor(
|
|||
_.factionId -> lift(empire.id),
|
||||
_.headId -> lift(head),
|
||||
_.voiceId -> lift(voice.id),
|
||||
_.genderId -> lift(gender.id),
|
||||
_.genderId -> lift(gender.value),
|
||||
_.bep -> lift(Config.app.game.newAvatar.br.experience),
|
||||
_.cep -> lift(Config.app.game.newAvatar.cr.experience)
|
||||
)
|
||||
|
|
@ -326,7 +326,7 @@ class AvatarActor(
|
|||
|
||||
result.onComplete {
|
||||
case Success(_) =>
|
||||
log.debug(s"created character ${name} for account ${account.name}")
|
||||
log.debug(s"AvatarActor: created character ${name} for account ${account.name}")
|
||||
sessionActor ! SessionActor.SendResponse(ActionResultMessage.Pass)
|
||||
sendAvatars(account)
|
||||
case Failure(e) => log.error(e)("db failure")
|
||||
|
|
@ -353,7 +353,7 @@ class AvatarActor(
|
|||
|
||||
result.onComplete {
|
||||
case Success(_) =>
|
||||
log.debug(s"avatar $id deleted")
|
||||
log.debug(s"AvatarActor: avatar $id deleted")
|
||||
sessionActor ! SessionActor.SendResponse(ActionResultMessage.Pass)
|
||||
sendAvatars(account)
|
||||
case Failure(e) => log.error(e)("db failure")
|
||||
|
|
@ -485,14 +485,20 @@ class AvatarActor(
|
|||
ItemTransactionResultMessage(terminalGuid, TransactionType.Learn, success = false)
|
||||
)
|
||||
} else {
|
||||
|
||||
val deps = Certification.values.filter(_.requires.contains(certification)).toSet
|
||||
val remove = deps ++ Certification.values.filter(_.replaces.intersect(deps).nonEmpty).toSet + certification
|
||||
var requiredByCert: Set[Certification] = Set(certification)
|
||||
var removeThese: Set[Certification] = Set(certification)
|
||||
val allCerts: Set[Certification] = Certification.values.toSet
|
||||
do {
|
||||
removeThese = allCerts.filter { testingCert =>
|
||||
testingCert.requires.intersect(removeThese).nonEmpty
|
||||
}
|
||||
requiredByCert = requiredByCert ++ removeThese
|
||||
} while(removeThese.nonEmpty)
|
||||
|
||||
Future
|
||||
.sequence(
|
||||
avatar.certifications
|
||||
.intersect(remove)
|
||||
.intersect(requiredByCert)
|
||||
.map(cert => {
|
||||
ctx
|
||||
.run(
|
||||
|
|
@ -511,7 +517,7 @@ class AvatarActor(
|
|||
ItemTransactionResultMessage(terminalGuid, TransactionType.Sell, success = false)
|
||||
)
|
||||
case Success(certs) =>
|
||||
context.self ! ReplaceAvatar(avatar.copy(certifications = avatar.certifications.diff(remove)))
|
||||
context.self ! ReplaceAvatar(avatar.copy(certifications = avatar.certifications.diff(certs)))
|
||||
certs.foreach { cert =>
|
||||
sessionActor ! SessionActor.SendResponse(
|
||||
PlanetsideAttributeMessage(session.get.player.GUID, 25, cert.value)
|
||||
|
|
@ -1269,7 +1275,7 @@ class AvatarActor(
|
|||
.run(query[persistence.Loadout].filter(_.avatarId == lift(avatar.id)))
|
||||
.map { loadouts =>
|
||||
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)
|
||||
|
||||
loadout.items.split("/").foreach {
|
||||
|
|
|
|||
|
|
@ -121,8 +121,6 @@ class ChatActor(
|
|||
Behaviors.same
|
||||
|
||||
case Message(message) =>
|
||||
log.info("Chat: " + message)
|
||||
|
||||
val gmCommandAllowed =
|
||||
session.account.gm || Config.app.development.unprivilegedGmCommands.contains(message.messageType)
|
||||
|
||||
|
|
@ -916,7 +914,7 @@ class ChatActor(
|
|||
}
|
||||
|
||||
case _ =>
|
||||
log.info(s"unhandled chat message $message")
|
||||
log.warn(s"Unhandled chat message $message")
|
||||
}
|
||||
Behaviors.same
|
||||
|
||||
|
|
@ -945,7 +943,7 @@ class ChatActor(
|
|||
val args = message.contents.split(" ")
|
||||
val (name, time) = (args.lift(0), args.lift(1)) match {
|
||||
case (Some(name), _) if name != session.player.Name =>
|
||||
log.error("received silence message for other player")
|
||||
log.error("Received silence message for other player")
|
||||
(None, None)
|
||||
case (Some(name), None) => (Some(name), Some(5))
|
||||
case (Some(name), Some(time)) if time.toIntOption.isDefined => (Some(name), Some(time.toInt))
|
||||
|
|
@ -976,11 +974,11 @@ class ChatActor(
|
|||
}
|
||||
|
||||
case (name, time) =>
|
||||
log.error(s"bad silence args $name $time")
|
||||
log.warn(s"Bad silence args $name $time")
|
||||
}
|
||||
|
||||
case _ =>
|
||||
log.error(s"unexpected messageType $message")
|
||||
log.warn(s"Unexpected messageType $message")
|
||||
|
||||
}
|
||||
Behaviors.same
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -26,7 +26,7 @@ class TcpListener[T <: Actor](actorClass: Class[T], nextActorName: String, liste
|
|||
|
||||
def receive = {
|
||||
case Tcp.Bound(local) =>
|
||||
log.info(s"Now listening on TCP:$local")
|
||||
log.debug(s"Now listening on TCP:$local")
|
||||
|
||||
context.become(ready(sender()))
|
||||
case Tcp.CommandFailed(Tcp.Bind(_, address, _, _, _)) =>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
package net.psforever.objects
|
||||
|
||||
import akka.actor.ActorRef
|
||||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.avatar.{Avatar, Certification}
|
||||
|
||||
import scala.concurrent.duration._
|
||||
import net.psforever.objects.ce.{Deployable, DeployedItem}
|
||||
|
|
@ -13,7 +13,7 @@ import net.psforever.services.RemoverActor
|
|||
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
|
||||
|
||||
object Deployables {
|
||||
private val log = org.log4s.getLogger("Deployables")
|
||||
//private val log = org.log4s.getLogger("Deployables")
|
||||
|
||||
object Make {
|
||||
def apply(item: DeployedItem.Value): () => PlanetSideGameObject with Deployable = cemap(item)
|
||||
|
|
@ -128,7 +128,6 @@ object Deployables {
|
|||
* @param avatar the player's core
|
||||
*/
|
||||
def InitializeDeployableQuantities(avatar: Avatar): Boolean = {
|
||||
log.info("Setting up combat engineering ...")
|
||||
avatar.deployables.Initialize(avatar.certifications)
|
||||
}
|
||||
|
||||
|
|
@ -137,8 +136,35 @@ object Deployables {
|
|||
* @param avatar the player's core
|
||||
*/
|
||||
def InitializeDeployableUIElements(avatar: Avatar): List[(Int, Int, Int, Int)] = {
|
||||
log.info("Setting up combat engineering UI ...")
|
||||
avatar.deployables.UpdateUI()
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare sets of certifications to determine if
|
||||
* the requested `Engineering`-like certification requirements of the one group can be found in a another group.
|
||||
* @see `CertificationType`
|
||||
* @param sample the certifications to be compared against
|
||||
* @param test the desired certifications
|
||||
* @return `true`, if the desired certification requirements are met; `false`, otherwise
|
||||
*/
|
||||
def constructionItemPermissionComparison(
|
||||
sample: Set[Certification],
|
||||
test: Set[Certification]
|
||||
): Boolean = {
|
||||
import Certification._
|
||||
val engineeringCerts: Set[Certification] = Set(AssaultEngineering, FortificationEngineering)
|
||||
val testDiff: Set[Certification] = test diff (engineeringCerts ++ Set(AdvancedEngineering))
|
||||
//substitute `AssaultEngineering` and `FortificationEngineering` for `AdvancedEngineering`
|
||||
val sampleIntersect = if (sample contains AdvancedEngineering) {
|
||||
engineeringCerts
|
||||
} else {
|
||||
sample intersect engineeringCerts
|
||||
}
|
||||
val testIntersect = if (test contains AdvancedEngineering) {
|
||||
engineeringCerts
|
||||
} else {
|
||||
test intersect engineeringCerts
|
||||
}
|
||||
(sample intersect testDiff equals testDiff) && (sampleIntersect intersect testIntersect equals testIntersect)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1646,7 +1646,7 @@ object GlobalDefinitions {
|
|||
1.093750f // same regardless of gender
|
||||
} else if (p.ExoSuit == ExoSuitType.MAX) {
|
||||
1.906250f // VS female MAX
|
||||
} else if (p.Sex == CharacterGender.Male) {
|
||||
} else if (p.Sex == CharacterSex.Male) {
|
||||
obj.Definition.MaxDepth // male
|
||||
} else {
|
||||
1.546875f // female
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ class Player(var avatar: Avatar)
|
|||
|
||||
def Faction: PlanetSideEmpire.Value = avatar.faction
|
||||
|
||||
def Sex: CharacterGender.Value = avatar.sex
|
||||
def Sex: CharacterSex = avatar.sex
|
||||
|
||||
def Head: Int = avatar.head
|
||||
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ object Vehicles {
|
|||
* @param unk na; used by `HackMessage` as `unk5`
|
||||
*/
|
||||
def FinishHackingVehicle(target: Vehicle, hacker: Player, unk: Long)(): Unit = {
|
||||
log.info(s"Vehicle guid: ${target.GUID} has been jacked")
|
||||
log.info(s"${hacker.Name} has jacked a ${target.Definition.Name}")
|
||||
val zone = target.Zone
|
||||
// Forcefully dismount any cargo
|
||||
target.CargoHolds.values.foreach(cargoHold => {
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ case class Avatar(
|
|||
id: Int,
|
||||
name: String,
|
||||
faction: PlanetSideEmpire.Value,
|
||||
sex: CharacterGender.Value,
|
||||
sex: CharacterSex,
|
||||
head: Int,
|
||||
voice: CharacterVoice.Value,
|
||||
bep: Long = 0,
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm
|
|||
)
|
||||
|
||||
case Terminal.InfantryLoadout(exosuit, subtype, holsters, inventory) =>
|
||||
log.info(s"wants to change equipment loadout to their option #${msg.unk1 + 1}")
|
||||
log.info(s"${player.Name} wants to change equipment loadout to their option #${msg.unk1 + 1}")
|
||||
val fallbackSubtype = 0
|
||||
val fallbackSuit = ExoSuitType.Standard
|
||||
val originalSuit = player.ExoSuit
|
||||
|
|
@ -371,7 +371,7 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm
|
|||
(exosuit, subtype)
|
||||
} else {
|
||||
log.warn(
|
||||
s"no longer has permission to wear the exo-suit type $exosuit; will wear $fallbackSuit instead"
|
||||
s"${player.Name} no longer has permission to wear the exo-suit type $exosuit; will wear $fallbackSuit instead"
|
||||
)
|
||||
(fallbackSuit, fallbackSubtype)
|
||||
}
|
||||
|
|
@ -710,6 +710,12 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm
|
|||
super.CancelJammeredStatus(target)
|
||||
//uninitialize implants
|
||||
avatarActor ! AvatarActor.DeinitializeImplants()
|
||||
cause.adversarial match {
|
||||
case Some(a) =>
|
||||
damageLog.info(s"DisplayDestroy: ${a.defender} was killed by ${a.attacker}")
|
||||
case _ =>
|
||||
damageLog.info(s"DisplayDestroy: ${player.Name} killed ${player.Sex.pronounObject}self.")
|
||||
}
|
||||
events ! AvatarServiceMessage(
|
||||
nameChannel,
|
||||
AvatarAction.Killed(player_guid, target.VehicleSeated)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class CorpseConverter extends AvatarConverter {
|
|||
*/
|
||||
private def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = {
|
||||
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(
|
||||
obj.Faction,
|
||||
bops = false,
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ class NumberPoolActor(pool: NumberPool) extends Actor {
|
|||
sender() ! NumberPoolActor.ReturnNumberResult(number, ex, id)
|
||||
|
||||
case msg =>
|
||||
log.info(s"received an unexpected message - ${msg.toString}")
|
||||
log.warn(s"Received an unexpected message - ${msg.toString}")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class UniqueNumberSystem(private val guid: NumberPoolHub, private val poolActors
|
|||
}
|
||||
} catch {
|
||||
case _: Exception =>
|
||||
log.info(s"$obj is already unregistered")
|
||||
log.warn(s"$obj is already unregistered")
|
||||
callback ! Success(obj)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ object GenericHackables {
|
|||
def FinishHacking(target: PlanetSideServerObject with Hackable, user: Player, unk: Long)(): Unit = {
|
||||
import akka.pattern.ask
|
||||
import scala.concurrent.duration._
|
||||
log.info(s"Hacked a $target")
|
||||
log.info(s"${user.Name} hacked a ${target.Definition.Name}")
|
||||
// Wait for the target actor to set the HackedBy property, otherwise LocalAction.HackTemporarily will not complete properly
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
val tplayer = user
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class IFFLockControl(lock: IFFLock)
|
|||
)
|
||||
} else {
|
||||
val log = org.log4s.getLogger
|
||||
log.warn("IFF lock is being hacked, but don't know how to handle this state:")
|
||||
log.warn(s"IFF lock is being hacked by ${player.Faction}, but don't know how to handle this state:")
|
||||
log.warn(s"Lock - Faction=${lock.Faction}, HackedBy=${lock.HackedBy}")
|
||||
log.warn(s"Player - Faction=${player.Faction}")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class PainboxControl(painbox: Painbox) extends PoweredAmenityControl {
|
|||
if (painbox.Owner.Continent.matches("c[0-9]")) {
|
||||
//are we in a safe zone?
|
||||
// todo: handle non-radius painboxes in caverns properly
|
||||
log.info(s"Skipping initialization of ${painbox.GUID} on ${painbox.Owner.Continent} - ${painbox.Position}")
|
||||
log.debug(s"Skipping initialization of ${painbox.GUID} on ${painbox.Owner.Continent} - ${painbox.Position}")
|
||||
disabled = true
|
||||
} else {
|
||||
if (painbox.Definition.HasNearestDoorDependency) {
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class ResourceSiloControl(resourceSilo: ResourceSilo)
|
|||
// Only send updated capacitor display value to all clients if it has actually changed
|
||||
if (resourceSilo.CapacitorDisplay != siloDisplayBeforeChange) {
|
||||
log.trace(
|
||||
s"Silo ${resourceSilo.GUID} NTU bar level has changed from $siloDisplayBeforeChange to ${resourceSilo.CapacitorDisplay}"
|
||||
s"UpdateChargeLevel: silo ${resourceSilo.GUID} NTU bar level has changed from $siloDisplayBeforeChange to ${resourceSilo.CapacitorDisplay}"
|
||||
)
|
||||
zone.AvatarEvents ! AvatarServiceMessage(
|
||||
zone.id,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2020 PSForever
|
||||
package net.psforever.objects.serverobject.terminals
|
||||
|
||||
import net.psforever.objects.Player
|
||||
import net.psforever.objects.serverobject.CommonMessages
|
||||
import net.psforever.objects.serverobject.terminals.capture.CaptureTerminal
|
||||
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
|
||||
|
||||
import scala.util.{Failure, Success}
|
||||
|
||||
object CaptureTerminals {
|
||||
private val log = org.log4s.getLogger("CaptureTerminals")
|
||||
|
||||
/**
|
||||
* The process of hacking an object is completed.
|
||||
* Pass the message onto the hackable object and onto the local events system.
|
||||
* @param target the `Hackable` object that has been hacked
|
||||
* @param unk na;
|
||||
* used by `HackMessage` as `unk5`
|
||||
* @see `HackMessage`
|
||||
*/
|
||||
//TODO add params here depending on which params in HackMessage are important
|
||||
def FinishHackingCaptureConsole(target: CaptureTerminal, hackingPlayer: Player, unk: Long)(): Unit = {
|
||||
import akka.pattern.ask
|
||||
import scala.concurrent.duration._
|
||||
log.info(s"${hackingPlayer.toString} hacked a ${target.Definition.Name}")
|
||||
// Wait for the target actor to set the HackedBy property
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
ask(target.Actor, CommonMessages.Hack(hackingPlayer, target))(1 second).mapTo[Boolean].onComplete {
|
||||
case Success(_) =>
|
||||
target.Zone.LocalEvents ! LocalServiceMessage(
|
||||
target.Zone.id,
|
||||
LocalAction.TriggerSound(hackingPlayer.GUID, target.HackSound, hackingPlayer.Position, 30, 0.49803925f)
|
||||
)
|
||||
val isResecured = hackingPlayer.Faction == target.Faction
|
||||
if (isResecured) {
|
||||
// Resecure the CC
|
||||
target.Zone.LocalEvents ! LocalServiceMessage(
|
||||
target.Zone.id,
|
||||
LocalAction.ResecureCaptureTerminal(
|
||||
target
|
||||
)
|
||||
)
|
||||
}
|
||||
else {
|
||||
// Start the CC hack timer
|
||||
target.Zone.LocalEvents ! LocalServiceMessage(
|
||||
target.Zone.id,
|
||||
LocalAction.StartCaptureTerminalHack(
|
||||
target
|
||||
)
|
||||
)
|
||||
}
|
||||
case Failure(_) => log.warn(s"Hack message failed on target guid: ${target.GUID}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ object CaptureTerminals {
|
|||
import akka.pattern.ask
|
||||
|
||||
import scala.concurrent.duration._
|
||||
log.info(s"${hackingPlayer.toString} Hacked a ${target.toString}")
|
||||
log.info(s"${hackingPlayer.toString} hacked a ${target.Definition.Name}")
|
||||
// Wait for the target actor to set the HackedBy property
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
ask(target.Actor, CommonMessages.Hack(hackingPlayer, target))(1 second).mapTo[Boolean].onComplete {
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ object WeaponTurrets {
|
|||
* @param upgrade the upgrade being applied to the turret (usually, it's weapon system)
|
||||
*/
|
||||
def FinishUpgradingMannedTurret(target: FacilityTurret, upgrade: TurretUpgrade.Value): Unit = {
|
||||
log.info(s"Converting manned wall turret weapon to $upgrade")
|
||||
log.info(s"Manned wall turret weapon being converted to $upgrade")
|
||||
val zone = target.Zone
|
||||
val events = zone.VehicleEvents
|
||||
events ! VehicleServiceMessage.TurretUpgrade(TurretUpgrader.ClearSpecific(List(target), zone))
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ object CargoBehavior {
|
|||
)
|
||||
if (distance <= 64) {
|
||||
//cargo vehicle is close enough to assume to be physically within the carrier's hold; mount it
|
||||
log.info(s"HandleCheckCargoMounting: mounting cargo vehicle in carrier at distance of $distance")
|
||||
log.debug(s"HandleCheckCargoMounting: mounting cargo vehicle in carrier at distance of $distance")
|
||||
cargo.MountedIn = carrierGUID
|
||||
hold.mount(cargo)
|
||||
cargo.Velocity = None
|
||||
|
|
@ -160,12 +160,10 @@ object CargoBehavior {
|
|||
VehicleAction.SendResponse(PlanetSideGUID(0), PlanetsideAttributeMessage(cargoGUID, 68, cargo.Shields))
|
||||
)
|
||||
val (attachMsg, mountPointMsg) = CargoMountBehaviorForAll(carrier, cargo, mountPoint)
|
||||
log.info(s"HandleCheckCargoMounting: $attachMsg")
|
||||
log.info(s"HandleCheckCargoMounting: $mountPointMsg")
|
||||
false
|
||||
} else if (distance > 625 || iteration >= 40) {
|
||||
//vehicles moved too far away or took too long to get into proper position; abort mounting
|
||||
log.info(
|
||||
log.debug(
|
||||
"HandleCheckCargoMounting: cargo vehicle is too far away or didn't mount within allocated time - aborting"
|
||||
)
|
||||
val cargoDriverGUID = cargo.Seats(0).occupant.get.GUID
|
||||
|
|
@ -185,7 +183,7 @@ object CargoBehavior {
|
|||
)
|
||||
)
|
||||
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"
|
||||
//obviously, don't do this
|
||||
} else {
|
||||
|
|
@ -263,7 +261,7 @@ object CargoBehavior {
|
|||
)
|
||||
if (distance > 225) {
|
||||
//cargo vehicle has moved far enough away; close the carrier's hold door
|
||||
log.info(
|
||||
log.debug(
|
||||
s"HandleCheckCargoDismounting: dismount of cargo vehicle from carrier complete at distance of $distance"
|
||||
)
|
||||
val cargoDriverGUID = cargo.Seats(0).occupant.get.GUID
|
||||
|
|
@ -283,7 +281,7 @@ object CargoBehavior {
|
|||
)
|
||||
)
|
||||
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"
|
||||
//obviously, don't do this
|
||||
} else if (iteration > 40) {
|
||||
|
|
@ -403,8 +401,7 @@ object CargoBehavior {
|
|||
events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, ejectCargoMsg))
|
||||
events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, detachCargoMsg))
|
||||
events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, resetCargoMsg))
|
||||
log.debug(ejectCargoMsg.toString)
|
||||
log.debug(detachCargoMsg.toString)
|
||||
log.debug(s"HandleVehicleCargoDismount: eject - $ejectCargoMsg, detach - $detachCargoMsg")
|
||||
if (driverOpt.isEmpty) {
|
||||
//TODO cargo should drop like a rock like normal; until then, deconstruct it
|
||||
cargo.Actor ! Vehicle.Deconstruct()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
package net.psforever.packet.game
|
||||
|
||||
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.codecs._
|
||||
import shapeless.{::, HNil}
|
||||
|
|
@ -14,7 +14,7 @@ final case class CharacterCreateRequestMessage(
|
|||
name: String,
|
||||
headId: Int,
|
||||
voiceId: CharacterVoice.Value,
|
||||
gender: CharacterGender.Value,
|
||||
gender: CharacterSex,
|
||||
empire: PlanetSideEmpire.Value
|
||||
) extends PlanetSideGamePacket {
|
||||
type Packet = CharacterCreateRequestMessage
|
||||
|
|
@ -29,7 +29,7 @@ object CharacterCreateRequestMessage extends Marshallable[CharacterCreateRequest
|
|||
("name" | PacketHelpers.encodedWideString) ::
|
||||
("headId" | uint8L) ::
|
||||
("voiceId" | character_voice_codec) ::
|
||||
("gender" | CharacterGender.codec) ::
|
||||
("gender" | CharacterSex.codec) ::
|
||||
("empire" | PlanetSideEmpire.codec)
|
||||
).exmap[CharacterCreateRequestMessage](
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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 appearance coincides with the data available from the `CharacterCreateRequestMessage` packet.
|
||||
* @see `PlanetSideEmpire`<br>
|
||||
* `CharacterGender`
|
||||
* `CharacterSex`
|
||||
* @param name the unique name of the avatar;
|
||||
* minimum of two characters
|
||||
* @param faction the empire to which the avatar belongs
|
||||
|
|
@ -21,7 +21,7 @@ import net.psforever.types._
|
|||
final case class BasicCharacterData(
|
||||
name: String,
|
||||
faction: PlanetSideEmpire.Value,
|
||||
sex: CharacterGender.Value,
|
||||
sex: CharacterSex,
|
||||
head: Int,
|
||||
voice: CharacterVoice.Value
|
||||
)
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] {
|
|||
("name" | PacketHelpers.encodedWideStringAligned(namePadding(name_padding, data.v2))) ::
|
||||
("exosuit" | ExoSuitType.codec) ::
|
||||
("unk5" | uint2) :: //unknown
|
||||
("sex" | CharacterGender.codec) ::
|
||||
("sex" | CharacterSex.codec) ::
|
||||
("head" | uint8L) ::
|
||||
("voice" | CharacterVoice.codec) ::
|
||||
("unk6" | uint32L) ::
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package net.psforever.persistence
|
|||
import net.psforever.objects.avatar
|
||||
import net.psforever.objects.avatar.Cosmetic
|
||||
import org.joda.time.LocalDateTime
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
|
||||
case class Avatar(
|
||||
id: Int,
|
||||
|
|
@ -27,7 +27,7 @@ case class Avatar(
|
|||
id,
|
||||
name,
|
||||
PlanetSideEmpire(factionId),
|
||||
CharacterGender(genderId),
|
||||
CharacterSex.valuesToEntriesMap(genderId),
|
||||
headId,
|
||||
CharacterVoice(voiceId),
|
||||
bep,
|
||||
|
|
|
|||
|
|
@ -25,37 +25,33 @@ class AccountIntermediaryService extends Actor {
|
|||
private val IPAddressBySessionID = mutable.Map[Long, IPAddress]()
|
||||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
override def preStart() = {
|
||||
log.trace("Starting...")
|
||||
}
|
||||
|
||||
def receive = {
|
||||
// Called by the LoginSessionActor
|
||||
case StoreAccountData(token, account) =>
|
||||
accountsByToken += (token -> account)
|
||||
log.info(s"Storing intermediary account data for ${account.id}")
|
||||
log.trace(s"Storing intermediary account data for ${account.id}")
|
||||
|
||||
// Called by the WorldSessionActor
|
||||
case RetrieveAccountData(token) =>
|
||||
accountsByToken.remove(token) match {
|
||||
case Some(acc) =>
|
||||
sender() ! ReceiveAccountData(acc)
|
||||
log.info(s"Retrieving intermediary account data for $acc")
|
||||
log.trace(s"Retrieving intermediary account data for $acc")
|
||||
case None =>
|
||||
log.error(s"Unable to retrieve intermediary account data for $token")
|
||||
}
|
||||
|
||||
case StoreIPAddress(sessionID, address) =>
|
||||
IPAddressBySessionID += (sessionID -> address)
|
||||
log.info(s"Storing IP address (${address.Address}) for sessionID : $sessionID")
|
||||
log.trace(s"Storing IP address (${address.Address}) for sessionID : $sessionID")
|
||||
|
||||
case RetrieveIPAddress(sessionID) =>
|
||||
val address: Option[IPAddress] = IPAddressBySessionID.remove(sessionID)
|
||||
if (address.nonEmpty) {
|
||||
sender() ! ReceiveIPAddress(address.get)
|
||||
log.info(s"Retrieving IP address data for sessionID : ${sessionID}")
|
||||
log.trace(s"Retrieving IP address data for sessionID : $sessionID")
|
||||
} else {
|
||||
log.error(s"Unable to retrieve IP address data for sessionID : ${sessionID}")
|
||||
log.error(s"Unable to retrieve IP address data for sessionID : $sessionID")
|
||||
}
|
||||
|
||||
case msg =>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ class AccountPersistenceService extends Actor {
|
|||
*/
|
||||
override def preStart(): Unit = {
|
||||
ServiceManager.serviceManager ! ServiceManager.Lookup("squad")
|
||||
log.trace("Awaiting system service hooks ...")
|
||||
}
|
||||
|
||||
override def postStop(): Unit = {
|
||||
|
|
@ -410,7 +409,7 @@ class PersistenceMonitor(name: String, squadService: ActorRef) extends Actor {
|
|||
Deployables.Disown(inZone, avatar, context.parent)
|
||||
inZone.Population.tell(Zone.Population.Leave(avatar), context.parent)
|
||||
inZone.tasks.tell(GUIDTask.UnregisterObjectTask(avatar.locker)(inZone.GUID), context.parent)
|
||||
log.info(s"logout of ${avatar.name}")
|
||||
log.info(s"Logout of ${avatar.name}")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,17 +15,12 @@ class AvatarService(zone: Zone) extends Actor {
|
|||
|
||||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
override def preStart() = {
|
||||
log.trace(s"Awaiting ${zone.id} avatar events ...")
|
||||
}
|
||||
|
||||
val AvatarEvents = new GenericEventBus[AvatarServiceResponse] //AvatarEventBus
|
||||
|
||||
def receive = {
|
||||
case Service.Join(channel) =>
|
||||
val path = s"/$channel/Avatar"
|
||||
val who = sender()
|
||||
log.info(s"$who has joined $path")
|
||||
AvatarEvents.subscribe(who, path)
|
||||
|
||||
case Service.Leave(None) =>
|
||||
|
|
@ -33,8 +28,6 @@ class AvatarService(zone: Zone) extends Actor {
|
|||
|
||||
case Service.Leave(Some(channel)) =>
|
||||
val path = s"/$channel/Avatar"
|
||||
val who = sender()
|
||||
log.info(s"$who has left $path")
|
||||
AvatarEvents.unsubscribe(sender(), path)
|
||||
|
||||
case Service.LeaveAll() =>
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ class ChatService(context: ActorContext[ChatService.Command]) extends AbstractBe
|
|||
)
|
||||
|
||||
case (None, _, _, _) =>
|
||||
log.error("received message from non-subscribed actor")
|
||||
log.warn("received message from non-subscribed actor")
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,38 +9,26 @@ import net.psforever.services.{GenericEventBus, Service}
|
|||
class GalaxyService extends Actor {
|
||||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
override def preStart() = {
|
||||
log.info("Starting...")
|
||||
}
|
||||
|
||||
val GalaxyEvents = new GenericEventBus[GalaxyServiceResponse]
|
||||
|
||||
def receive: Receive = {
|
||||
case Service.Join(faction) if "TRNCVS".containsSlice(faction) =>
|
||||
val path = s"/$faction/Galaxy"
|
||||
val who = sender()
|
||||
log.trace(s"$who has joined $path")
|
||||
GalaxyEvents.subscribe(who, path)
|
||||
GalaxyEvents.subscribe(sender(), path)
|
||||
|
||||
case Service.Join("galaxy") =>
|
||||
val path = s"/Galaxy"
|
||||
val who = sender()
|
||||
log.trace(s"$who has joined $path")
|
||||
GalaxyEvents.subscribe(who, path)
|
||||
GalaxyEvents.subscribe(sender(), path)
|
||||
|
||||
case Service.Join(channel) =>
|
||||
val path = s"/$channel/Galaxy"
|
||||
val who = sender()
|
||||
log.trace(s"$who has joined $path")
|
||||
GalaxyEvents.subscribe(who, path)
|
||||
GalaxyEvents.subscribe(sender(), path)
|
||||
|
||||
case Service.Leave(None) =>
|
||||
GalaxyEvents.unsubscribe(sender())
|
||||
|
||||
case Service.Leave(Some(channel)) =>
|
||||
val path = s"/$channel/Galaxy"
|
||||
val who = sender()
|
||||
log.trace(s"$who has left $path")
|
||||
GalaxyEvents.unsubscribe(sender(), path)
|
||||
|
||||
case Service.LeaveAll() =>
|
||||
|
|
@ -53,7 +41,7 @@ class GalaxyService extends Actor {
|
|||
GalaxyServiceResponse(s"/Galaxy", GalaxyResponse.MapUpdate(msg))
|
||||
)
|
||||
|
||||
case GalaxyAction.TransferPassenger(player_guid, temp_channel, vehicle, vehicle_to_delete, manifest) =>
|
||||
case GalaxyAction.TransferPassenger(_, temp_channel, vehicle, vehicle_to_delete, manifest) =>
|
||||
GalaxyEvents.publish(
|
||||
GalaxyServiceResponse(
|
||||
s"/$forChannel/Galaxy",
|
||||
|
|
@ -69,6 +57,6 @@ class GalaxyService extends Actor {
|
|||
)
|
||||
|
||||
case msg =>
|
||||
log.info(s"Unhandled message $msg from ${sender()}")
|
||||
log.warn(s"Unhandled message $msg from ${sender()}")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,27 +28,19 @@ class LocalService(zone: Zone) extends Actor {
|
|||
context.actorOf(Props[RouterTelepadActivation](), s"${zone.id}-telepad-activate-agent")
|
||||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
override def preStart() = {
|
||||
log.trace(s"Awaiting ${zone.id} local events ...")
|
||||
}
|
||||
|
||||
val LocalEvents = new GenericEventBus[LocalServiceResponse]
|
||||
|
||||
def receive: Receive = {
|
||||
case Service.Join(channel) =>
|
||||
val path = s"/$channel/Local"
|
||||
val who = sender()
|
||||
log.info(s"$who has joined $path")
|
||||
LocalEvents.subscribe(who, path)
|
||||
LocalEvents.subscribe(sender(), path)
|
||||
|
||||
case Service.Leave(None) =>
|
||||
LocalEvents.unsubscribe(sender())
|
||||
|
||||
case Service.Leave(Some(channel)) =>
|
||||
val path = s"/$channel/Local"
|
||||
val who = sender()
|
||||
log.info(s"$who has left $path")
|
||||
LocalEvents.unsubscribe(who, path)
|
||||
LocalEvents.unsubscribe(sender(), path)
|
||||
|
||||
case Service.LeaveAll() =>
|
||||
LocalEvents.unsubscribe(sender())
|
||||
|
|
@ -229,13 +221,6 @@ class LocalService(zone: Zone) extends Actor {
|
|||
//response from HackClearActor
|
||||
case HackClearActor.SendHackMessageHackCleared(target_guid, _, unk1, unk2) =>
|
||||
log.info(s"Clearing hack for $target_guid")
|
||||
LocalEvents.publish(
|
||||
LocalServiceResponse(
|
||||
s"/${zone.id}/Local",
|
||||
Service.defaultPlayerGUID,
|
||||
LocalResponse.SendHackMessageHackCleared(target_guid, unk1, unk2)
|
||||
)
|
||||
)
|
||||
|
||||
//message from ProximityTerminalControl
|
||||
case Terminal.StartProximityEffect(terminal) =>
|
||||
|
|
@ -323,7 +308,7 @@ class LocalService(zone: Zone) extends Actor {
|
|||
//get rid of previous linked remote telepad (if any)
|
||||
zone.GUID(internalTelepad.Telepad) match {
|
||||
case Some(old: TelepadDeployable) =>
|
||||
log.info(
|
||||
log.trace(
|
||||
s"ActivateTeleportSystem: old remote telepad@${old.GUID.guid} linked to internal@${internalTelepad.GUID.guid} will be deconstructed"
|
||||
)
|
||||
old.Active = false
|
||||
|
|
@ -333,7 +318,7 @@ class LocalService(zone: Zone) extends Actor {
|
|||
}
|
||||
internalTelepad.Telepad = remoteTelepad.GUID
|
||||
if (internalTelepad.Active) {
|
||||
log.info(
|
||||
log.trace(
|
||||
s"ActivateTeleportSystem: fully deployed router@${router.GUID.guid} in ${zone.id} will link internal@${internalTelepad.GUID.guid} and remote@${remoteTelepad.GUID.guid}"
|
||||
)
|
||||
LocalEvents.publish(
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class DeployableRemover(taskResolver: ActorRef) extends RemoverActor(taskResolve
|
|||
|
||||
override def SecondJob(entry: RemoverActor.Entry): Unit = {
|
||||
val obj = entry.obj.asInstanceOf[PlanetSideGameObject with Deployable]
|
||||
info(s"Deleting a ${obj.Definition.Name} deployable")
|
||||
trace(s"Deleting a ${obj.Definition.Name} deployable")
|
||||
context.parent ! DeployableRemover.EliminateDeployable(obj, obj.GUID, obj.Position, entry.zone)
|
||||
super.SecondJob(entry)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class HackCaptureActor extends Actor {
|
|||
|
||||
def receive: Receive = {
|
||||
case HackCaptureActor.StartCaptureTerminalHack(target, zone, unk1, unk2, startTime) =>
|
||||
log.trace(s"${target.GUID} is hacked.")
|
||||
log.trace(s"StartCaptureTerminalHack: ${target.GUID} is hacked.")
|
||||
|
||||
val duration = target.Definition match {
|
||||
case GlobalDefinitions.capture_terminal =>
|
||||
|
|
@ -49,7 +49,7 @@ class HackCaptureActor extends Actor {
|
|||
hackedObjects.find(_.target == target) match {
|
||||
case Some(_) =>
|
||||
log.trace(
|
||||
s"${target.GUID} was already hacked - removing it from the hacked objects list before re-adding it."
|
||||
s"StartCaptureTerminalHack: ${target.GUID} was already hacked - removing it from the hacked objects list before re-adding it."
|
||||
)
|
||||
hackedObjects = hackedObjects.filterNot(x => x.target == target)
|
||||
case _ => ;
|
||||
|
|
@ -70,7 +70,7 @@ class HackCaptureActor extends Actor {
|
|||
val finishedHacks = hackedObjects.filter(x => now - x.hack_timestamp >= x.duration.toNanos)
|
||||
hackedObjects = stillHacked
|
||||
finishedHacks.foreach(entry => {
|
||||
log.trace(s"Capture terminal hack timeout reached for terminal ${entry.target.GUID}")
|
||||
log.trace(s"ProcessCompleteHacks: capture terminal hack timeout reached for terminal ${entry.target.GUID}")
|
||||
|
||||
val hackedByFaction = entry.target.HackedBy.get.hackerFaction
|
||||
entry.target.Actor ! CommonMessages.ClearHack()
|
||||
|
|
@ -143,7 +143,7 @@ class HackCaptureActor extends Actor {
|
|||
val short_timeout: FiniteDuration =
|
||||
math.max(1, hackEntry.duration.toNanos - (System.nanoTime - hackEntry.hack_timestamp)) nanoseconds
|
||||
|
||||
log.trace(s"Still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds")
|
||||
log.trace(s"RestartTimer: still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds")
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
clearTrigger = context.system.scheduler.scheduleOnce(short_timeout, self, HackCaptureActor.ProcessCompleteHacks())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,12 +83,12 @@ class HackClearActor() extends Actor {
|
|||
case Some(hackEntry) =>
|
||||
val short_timeout: FiniteDuration = math.max(1, hackEntry.duration - (now - hackEntry.time)) nanoseconds
|
||||
|
||||
log.info(
|
||||
s"HackClearActor: Still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds"
|
||||
log.debug(
|
||||
s"HackClearActor: still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds"
|
||||
)
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
clearTrigger = context.system.scheduler.scheduleOnce(short_timeout, self, HackClearActor.TryClearHacks())
|
||||
case None => log.info("HackClearActor: No objects left in hacked objects list. Not rescheduling check.")
|
||||
case None => log.debug("HackClearActor: no objects left in hacked objects list. Not rescheduling check.")
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,16 +31,16 @@ class PropertyOverrideManager extends Actor {
|
|||
}
|
||||
|
||||
private def LoadOverridesFromFile(zoneId: Int): Unit = {
|
||||
val zoneOverrides = LoadFile(s"overrides/game_objects${zoneId}.adb.lst")
|
||||
val zoneOverrides = LoadFile(s"overrides/game_objects$zoneId.adb.lst")
|
||||
|
||||
if (zoneOverrides == null) {
|
||||
log.debug(s"No overrides found for zone ${zoneId} using filename game_objects${zoneId}.adb.lst")
|
||||
log.debug(s"PropertyOverride: no overrides found for zone $zoneId using filename game_objects$zoneId.adb.lst")
|
||||
return
|
||||
}
|
||||
|
||||
val grouped = zoneOverrides.groupBy(_._1).view.mapValues(_.map(x => (x._2, x._3)).toList).toMap
|
||||
|
||||
log.debug(s"Loaded property overrides for zone $zoneId: ${grouped.toString}")
|
||||
log.debug(s"PropertyOverride: loaded property overrides for zone $zoneId: ${grouped.toString}")
|
||||
overrides += (zoneId -> grouped)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -124,11 +124,7 @@ class SquadService extends Actor {
|
|||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
private def debug(msg: String): Unit = {
|
||||
log.info(msg)
|
||||
}
|
||||
|
||||
override def preStart(): Unit = {
|
||||
log.info("Starting...")
|
||||
log.debug(msg)
|
||||
}
|
||||
|
||||
override def postStop(): Unit = {
|
||||
|
|
@ -321,7 +317,7 @@ class SquadService extends Actor {
|
|||
case str if str.matches("//d+") =>
|
||||
Publish(to.toLong, msg, excluded)
|
||||
case _ =>
|
||||
log.error(s"Publish(String): subscriber information is an unhandled format - $to")
|
||||
log.warn(s"Publish(String): subscriber information is an unhandled format - $to")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -336,7 +332,7 @@ class SquadService extends Actor {
|
|||
case Some(user) =>
|
||||
user ! SquadServiceResponse("", msg)
|
||||
case None =>
|
||||
log.error(s"Publish(Long): subscriber information can not be found - $to")
|
||||
log.warn(s"Publish(Long): subscriber information can not be found - $to")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -383,7 +379,6 @@ class SquadService extends Actor {
|
|||
case Service.Join(faction) if "TRNCVS".indexOf(faction) > -1 =>
|
||||
val path = s"/$faction/Squad"
|
||||
val who = sender()
|
||||
debug(s"$who has joined $path")
|
||||
SquadEvents.subscribe(who, path)
|
||||
|
||||
//subscribe to the player's personal channel - necessary for future and previous squad information
|
||||
|
|
@ -392,7 +387,6 @@ class SquadService extends Actor {
|
|||
val longCharId = char_id.toLong
|
||||
val path = s"/$char_id/Squad"
|
||||
val who = sender()
|
||||
debug(s"$who has joined $path")
|
||||
context.watch(who)
|
||||
UserEvents += longCharId -> who
|
||||
refused(longCharId) = Nil
|
||||
|
|
@ -407,7 +401,6 @@ class SquadService extends Actor {
|
|||
case Service.Leave(Some(faction)) if "TRNCVS".indexOf(faction) > -1 =>
|
||||
val path = s"/$faction/Squad"
|
||||
val who = sender()
|
||||
debug(s"$who has left $path")
|
||||
SquadEvents.unsubscribe(who, path)
|
||||
|
||||
case Service.Leave(Some(char_id)) =>
|
||||
|
|
|
|||
|
|
@ -18,27 +18,19 @@ class VehicleService(zone: Zone) extends Actor {
|
|||
private val turretUpgrade: ActorRef = context.actorOf(Props[TurretUpgrader](), s"${zone.id}-turret-upgrade-agent")
|
||||
private[this] val log = org.log4s.getLogger
|
||||
|
||||
override def preStart() = {
|
||||
log.trace(s"Awaiting ${zone.id} vehicle events ...")
|
||||
}
|
||||
|
||||
val VehicleEvents = new GenericEventBus[VehicleServiceResponse]
|
||||
|
||||
def receive = {
|
||||
case Service.Join(channel) =>
|
||||
val path = s"/$channel/Vehicle"
|
||||
val who = sender()
|
||||
log.info(s"$who has joined $path")
|
||||
VehicleEvents.subscribe(who, path)
|
||||
VehicleEvents.subscribe(sender(), path)
|
||||
|
||||
case Service.Leave(None) =>
|
||||
VehicleEvents.unsubscribe(sender())
|
||||
|
||||
case Service.Leave(Some(channel)) =>
|
||||
val path = s"/$channel/Vehicle"
|
||||
val who = sender()
|
||||
log.info(s"$who has left $path")
|
||||
VehicleEvents.unsubscribe(who, path)
|
||||
VehicleEvents.unsubscribe(sender(), path)
|
||||
|
||||
case Service.LeaveAll() =>
|
||||
VehicleEvents.unsubscribe(sender())
|
||||
|
|
@ -387,7 +379,7 @@ class VehicleService(zone: Zone) extends Actor {
|
|||
}
|
||||
|
||||
case msg =>
|
||||
log.info(s"Unhandled message $msg from ${sender()}")
|
||||
log.warn(s"Unhandled message $msg from ${sender()}")
|
||||
}
|
||||
|
||||
import net.psforever.objects.serverobject.tube.SpawnTube
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] {
|
|||
)
|
||||
}
|
||||
})
|
||||
info(s"Converting manned wall turret weapon to $upgrade")
|
||||
debug(s"Converting manned wall turret weapon to $upgrade")
|
||||
|
||||
val oldBoxes = AllMountedWeaponMagazines(target)
|
||||
target.Upgrade = upgrade //perform upgrade
|
||||
|
|
@ -228,7 +228,7 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] {
|
|||
def FinishUpgradingTurret(entry: TurretUpgrader.Entry)(): Unit = {
|
||||
val target = entry.obj.asInstanceOf[FacilityTurret]
|
||||
val zone = entry.zone
|
||||
info(s"Wall turret finished ${target.Upgrade} upgrade")
|
||||
trace(s"Wall turret finished ${target.Upgrade} upgrade")
|
||||
target.ConfirmUpgrade(entry.upgrade)
|
||||
val targetGUID = target.GUID
|
||||
if (target.Health > 0) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
45
src/main/scala/net/psforever/types/CharacterSex.scala
Normal file
45
src/main/scala/net/psforever/types/CharacterSex.scala
Normal 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)
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ import scodec.codecs.uint
|
|||
* 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;
|
||||
* a female character with either entry would become mute, however.
|
||||
* @see `CharacterGender`
|
||||
* @see `CharacterSex`
|
||||
*/
|
||||
object CharacterVoice extends Enumeration {
|
||||
type Type = Value
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ package game
|
|||
import org.specs2.mutable._
|
||||
import net.psforever.packet._
|
||||
import net.psforever.packet.game._
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
import scodec.bits._
|
||||
|
||||
class CharacterCreateRequestMessageTest extends Specification {
|
||||
|
|
@ -16,7 +16,7 @@ class CharacterCreateRequestMessageTest extends Specification {
|
|||
name mustEqual "TestChar"
|
||||
head mustEqual 50
|
||||
voice mustEqual CharacterVoice.Voice5
|
||||
gender mustEqual CharacterGender.Female
|
||||
gender mustEqual CharacterSex.Female
|
||||
faction mustEqual PlanetSideEmpire.NC
|
||||
case _ =>
|
||||
ko
|
||||
|
|
@ -25,7 +25,7 @@ class CharacterCreateRequestMessageTest extends Specification {
|
|||
|
||||
"encode" in {
|
||||
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
|
||||
|
||||
pkt mustEqual string
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class CharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "ScrawnyRonnie"
|
||||
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.voice mustEqual CharacterVoice.Voice5
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -157,7 +157,7 @@ class CharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "ScrawnyRonnie"
|
||||
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.voice mustEqual CharacterVoice.Voice5
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -226,7 +226,7 @@ class CharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "Angello"
|
||||
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.voice mustEqual CharacterVoice.Voice2
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -300,7 +300,7 @@ class CharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"ScrawnyRonnie",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
5,
|
||||
CharacterVoice.Voice5
|
||||
),
|
||||
|
|
@ -408,7 +408,7 @@ class CharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"ScrawnyRonnie",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
5,
|
||||
CharacterVoice.Voice5
|
||||
),
|
||||
|
|
@ -524,7 +524,7 @@ class CharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"Angello",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
10,
|
||||
CharacterVoice.Voice2
|
||||
),
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "IlllIIIlllIlIllIlllIllI"
|
||||
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.voice mustEqual CharacterVoice.Voice1
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -258,7 +258,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "IlllIIIlllIlIllIlllIllI"
|
||||
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.voice mustEqual CharacterVoice.Voice1
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -443,7 +443,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "HaHaATRMax"
|
||||
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.voice mustEqual CharacterVoice.Voice1
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -670,7 +670,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
case CharacterAppearanceData(a, b, ribbons) =>
|
||||
a.app.name mustEqual "KiCkJr"
|
||||
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.voice mustEqual CharacterVoice.Voice4
|
||||
a.data.bops mustEqual false
|
||||
|
|
@ -1189,7 +1189,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
a.app mustEqual BasicCharacterData(
|
||||
"CCRIDER",
|
||||
PlanetSideEmpire.NC,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
20,
|
||||
CharacterVoice.Voice3
|
||||
)
|
||||
|
|
@ -1336,7 +1336,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
a.app mustEqual BasicCharacterData(
|
||||
"xRider912",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
4,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -1515,7 +1515,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"IlllIIIlllIlIllIlllIllI",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
41,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
@ -1697,7 +1697,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"IlllIIIlllIlIllIlllIllI",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
41,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
@ -1886,7 +1886,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"HaHaATRMax",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
57,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
@ -2103,7 +2103,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"KiCkJr",
|
||||
PlanetSideEmpire.NC,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
24,
|
||||
CharacterVoice.Voice4
|
||||
),
|
||||
|
|
@ -3588,7 +3588,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"CCRIDER",
|
||||
PlanetSideEmpire.NC,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
20,
|
||||
CharacterVoice.Voice3
|
||||
),
|
||||
|
|
@ -4512,7 +4512,7 @@ class DetailedCharacterDataTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"xRider912",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
4,
|
||||
CharacterVoice.Voice1
|
||||
),
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class MountedVehiclesTest extends Specification {
|
|||
a.app mustEqual BasicCharacterData(
|
||||
"ScrawnyRonnie",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
5,
|
||||
CharacterVoice.Voice5
|
||||
)
|
||||
|
|
@ -146,7 +146,7 @@ class MountedVehiclesTest extends Specification {
|
|||
BasicCharacterData(
|
||||
"ScrawnyRonnie",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
5,
|
||||
CharacterVoice.Voice5
|
||||
),
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.{Avatar, BattleRank, Implant}
|
||||
import net.psforever.objects.definition.ImplantDefinition
|
||||
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._
|
||||
|
||||
class AvatarTest extends Specification {
|
||||
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)
|
||||
player.Slot(0).Equipment = Tool(beamer)
|
||||
player.Slot(2).Equipment = Tool(suppressor)
|
||||
|
|
@ -26,10 +26,10 @@ class AvatarTest extends Specification {
|
|||
}
|
||||
|
||||
"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.faction mustEqual PlanetSideEmpire.TR
|
||||
av.sex mustEqual CharacterGender.Male
|
||||
av.sex mustEqual CharacterSex.Male
|
||||
av.head mustEqual 0
|
||||
av.voice mustEqual CharacterVoice.Voice5
|
||||
av.bep mustEqual 0
|
||||
|
|
@ -39,7 +39,7 @@ class AvatarTest extends Specification {
|
|||
}
|
||||
|
||||
"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.copy(bep = -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
|
||||
"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(0) must beNone
|
||||
obj.implants(1) must beNone
|
||||
|
|
@ -61,7 +61,7 @@ class AvatarTest extends Specification {
|
|||
0,
|
||||
"Chord",
|
||||
PlanetSideEmpire.TR,
|
||||
CharacterGender.Male,
|
||||
CharacterSex.Male,
|
||||
0,
|
||||
CharacterVoice.Voice5,
|
||||
bep = BattleRank.BR6.experience
|
||||
|
|
@ -81,7 +81,7 @@ class AvatarTest extends Specification {
|
|||
"can not install the same type of implant twice" in {
|
||||
val testplant1 = 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[
|
||||
AssertionError
|
||||
]
|
||||
|
|
@ -91,7 +91,7 @@ class AvatarTest extends Specification {
|
|||
val testplant1 = Implant(new ImplantDefinition(ImplantType.AdvancedRegen))
|
||||
val testplant2 = Implant(new ImplantDefinition(ImplantType.Surge))
|
||||
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(
|
||||
bep = BattleRank.BR12.value,
|
||||
implants = Seq(Some(testplant1), Some(testplant2), Some(testplant3))
|
||||
|
|
|
|||
|
|
@ -648,7 +648,7 @@ class ConverterTest extends Specification {
|
|||
}
|
||||
|
||||
"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 = {
|
||||
/*
|
||||
Create an AmmoBoxDefinition with which to build two AmmoBoxes
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class DamageCalculationsTests extends Specification {
|
|||
val wep_prof = wep_fmode.Add
|
||||
val proj = DamageModelTests.projectile
|
||||
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 target = Vehicle(GlobalDefinitions.fury)
|
||||
target.Position = Vector3(10, 0, 0)
|
||||
|
|
@ -450,7 +450,7 @@ class DamageCalculationsTests extends Specification {
|
|||
|
||||
"galaxy gunship reduction (target is not a vehicle)" in {
|
||||
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(
|
||||
SourceEntry(tplayer),
|
||||
ProjectileReason(
|
||||
|
|
@ -479,7 +479,7 @@ class ResistanceCalculationsTests extends Specification {
|
|||
val wep = GlobalDefinitions.galaxy_gunship_cannon
|
||||
val wep_fmode = Tool(wep).FireMode
|
||||
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)
|
||||
|
||||
"ResistanceCalculations" should {
|
||||
|
|
@ -515,7 +515,7 @@ class ResistanceCalculationsTests extends Specification {
|
|||
}
|
||||
|
||||
"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
|
||||
val resprojectile = DamageInteraction(
|
||||
SourceEntry(target),
|
||||
|
|
@ -592,7 +592,7 @@ class ResolutionCalculationsTests extends Specification {
|
|||
val wep = GlobalDefinitions.galaxy_gunship_cannon
|
||||
val wep_fmode = Tool(wep).FireMode
|
||||
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()
|
||||
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)
|
||||
}
|
||||
|
||||
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.Spawn()
|
||||
"calculate no max damage for vehicles" in {
|
||||
|
|
@ -740,7 +740,7 @@ class DamageModelTests extends Specification {
|
|||
val wep_tool = Tool(wep)
|
||||
val wep_fmode = wep_tool.FireMode
|
||||
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()
|
||||
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 {
|
||||
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.Health mustEqual 100
|
||||
tplayer.Armor mustEqual 50
|
||||
|
|
@ -789,7 +789,7 @@ class DamageModelTests extends Specification {
|
|||
|
||||
"resolve infantry targets in a specific way" in {
|
||||
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.Health mustEqual 100
|
||||
tplayer.Armor mustEqual 50
|
||||
|
|
@ -811,7 +811,7 @@ class DamageModelTests extends Specification {
|
|||
|
||||
"resolve infantry targets, with damage overflow" in {
|
||||
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.Health mustEqual 100
|
||||
tplayer.Armor mustEqual 50
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import net.psforever.objects.vital.base.DamageResolution
|
|||
import net.psforever.objects.vital.projectile.ProjectileReason
|
||||
|
||||
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 weaponA = Tool(GlobalDefinitions.phoenix) //decimator
|
||||
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 {
|
||||
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)
|
||||
val target = new Terminal(new TerminalDefinition(0) {
|
||||
Damageable = true
|
||||
|
|
@ -240,7 +240,7 @@ class DamageableTest extends Specification {
|
|||
|
||||
"permit jamming friendly targets if the target is hacked" in {
|
||||
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)
|
||||
val target = new SensorDeployable(GlobalDefinitions.motionalarmsensor)
|
||||
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 gen = Generator(GlobalDefinitions.generator) //guid=2
|
||||
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(gen, 2)
|
||||
guid.register(player1, 3)
|
||||
|
|
@ -355,7 +355,7 @@ class DamageableEntityDestroyedTest extends ActorTest {
|
|||
mech.Position = Vector3(1, 0, 0)
|
||||
mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control")
|
||||
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.Spawn()
|
||||
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 gen = Generator(GlobalDefinitions.generator) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
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 term = Terminal(GlobalDefinitions.order_terminal) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
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 mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
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 mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -784,13 +784,13 @@ class DamageableWeaponTurretDamageTest extends ActorTest {
|
|||
turret.Zone = zone
|
||||
turret.Position = Vector3(1, 0, 0)
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -882,13 +882,13 @@ class DamageableWeaponTurretJammerTest extends ActorTest {
|
|||
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
|
||||
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -982,13 +982,13 @@ class DamageableWeaponTurretDestructionTest extends ActorTest {
|
|||
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
|
||||
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -1133,13 +1133,13 @@ class DamageableVehicleDamageTest extends ActorTest {
|
|||
atv.Position = Vector3(1, 0, 0)
|
||||
|
||||
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.Position = Vector3(2, 0, 0)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -1242,18 +1242,18 @@ class DamageableVehicleDamageMountedTest extends ActorTest {
|
|||
atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control")
|
||||
|
||||
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.Position = Vector3(2, 0, 0)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
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()
|
||||
val player3Probe = TestProbe()
|
||||
player3.Actor = player3Probe.ref
|
||||
|
|
@ -1387,18 +1387,18 @@ class DamageableVehicleJammeringMountedTest extends ActorTest {
|
|||
lodestar.Position = Vector3(1, 0, 0)
|
||||
|
||||
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.Position = Vector3(2, 0, 0)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
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()
|
||||
val player3Probe = TestProbe()
|
||||
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 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.Position = Vector3(2, 0, 0)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
|
|
@ -1595,18 +1595,18 @@ class DamageableVehicleDestroyMountedTest extends ActorTest {
|
|||
lodestar.Position = Vector3(1, 0, 0)
|
||||
|
||||
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.Position = Vector3(2, 0, 0)
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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()
|
||||
val player2Probe = TestProbe()
|
||||
player2.Actor = player2Probe.ref
|
||||
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()
|
||||
val player3Probe = TestProbe()
|
||||
player3.Actor = player3Probe.ref
|
||||
|
|
|
|||
|
|
@ -320,10 +320,10 @@ class ExplosiveDeployableJammerTest extends ActorTest {
|
|||
|
||||
val j_mine = Deployables.Make(DeployedItem.jammer_mine)().asInstanceOf[ExplosiveDeployable] //guid=1
|
||||
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()
|
||||
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()
|
||||
val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5
|
||||
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 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()
|
||||
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()
|
||||
val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5
|
||||
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 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()
|
||||
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()
|
||||
val weapon = Tool(GlobalDefinitions.suppressor) //guid=5
|
||||
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")
|
||||
|
||||
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)
|
||||
val reply1a = receiveOne(200 milliseconds)
|
||||
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")
|
||||
|
||||
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)
|
||||
val reply1a = receiveOne(200 milliseconds)
|
||||
assert(reply1a.isInstanceOf[Mountable.MountMessages])
|
||||
|
|
@ -702,7 +702,7 @@ class TurretControlBlockMountTest extends ActorTest {
|
|||
assert(reply1b.response.isInstanceOf[Mountable.CanMount])
|
||||
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)
|
||||
val reply2a = receiveOne(200 milliseconds)
|
||||
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")
|
||||
|
||||
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)
|
||||
val reply1a = receiveOne(200 milliseconds)
|
||||
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")
|
||||
|
||||
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)
|
||||
|
||||
val reply1a = receiveOne(200 milliseconds)
|
||||
assert(reply1a.isInstanceOf[Mountable.MountMessages])
|
||||
val reply1b = reply1a.asInstanceOf[Mountable.MountMessages]
|
||||
|
|
@ -775,7 +776,7 @@ class TurretControlBetrayalMountTest extends ActorTest {
|
|||
val probe = new TestProbe(system)
|
||||
|
||||
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)
|
||||
obj.Actor.tell(Mountable.TryMount(player, 1), probe.ref)
|
||||
val reply1a = probe.receiveOne(200 milliseconds)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import org.specs2.mutable.Specification
|
|||
import scala.concurrent.duration._
|
||||
|
||||
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 {
|
||||
"construct" in {
|
||||
|
|
@ -148,7 +148,7 @@ object DoorControlTest {
|
|||
GlobalDefinitions.building
|
||||
)
|
||||
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)
|
||||
(player, door)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -207,13 +207,13 @@ class EnvironmentAttributeTest extends Specification {
|
|||
|
||||
"GantryDenialField" should {
|
||||
"interact with players" in {
|
||||
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))
|
||||
obj.Spawn()
|
||||
EnvironmentAttribute.GantryDenialField.canInteractWith(obj) mustEqual true
|
||||
}
|
||||
|
||||
"not interact with dead players" in {
|
||||
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))
|
||||
obj.isAlive mustEqual false
|
||||
EnvironmentAttribute.GantryDenialField.canInteractWith(obj) mustEqual false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class FacilityTurretControl1Test 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)
|
||||
obj.GUID = PlanetSideGUID(1)
|
||||
obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control")
|
||||
|
|
@ -127,7 +127,7 @@ class FacilityTurretControl2Test 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)
|
||||
obj.GUID = PlanetSideGUID(1)
|
||||
obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control")
|
||||
|
|
@ -153,7 +153,7 @@ class FacilityTurretControl3Test 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)
|
||||
obj.GUID = PlanetSideGUID(1)
|
||||
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 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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class GeneratorControlDamageTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ class GeneratorControlCriticalTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ class GeneratorControlDestroyedTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
player1.Actor = TestProbe().ref
|
||||
|
|
@ -343,13 +343,13 @@ class GeneratorControlKillsTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
val player1Probe = TestProbe()
|
||||
player1.Actor = player1Probe.ref
|
||||
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.Spawn()
|
||||
val player2Probe = TestProbe()
|
||||
|
|
@ -481,7 +481,7 @@ class GeneratorControlNotDestroyTwice extends ActorTest {
|
|||
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
|
||||
val gen = Generator(GeneratorTest.generator_definition) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
guid.register(gen, 2)
|
||||
|
|
@ -572,7 +572,7 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
val player1Probe = TestProbe()
|
||||
|
|
@ -671,7 +671,7 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
val player1Probe = TestProbe()
|
||||
|
|
@ -774,7 +774,7 @@ class GeneratorControlRepairPastRestorePoint extends ActorTest {
|
|||
gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control")
|
||||
|
||||
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.Spawn()
|
||||
val player1Probe = TestProbe()
|
||||
|
|
|
|||
|
|
@ -98,6 +98,6 @@ object IFFLockControlTest {
|
|||
GlobalDefinitions.building
|
||||
)
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@ package objects
|
|||
|
||||
import net.psforever.objects._
|
||||
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.avatar.Avatar
|
||||
import org.specs2.mutable._
|
||||
|
||||
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 = {
|
||||
new Player(avatar) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import net.psforever.objects.avatar.Avatar
|
|||
import net.psforever.objects.definition.ObjectDefinition
|
||||
import net.psforever.objects.serverobject.mount._
|
||||
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
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ class MountableControl1Test extends ActorTest {
|
|||
class MountableControl2Test extends ActorTest {
|
||||
"MountableControl" should {
|
||||
"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
|
||||
obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable")
|
||||
val msg = Mountable.TryMount(player, 0)
|
||||
|
|
@ -46,8 +46,8 @@ class MountableControl2Test extends ActorTest {
|
|||
class MountableControl3Test extends ActorTest {
|
||||
"MountableControl" should {
|
||||
"block a player from mounting" in {
|
||||
val player1 = Player(Avatar(0, "test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute))
|
||||
val player2 = Player(Avatar(1, "test2", 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, CharacterSex.Male, 0, CharacterVoice.Mute))
|
||||
val obj = new MountableTest.MountableTestObject
|
||||
obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable")
|
||||
obj.Actor ! Mountable.TryMount(player1, 0)
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ import net.psforever.objects.{GlobalDefinitions, Player, Vehicle}
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.serverobject.shuttle.OrbitalShuttle
|
||||
import net.psforever.objects.vehicles.AccessPermissionGroup
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
import org.specs2.mutable.Specification
|
||||
|
||||
class OrbitalShuttleTest extends Specification {
|
||||
val testAvatar1 = Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
|
||||
val testAvatar2 = Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
|
||||
val testAvatar3 = Avatar(2, "TestCharacter3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
|
||||
val testAvatar1 = Avatar(0, "TestCharacter1", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
|
||||
val testAvatar2 = Avatar(1, "TestCharacter2", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
|
||||
val testAvatar3 = Avatar(2, "TestCharacter3", PlanetSideEmpire.TR, CharacterSex.Male, 0, CharacterVoice.Mute)
|
||||
|
||||
"OrbitalShuttle" should {
|
||||
"construct (proper definition)" in {
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ import scala.concurrent.duration._
|
|||
|
||||
class PlayerControlHealTest extends ActorTest {
|
||||
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 =
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val zone = new Zone("test", new ZoneMap("test"), 0) {
|
||||
|
|
@ -111,7 +111,7 @@ class PlayerControlHealTest extends ActorTest {
|
|||
}
|
||||
class PlayerControlHealSelfTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val zone = new Zone("test", new ZoneMap("test"), 0) {
|
||||
|
|
@ -186,9 +186,9 @@ class PlayerControlHealSelfTest extends ActorTest {
|
|||
|
||||
class PlayerControlRepairTest extends ActorTest {
|
||||
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 =
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val zone = new Zone("test", new ZoneMap("test"), 0) {
|
||||
|
|
@ -282,7 +282,7 @@ class PlayerControlRepairTest extends ActorTest {
|
|||
|
||||
class PlayerControlRepairSelfTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val zone = new Zone("test", new ZoneMap("test"), 0) {
|
||||
|
|
@ -357,9 +357,9 @@ class PlayerControlRepairSelfTest extends ActorTest {
|
|||
|
||||
class PlayerControlDamageTest extends ActorTest {
|
||||
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 =
|
||||
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 activityProbe = TestProbe()
|
||||
val guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
|
|
@ -462,9 +462,9 @@ class PlayerControlDamageTest extends ActorTest {
|
|||
|
||||
class PlayerControlDeathStandingTest extends ActorTest {
|
||||
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 =
|
||||
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 activityProbe = TestProbe()
|
||||
val guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
|
|
@ -600,9 +600,9 @@ class PlayerControlDeathStandingTest extends ActorTest {
|
|||
|
||||
class PlayerControlDeathSeatedTest extends ActorTest {
|
||||
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 =
|
||||
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 activityProbe = TestProbe()
|
||||
val guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
|
|
@ -756,7 +756,7 @@ class PlayerControlDeathSeatedTest extends ActorTest {
|
|||
|
||||
class PlayerControlInteractWithWaterTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
@ -808,7 +808,7 @@ class PlayerControlInteractWithWaterTest extends ActorTest {
|
|||
|
||||
class PlayerControlStopInteractWithWaterTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
@ -871,7 +871,7 @@ class PlayerControlStopInteractWithWaterTest extends ActorTest {
|
|||
|
||||
class PlayerControlInteractWithLavaTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Lava, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
@ -931,7 +931,7 @@ class PlayerControlInteractWithLavaTest extends ActorTest {
|
|||
|
||||
class PlayerControlInteractWithDeathTest extends ActorTest {
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.definition.{SimpleItemDefinition, SpecialExoSuitDefinition}
|
||||
import net.psforever.objects.equipment.EquipmentSize
|
||||
import net.psforever.objects.inventory.InventoryItem
|
||||
import net.psforever.objects.locker.LockerEquipment
|
||||
import net.psforever.types.{PlanetSideGUID, _}
|
||||
import org.specs2.mutable._
|
||||
|
|
@ -16,7 +17,7 @@ class PlayerTest extends Specification {
|
|||
def TestPlayer(
|
||||
name: String,
|
||||
faction: PlanetSideEmpire.Value,
|
||||
sex: CharacterGender.Value,
|
||||
sex: CharacterSex,
|
||||
head: Int,
|
||||
voice: CharacterVoice.Value
|
||||
): Player = {
|
||||
|
|
@ -25,7 +26,7 @@ class PlayerTest extends Specification {
|
|||
|
||||
"Player" should {
|
||||
"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.FacingYawUpper mustEqual 0
|
||||
obj.Jumping mustEqual false
|
||||
|
|
@ -43,7 +44,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"(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.Health mustEqual 0
|
||||
obj.Armor mustEqual 0
|
||||
|
|
@ -56,7 +57,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.Health mustEqual 100
|
||||
obj.Armor mustEqual 50
|
||||
|
|
@ -72,7 +73,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.Armor = 35 //50 -> 35
|
||||
obj.isAlive mustEqual true
|
||||
|
|
@ -85,7 +86,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.isAlive mustEqual true
|
||||
obj.isBackpack mustEqual false
|
||||
|
|
@ -95,7 +96,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.isBackpack mustEqual false
|
||||
obj.Release
|
||||
|
|
@ -104,7 +105,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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 = 123
|
||||
obj.MaxHealth mustEqual 123
|
||||
|
|
@ -114,7 +115,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
// "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.Armor = 34
|
||||
// obj.Stamina = 45
|
||||
|
|
@ -135,7 +136,7 @@ class PlayerTest extends Specification {
|
|||
// }
|
||||
|
||||
"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.ExoSuit = ExoSuitType.Agile
|
||||
obj.VisibleSlots mustEqual Set(0, 1, 2, 4)
|
||||
|
|
@ -148,7 +149,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.Slot(0).Size mustEqual EquipmentSize.Pistol
|
||||
obj.Slot(1).Size mustEqual EquipmentSize.Blocked
|
||||
|
|
@ -162,7 +163,7 @@ class PlayerTest extends Specification {
|
|||
|
||||
"draw equipped holsters only" in {
|
||||
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).Equipment = wep
|
||||
obj.DrawnSlot mustEqual Player.HandsDownSlot
|
||||
|
|
@ -175,7 +176,7 @@ class PlayerTest extends Specification {
|
|||
"remember the last drawn holster" in {
|
||||
val wep1 = 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).Equipment = wep1
|
||||
obj.Slot(1).Size = EquipmentSize.Pistol
|
||||
|
|
@ -214,7 +215,7 @@ class PlayerTest extends Specification {
|
|||
|
||||
"hold something in their free hand" in {
|
||||
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.get.Definition.ObjectId mustEqual 149
|
||||
|
|
@ -222,14 +223,14 @@ class PlayerTest extends Specification {
|
|||
|
||||
"provide an invalid hand that can not hold anything" in {
|
||||
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.isEmpty mustEqual true
|
||||
}
|
||||
|
||||
"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.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 {
|
||||
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)
|
||||
obj.FreeHand.Equipment.isEmpty mustEqual true
|
||||
|
||||
|
|
@ -256,12 +257,12 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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
|
||||
}
|
||||
|
||||
"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 = {
|
||||
val item = Tool(beamer)
|
||||
item.GUID = PlanetSideGUID(1)
|
||||
|
|
@ -297,7 +298,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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 item2 = Kit(medkit)
|
||||
val item3 = AmmoBox(GlobalDefinitions.bullet_9mm)
|
||||
|
|
@ -306,7 +307,7 @@ class PlayerTest extends Specification {
|
|||
obj.FreeHand.Equipment = item3
|
||||
|
||||
obj.Collisions(0, 1, 1) match {
|
||||
case Success(List(item)) =>
|
||||
case Success(List(item: InventoryItem)) =>
|
||||
item.obj mustEqual item1
|
||||
item.start mustEqual 0
|
||||
case _ =>
|
||||
|
|
@ -320,7 +321,7 @@ class PlayerTest extends Specification {
|
|||
} //holsters, nothing
|
||||
|
||||
obj.Collisions(6, 1, 1) match {
|
||||
case Success(List(item)) =>
|
||||
case Success(List(item: InventoryItem)) =>
|
||||
item.obj mustEqual item2
|
||||
item.start mustEqual 6
|
||||
case _ =>
|
||||
|
|
@ -328,16 +329,17 @@ class PlayerTest extends Specification {
|
|||
} //inventory
|
||||
|
||||
obj.Collisions(Player.FreeHandSlot, 1, 1) match {
|
||||
case Success(List(item)) =>
|
||||
case Success(List(item: InventoryItem)) =>
|
||||
item.obj mustEqual item3
|
||||
item.start mustEqual Player.FreeHandSlot
|
||||
case _ =>
|
||||
ko
|
||||
} //free hand
|
||||
ok
|
||||
}
|
||||
|
||||
"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 = PlanetSideGUID(65)
|
||||
obj.VehicleSeated.contains(PlanetSideGUID(65)) mustEqual true
|
||||
|
|
@ -346,7 +348,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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 = Some(PlanetSideGUID(65))
|
||||
obj.avatar.vehicle.contains(PlanetSideGUID(65)) mustEqual true
|
||||
|
|
@ -355,21 +357,21 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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 = "ugd01"
|
||||
obj.Continent mustEqual "ugd01"
|
||||
}
|
||||
|
||||
"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 = SpecialExoSuitDefinition.Mode.Shielded
|
||||
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
}
|
||||
|
||||
"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.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
||||
|
|
@ -384,7 +386,7 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
|
||||
|
|
@ -394,13 +396,13 @@ class PlayerTest extends Specification {
|
|||
}
|
||||
|
||||
"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.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
objtr.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
|
||||
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.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
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 {
|
||||
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.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
||||
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import net.psforever.types.{PlanetSideGUID, _}
|
|||
import org.specs2.mutable.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)
|
||||
|
||||
"Range" should {
|
||||
|
|
@ -209,7 +209,7 @@ class ProjectileTest extends Specification {
|
|||
|
||||
"contain timely information" in {
|
||||
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.Position = Vector3(1.2f, 3.4f, 5.6f)
|
||||
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?
|
||||
val beamer_wep = Tool(GlobalDefinitions.beamer)
|
||||
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 projectile = Projectile(
|
||||
beamer_wep.Projectile,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class RepairableEntityRepairTest extends ActorTest {
|
|||
val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1
|
||||
val gen = Generator(GlobalDefinitions.generator) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
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 gen = Generator(GlobalDefinitions.generator) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
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 term = Terminal(GlobalDefinitions.order_terminal) //guid=2
|
||||
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()
|
||||
guid.register(building, 1)
|
||||
guid.register(term, 2)
|
||||
|
|
@ -251,7 +251,7 @@ class RepairableTurretWeapon extends ActorTest {
|
|||
val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool]
|
||||
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
|
|
@ -337,7 +337,7 @@ class RepairableVehicleRepair extends ActorTest {
|
|||
val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool]
|
||||
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
|
|
@ -410,7 +410,7 @@ class RepairableVehicleRestoration extends ActorTest {
|
|||
val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool]
|
||||
|
||||
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.Position = Vector3(2, 2, 2)
|
||||
val player1Probe = TestProbe()
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ class ResourceSiloControlUseTest extends FreedContextActorTest {
|
|||
expectNoMessage(1000 milliseconds)
|
||||
var buildingMap = new TrieMap[Int, Building]()
|
||||
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 silo = new ResourceSilo()
|
||||
val catchall = new TestProbe(system).ref
|
||||
|
|
@ -427,7 +427,7 @@ class ResourceSiloControlNoUpdateTest extends ActorTest {
|
|||
|
||||
object ResourceSiloTest {
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class UtilityTest extends Specification {
|
|||
val veh = Vehicle(GlobalDefinitions.quadstealth)
|
||||
veh.Faction = PlanetSideEmpire.TR
|
||||
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)
|
||||
obj().Owner = veh //hack
|
||||
obj().GUID = PlanetSideGUID(1)
|
||||
|
|
|
|||
|
|
@ -330,25 +330,6 @@ class VehicleControlMountingBlockedExosuitTest extends ActorTest {
|
|||
override def VehicleEvents: 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)
|
||||
vehicle.Faction = PlanetSideEmpire.TR
|
||||
vehicle.GUID = PlanetSideGUID(10)
|
||||
|
|
@ -379,28 +360,28 @@ class VehicleControlMountingBlockedExosuitTest extends ActorTest {
|
|||
val probe = new TestProbe(system)
|
||||
// disallow
|
||||
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
|
||||
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
|
||||
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
|
||||
checkCanNotMount(probe, "Agile in MAX-only mount")
|
||||
VehicleControlTest.checkCanNotMount(probe, "Agile in MAX-only mount")
|
||||
|
||||
//allow
|
||||
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
|
||||
vehicle.Actor.tell(Mountable.TryDismount(player1, 0), probe.ref)
|
||||
probe.receiveOne(500 milliseconds) //discard
|
||||
vehicle.Owner = None //ensure
|
||||
vehicle.OwnerName = None //ensure
|
||||
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
|
||||
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
|
||||
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 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 fury_dm = Vehicle(GlobalDefinitions.fury).DamageModel
|
||||
// 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 {
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
@ -694,7 +675,7 @@ class VehicleControlInteractWithWaterPartialTest extends ActorTest {
|
|||
class VehicleControlInteractWithWaterTest extends ActorTest {
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
|
||||
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 vehicleProbe = TestProbe()
|
||||
val guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
|
|
@ -765,7 +746,7 @@ class VehicleControlInteractWithWaterTest extends ActorTest {
|
|||
class VehicleControlStopInteractWithWaterTest extends ActorTest {
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
|
||||
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 guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
val pool = Pool(EnvironmentAttribute.Water, DeepSquare(-1, 10, 10, 0, 0))
|
||||
|
|
@ -829,7 +810,7 @@ class VehicleControlStopInteractWithWaterTest extends ActorTest {
|
|||
class VehicleControlInteractWithLavaTest extends ActorTest {
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
|
||||
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 vehicleProbe = TestProbe()
|
||||
val guid = new NumberPoolHub(new MaxNumberSource(15))
|
||||
|
|
@ -890,7 +871,7 @@ class VehicleControlInteractWithLavaTest extends ActorTest {
|
|||
class VehicleControlInteractWithDeathTest extends ActorTest {
|
||||
val vehicle = Vehicle(GlobalDefinitions.fury) //guid=2
|
||||
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 pool = Pool(EnvironmentAttribute.Death, DeepSquare(-1, 10, 10, 0, 0))
|
||||
val zone = new Zone(
|
||||
|
|
@ -937,11 +918,10 @@ class VehicleControlInteractWithDeathTest extends ActorTest {
|
|||
|
||||
object VehicleControlTest {
|
||||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.types.{CharacterGender, 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)
|
||||
import net.psforever.types.{CharacterSex, PlanetSideEmpire}
|
||||
|
||||
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 = {
|
||||
val reply = probe.receiveOne(Duration.create(250, "ms"))
|
||||
|
|
|
|||
|
|
@ -307,8 +307,8 @@ class VehicleTest extends Specification {
|
|||
|
||||
object VehicleTest {
|
||||
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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class VitalityTest extends Specification {
|
|||
val vSource = VehicleSource(vehicle)
|
||||
|
||||
"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 projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
|
||||
val resprojectile = DamageInteraction(
|
||||
|
|
@ -47,7 +47,7 @@ class VitalityTest extends Specification {
|
|||
}
|
||||
|
||||
"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)
|
||||
|
||||
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 {
|
||||
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 projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero)
|
||||
val resprojectile = DamageInteraction(
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -237,7 +237,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -257,7 +257,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
/* TODO they need AvatarActor, which has further dependencies
|
||||
"associate user with a character" in {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -278,7 +278,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
|
||||
"disassociate character from a user" in {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
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 {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
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 {
|
||||
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)
|
||||
player1.GUID = PlanetSideGUID(1)
|
||||
val player2 = Player(avatar)
|
||||
|
|
@ -354,7 +354,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
|
||||
"user tries to Spawn a character, but did not Join first" in {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -376,7 +376,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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)
|
||||
player.GUID = PlanetSideGUID(1)
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -402,7 +402,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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.Release
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -419,7 +419,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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.Release
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -438,13 +438,13 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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.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.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.Release
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
@ -469,7 +469,7 @@ class ZonePopulationTest extends ActorTest {
|
|||
val zone = new Zone("test", new ZoneMap(""), 0) {
|
||||
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.Release !!important
|
||||
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||
import net.psforever.objects.locker.LockerEquipment
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
|
||||
class GUIDTaskRegisterAvatarTest extends ActorTest {
|
||||
"RegisterAvatar" in {
|
||||
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)
|
||||
obj.Slot(0).Equipment = obj_wep
|
||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||
import net.psforever.objects.locker.LockerEquipment
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
|
||||
class GUIDTaskRegisterPlayerTest extends ActorTest {
|
||||
"RegisterPlayer" in {
|
||||
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)
|
||||
obj.Slot(0).Equipment = obj_wep
|
||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||
import net.psforever.objects.locker.LockerEquipment
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
|
||||
class GUIDTaskUnregisterAvatarTest extends ActorTest {
|
||||
"UnregisterAvatar" in {
|
||||
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)
|
||||
obj.Slot(0).Equipment = obj_wep
|
||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import net.psforever.objects._
|
|||
import net.psforever.objects.avatar.Avatar
|
||||
import net.psforever.objects.guid.{GUIDTask, TaskResolver}
|
||||
import net.psforever.objects.locker.LockerEquipment
|
||||
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire}
|
||||
import net.psforever.types.{CharacterSex, CharacterVoice, PlanetSideEmpire}
|
||||
|
||||
class GUIDTaskUnregisterPlayerTest extends ActorTest {
|
||||
"UnregisterPlayer" in {
|
||||
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)
|
||||
obj.Slot(0).Equipment = obj_wep
|
||||
val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell)
|
||||
|
|
|
|||
|
|
@ -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.terminals.Terminal
|
||||
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 scala.concurrent.duration.Duration
|
||||
|
|
@ -46,7 +46,7 @@ class ImplantTerminalMechTest extends Specification {
|
|||
}
|
||||
|
||||
"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)
|
||||
obj.PassengerInSeat(player).isEmpty mustEqual true
|
||||
obj.Seats(0).mount(player)
|
||||
|
|
@ -87,11 +87,11 @@ class ImplantTerminalMechControl2Test extends ActorTest {
|
|||
}
|
||||
|
||||
class ImplantTerminalMechControl3Test extends ActorTest {
|
||||
import net.psforever.types.CharacterGender
|
||||
import net.psforever.types.CharacterSex
|
||||
"ImplantTerminalMechControl" should {
|
||||
"block a player from mounting" in {
|
||||
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)
|
||||
receiveOne(Duration.create(100, "ms")) //consume reply
|
||||
|
|
@ -183,6 +183,6 @@ object ImplantTerminalMechTest {
|
|||
map.linkTerminalToInterface(1, 2)
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class MatrixTerminalTest extends Specification {
|
|||
}
|
||||
|
||||
"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 terminal = Terminal(new MatrixTerminalDefinition(519))
|
||||
terminal.Owner = Vehicle(GlobalDefinitions.quadstealth)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import net.psforever.types._
|
|||
import org.specs2.mutable.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 building = new Building(
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import net.psforever.objects.serverobject.terminals.{
|
|||
}
|
||||
import net.psforever.objects.zones.{Zone, ZoneMap}
|
||||
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 net.psforever.services.Service
|
||||
import net.psforever.services.local.LocalService
|
||||
|
|
@ -41,7 +41,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -54,7 +54,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter2",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -77,7 +77,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -90,7 +90,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter2",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -118,7 +118,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -140,7 +140,7 @@ class ProximityTest extends Specification {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -184,7 +184,7 @@ class ProximityTerminalControlStartTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -235,7 +235,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -249,7 +249,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter2",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -307,7 +307,7 @@ class ProximityTerminalControlStopTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -361,7 +361,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter1",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
@ -375,7 +375,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest {
|
|||
ProximityTest.avatarId.getAndIncrement(),
|
||||
"TestCharacter2",
|
||||
PlanetSideEmpire.VS,
|
||||
CharacterGender.Female,
|
||||
CharacterSex.Female,
|
||||
1,
|
||||
CharacterVoice.Voice1
|
||||
)
|
||||
|
|
|
|||
|
|
@ -143,6 +143,6 @@ object TerminalControlTest {
|
|||
GlobalDefinitions.building
|
||||
)
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue