mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-07-13 15:34:45 +00:00
Add server nonce to packet Unknown30
Lint merit enum
This commit is contained in:
parent
911febca76
commit
06eea3b3e7
3 changed files with 485 additions and 127 deletions
|
|
@ -308,7 +308,7 @@ class MiddlewareActor(
|
||||||
send(ServerStart(nonce, serverNonce), None, None)
|
send(ServerStart(nonce, serverNonce), None, None)
|
||||||
cryptoSetup()
|
cryptoSetup()
|
||||||
|
|
||||||
case (Unknown30(_), _) =>
|
case (Unknown30(_, _), _) =>
|
||||||
/*
|
/*
|
||||||
Unknown30 is used to reuse an existing crypto session when switching from login to world
|
Unknown30 is used to reuse an existing crypto session when switching from login to world
|
||||||
When not handling it, it appears that the client will fall back to using ClientStart
|
When not handling it, it appears that the client will fall back to using ClientStart
|
||||||
|
|
@ -586,7 +586,7 @@ class MiddlewareActor(
|
||||||
case ClientStart(_) =>
|
case ClientStart(_) =>
|
||||||
start()
|
start()
|
||||||
|
|
||||||
case Unknown30(_) =>
|
case Unknown30(_, _) =>
|
||||||
/*
|
/*
|
||||||
Unknown30 is used to reuse an existing crypto session when switching from login to world
|
Unknown30 is used to reuse an existing crypto session when switching from login to world
|
||||||
When not handling it, it appears that the client will fall back to using ClientStart
|
When not handling it, it appears that the client will fall back to using ClientStart
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,20 @@ import net.psforever.packet.{ControlPacketOpcode, Marshallable, PlanetSideContro
|
||||||
import scodec.Codec
|
import scodec.Codec
|
||||||
import scodec.codecs._
|
import scodec.codecs._
|
||||||
|
|
||||||
final case class Unknown30(clientNonce: Long) extends PlanetSideControlPacket {
|
// Probably a more lightweight variant of ClientStart, containing client and server nonce
|
||||||
|
// will be received when sending a ConnectionClose() (after client requests world connection info)
|
||||||
|
final case class Unknown30(
|
||||||
|
clientNonce: Long,
|
||||||
|
serverNonce: Long
|
||||||
|
) extends PlanetSideControlPacket {
|
||||||
type Packet = Unknown30
|
type Packet = Unknown30
|
||||||
def opcode = ControlPacketOpcode.Unknown30
|
def opcode = ControlPacketOpcode.Unknown30
|
||||||
def encode = Unknown30.encode(this)
|
def encode = Unknown30.encode(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
object Unknown30 extends Marshallable[Unknown30] {
|
object Unknown30 extends Marshallable[Unknown30] {
|
||||||
implicit val codec: Codec[Unknown30] = ("client_nonce" | uint32L).as[Unknown30]
|
implicit val codec: Codec[Unknown30] = (
|
||||||
|
("client_nonce" | uint32L) ::
|
||||||
|
("server_nonce" | uint32L)
|
||||||
|
).as[Unknown30]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,129 +11,479 @@ import scodec.codecs._
|
||||||
object MeritCommendation extends Enumeration {
|
object MeritCommendation extends Enumeration {
|
||||||
type Type = Value
|
type Type = Value
|
||||||
|
|
||||||
val //0
|
val
|
||||||
FanFaire2005Commander, FanFaire2005Soldier, FanFaire2006Atlanta, HalloweenMassacre2006NC, HalloweenMassacre2006TR,
|
//0
|
||||||
HalloweenMassacre2006VS, FanFaire2007, FanFaire2008, FanFaire2009, AdvancedMedic1,
|
FanFaire2005Commander,
|
||||||
//10
|
FanFaire2005Soldier,
|
||||||
AdvancedMedic2, AdvancedMedic3, AdvancedMedic4, AdvancedMedic5, AdvancedMedic6, AdvancedMedic7, AdvancedMedicAssists1,
|
FanFaire2006Atlanta,
|
||||||
AdvancedMedicAssists2, AdvancedMedicAssists3, AdvancedMedicAssists4,
|
HalloweenMassacre2006NC,
|
||||||
//20
|
HalloweenMassacre2006TR,
|
||||||
AdvancedMedicAssists5, AdvancedMedicAssists6, AdvancedMedicAssists7, AirDefender1, AirDefender2, AirDefender3,
|
HalloweenMassacre2006VS,
|
||||||
AirDefender4, AirDefender5, AirDefender6, AirDefender7,
|
FanFaire2007,
|
||||||
//30
|
FanFaire2008,
|
||||||
AMSSupport1, AMSSupport2, AMSSupport3, AMSSupport4, AMSSupport5, AMSSupport6, AMSSupport7, AntiVehicular1,
|
FanFaire2009,
|
||||||
AntiVehicular2, AntiVehicular3,
|
AdvancedMedic1,
|
||||||
//40
|
//10
|
||||||
AntiVehicular4, AntiVehicular5, AntiVehicular6, AntiVehicular7, Avenger1, Avenger2, Avenger3, Avenger4, Avenger5,
|
AdvancedMedic2,
|
||||||
Avenger6,
|
AdvancedMedic3,
|
||||||
//50
|
AdvancedMedic4,
|
||||||
Avenger7, BendingMovieActor, BFRAdvanced, BFRAdvanced2, BFRAdvanced3, BFRAdvanced4, BFRAdvanced5, BFRBuster1,
|
AdvancedMedic5,
|
||||||
BFRBuster2, BFRBuster3,
|
AdvancedMedic6,
|
||||||
//60
|
AdvancedMedic7,
|
||||||
BFRBuster4, BFRBuster5, BFRBuster6, BFRBuster7, BlackOpsHunter1, BlackOpsHunter2, BlackOpsHunter3, BlackOpsHunter4,
|
AdvancedMedicAssists1,
|
||||||
BlackOpsHunter5, BlackOpsParticipant,
|
AdvancedMedicAssists2,
|
||||||
//70
|
AdvancedMedicAssists3,
|
||||||
BlackOpsVictory, Bombadier1, Bombadier2, Bombadier3, Bombadier4, Bombadier5, Bombadier6, Bombadier7, BomberAce1,
|
AdvancedMedicAssists4,
|
||||||
BomberAce2,
|
//20
|
||||||
//80
|
AdvancedMedicAssists5,
|
||||||
BomberAce3, BomberAce4, BomberAce5, BomberAce6, BomberAce7, Boomer1, Boomer2, Boomer3, Boomer4, Boomer5,
|
AdvancedMedicAssists6,
|
||||||
//90
|
AdvancedMedicAssists7,
|
||||||
Boomer6, Boomer7, CalvaryDriver1, CalvaryDriver2, CalvaryDriver3, CalvaryDriver4, CalvaryDriver5, CalvaryDriver6,
|
AirDefender1,
|
||||||
CalvaryDriver7, CalvaryPilot,
|
AirDefender2,
|
||||||
//100
|
AirDefender3,
|
||||||
CalvaryPilot2, CalvaryPilot3, CalvaryPilot4, CalvaryPilot5, CalvaryPilot6, CalvaryPilot7, CMTopOutfit, CombatMedic,
|
AirDefender4,
|
||||||
CombatMedic2, CombatMedic3,
|
AirDefender5,
|
||||||
//110
|
AirDefender6,
|
||||||
CombatMedic4, CombatMedic5, CombatMedic6, CombatMedic7, CombatRepair1, CombatRepair2, CombatRepair3, CombatRepair4,
|
AirDefender7,
|
||||||
CombatRepair5, CombatRepair6,
|
//30
|
||||||
//120
|
AMSSupport1,
|
||||||
CombatRepair7, ContestFirstBR40, ContestMovieMaker, ContestMovieMakerOutfit, ContestPlayerOfTheMonth,
|
AMSSupport2,
|
||||||
ContestPlayerOfTheYear, CSAppreciation, DefenseNC1, DefenseNC2, DefenseNC3,
|
AMSSupport3,
|
||||||
//130
|
AMSSupport4,
|
||||||
DefenseNC4, DefenseNC5, DefenseNC6, DefenseNC7, DefenseTR1, DefenseTR2, DefenseTR3, DefenseTR4, DefenseTR5,
|
AMSSupport5,
|
||||||
DefenseTR6,
|
AMSSupport6,
|
||||||
//140
|
AMSSupport7,
|
||||||
DefenseTR7, DefenseVS1, DefenseVS2, DefenseVS3, DefenseVS4, DefenseVS5, DefenseVS6, DefenseVS7, DevilDogsMovie,
|
AntiVehicular1,
|
||||||
DogFighter1,
|
AntiVehicular2,
|
||||||
//150
|
AntiVehicular3,
|
||||||
DogFighter2, DogFighter3, DogFighter4, DogFighter5, DogFighter6, DogFighter7, DriverGunner1, DriverGunner2,
|
//40
|
||||||
DriverGunner3, DriverGunner4,
|
AntiVehicular4,
|
||||||
//160
|
AntiVehicular5,
|
||||||
DriverGunner5, DriverGunner6, DriverGunner7, EliteAssault0, EliteAssault1, EliteAssault2, EliteAssault3,
|
AntiVehicular6,
|
||||||
EliteAssault4, EliteAssault5, EliteAssault6,
|
AntiVehicular7,
|
||||||
//170
|
Avenger1,
|
||||||
EliteAssault7, EmeraldVeteran, Engineer1, Engineer2, Engineer3, Engineer4, Engineer5, Engineer6, EquipmentSupport1,
|
Avenger2,
|
||||||
EquipmentSupport2,
|
Avenger3,
|
||||||
//180
|
Avenger4,
|
||||||
EquipmentSupport3, EquipmentSupport4, EquipmentSupport5, EquipmentSupport6, EquipmentSupport7, EventNCCommander,
|
Avenger5,
|
||||||
EventNCElite, EventNCSoldier, EventTRCommander, EventTRElite,
|
Avenger6,
|
||||||
//190
|
//50
|
||||||
EventTRSoldier, EventVSCommander, EventVSElite, EventVSSoldier, Explorer1, FiveYearNC, FiveYearTR, FiveYearVS,
|
Avenger7,
|
||||||
FourYearNC, FourYearTR,
|
BendingMovieActor,
|
||||||
//200
|
BFRAdvanced,
|
||||||
FourYearVS, GalaxySupport1, GalaxySupport2, GalaxySupport3, GalaxySupport4, GalaxySupport5, GalaxySupport6,
|
BFRAdvanced2,
|
||||||
GalaxySupport7, Grenade1, Grenade2,
|
BFRAdvanced3,
|
||||||
//210
|
BFRAdvanced4,
|
||||||
Grenade3, Grenade4, Grenade5, Grenade6, Grenade7, GroundGunner1, GroundGunner2, GroundGunner3, GroundGunner4,
|
BFRAdvanced5,
|
||||||
GroundGunner5,
|
BFRBuster1,
|
||||||
//220
|
BFRBuster2,
|
||||||
GroundGunner6, GroundGunner7, HackingSupport1, HackingSupport2, HackingSupport3, HackingSupport4, HackingSupport5,
|
BFRBuster3,
|
||||||
HackingSupport6, HackingSupport7, HeavyAssault1,
|
//60
|
||||||
//230
|
BFRBuster4,
|
||||||
HeavyAssault2, HeavyAssault3, HeavyAssault4, HeavyAssault5, HeavyAssault6, HeavyAssault7, HeavyInfantry,
|
BFRBuster5,
|
||||||
HeavyInfantry2, HeavyInfantry3, HeavyInfantry4,
|
BFRBuster6,
|
||||||
//240
|
BFRBuster7,
|
||||||
InfantryExpert1, InfantryExpert2, InfantryExpert3, Jacking, Jacking2, Jacking3, Jacking4, Jacking5, Jacking6,
|
BlackOpsHunter1,
|
||||||
Jacking7,
|
BlackOpsHunter2,
|
||||||
//250
|
BlackOpsHunter3,
|
||||||
KnifeCombat1, KnifeCombat2, KnifeCombat3, KnifeCombat4, KnifeCombat5, KnifeCombat6, KnifeCombat7, LightInfantry,
|
BlackOpsHunter4,
|
||||||
LockerCracker1, LockerCracker2,
|
BlackOpsHunter5,
|
||||||
//260
|
BlackOpsParticipant,
|
||||||
LockerCracker3, LockerCracker4, LockerCracker5, LockerCracker6, LockerCracker7, LodestarSupport1, LodestarSupport2,
|
//70
|
||||||
LodestarSupport3, LodestarSupport4, LodestarSupport5,
|
BlackOpsVictory,
|
||||||
//270
|
Bombadier1,
|
||||||
LodestarSupport6, LodestarSupport7, Loser, Loser2, Loser3, Loser4, MarkovVeteran, Max1, Max2, Max3,
|
Bombadier2,
|
||||||
//280
|
Bombadier3,
|
||||||
Max4, Max5, Max6, MaxBuster1, MaxBuster2, MaxBuster3, MaxBuster4, MaxBuster5, MaxBuster6, MediumAssault1,
|
Bombadier4,
|
||||||
//290
|
Bombadier5,
|
||||||
MediumAssault2, MediumAssault3, MediumAssault4, MediumAssault5, MediumAssault6, MediumAssault7, OneYearNC, OneYearTR,
|
Bombadier6,
|
||||||
OneYearVS, Orion1,
|
Bombadier7,
|
||||||
//300
|
BomberAce1,
|
||||||
Orion2, Orion3, Orion4, Orion5, Orion6, Orion7, Osprey1, Osprey2, Osprey3, Osprey4,
|
BomberAce2,
|
||||||
//310
|
//80
|
||||||
Osprey5, Osprey6, Osprey7, Phalanx1, Phalanx2, Phalanx3, Phalanx4, Phalanx5, Phalanx6, Phalanx7,
|
BomberAce3,
|
||||||
//320
|
BomberAce4,
|
||||||
PSUMaAttendee, PSUMbAttendee, QAAppreciation, ReinforcementHackSpecialist, ReinforcementInfantrySpecialist,
|
BomberAce5,
|
||||||
ReinforcementSpecialist, ReinforcementVehicleSpecialist, RouterSupport1, RouterSupport2, RouterSupport3,
|
BomberAce6,
|
||||||
//330
|
BomberAce7,
|
||||||
RouterSupport4, RouterSupport5, RouterSupport6, RouterSupport7, RouterTelepadDeploy1, RouterTelepadDeploy2,
|
Boomer1,
|
||||||
RouterTelepadDeploy3, RouterTelepadDeploy4, RouterTelepadDeploy5, RouterTelepadDeploy6,
|
Boomer2,
|
||||||
//340
|
Boomer3,
|
||||||
RouterTelepadDeploy7, ScavengerNC1, ScavengerNC2, ScavengerNC3, ScavengerNC4, ScavengerNC5, ScavengerNC6,
|
Boomer4,
|
||||||
ScavengerTR1, ScavengerTR2, ScavengerTR3,
|
Boomer5,
|
||||||
//350
|
//90
|
||||||
ScavengerTR4, ScavengerTR5, ScavengerTR6, ScavengerVS1, ScavengerVS2, ScavengerVS3, ScavengerVS4, ScavengerVS5,
|
Boomer6,
|
||||||
ScavengerVS6, SixYearNC,
|
Boomer7,
|
||||||
//360
|
CalvaryDriver1,
|
||||||
SixYearTR, SixYearVS, Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, SpecialAssault1,
|
CalvaryDriver2,
|
||||||
//370
|
CalvaryDriver3,
|
||||||
SpecialAssault2, SpecialAssault3, SpecialAssault4, SpecialAssault5, SpecialAssault6, SpecialAssault7,
|
CalvaryDriver4,
|
||||||
StandardAssault1, StandardAssault2, StandardAssault3, StandardAssault4,
|
CalvaryDriver5,
|
||||||
//380
|
CalvaryDriver6,
|
||||||
StandardAssault5, StandardAssault6, StandardAssault7, StracticsHistorian, Supply1, Supply2, Supply3, Supply4, Supply5,
|
CalvaryDriver7,
|
||||||
Supply6,
|
CalvaryPilot,
|
||||||
//390
|
//100
|
||||||
Supply7, TankBuster1, TankBuster2, TankBuster3, TankBuster4, TankBuster5, TankBuster6, TankBuster7, ThreeYearNC,
|
CalvaryPilot2,
|
||||||
ThreeYearTR,
|
CalvaryPilot3,
|
||||||
//400
|
CalvaryPilot4,
|
||||||
ThreeYearVS, TinyRoboticSupport1, TinyRoboticSupport2, TinyRoboticSupport3, TinyRoboticSupport4, TinyRoboticSupport5,
|
CalvaryPilot5,
|
||||||
TinyRoboticSupport6, TinyRoboticSupport7, Transport1, Transport2,
|
CalvaryPilot6,
|
||||||
//410
|
CalvaryPilot7,
|
||||||
Transport3, Transport4, Transport5, Transport6, Transport7, TransportationCitation1, TransportationCitation2,
|
CMTopOutfit,
|
||||||
TransportationCitation3, TransportationCitation4, TransportationCitation5,
|
CombatMedic,
|
||||||
//420
|
CombatMedic2,
|
||||||
TwoYearNC, TwoYearTR, TwoYearVS, ValentineFemale, ValentineMale, WernerVeteran, XmasGingerman, XmasSnowman,
|
CombatMedic3,
|
||||||
XmasSpirit = Value
|
//110
|
||||||
|
CombatMedic4,
|
||||||
|
CombatMedic5,
|
||||||
|
CombatMedic6,
|
||||||
|
CombatMedic7,
|
||||||
|
CombatRepair1,
|
||||||
|
CombatRepair2,
|
||||||
|
CombatRepair3,
|
||||||
|
CombatRepair4,
|
||||||
|
CombatRepair5,
|
||||||
|
CombatRepair6,
|
||||||
|
//120
|
||||||
|
CombatRepair7,
|
||||||
|
ContestFirstBR40,
|
||||||
|
ContestMovieMaker,
|
||||||
|
ContestMovieMakerOutfit,
|
||||||
|
ContestPlayerOfTheMonth,
|
||||||
|
ContestPlayerOfTheYear,
|
||||||
|
CSAppreciation,
|
||||||
|
DefenseNC1,
|
||||||
|
DefenseNC2,
|
||||||
|
DefenseNC3,
|
||||||
|
//130
|
||||||
|
DefenseNC4,
|
||||||
|
DefenseNC5,
|
||||||
|
DefenseNC6,
|
||||||
|
DefenseNC7,
|
||||||
|
DefenseTR1,
|
||||||
|
DefenseTR2,
|
||||||
|
DefenseTR3,
|
||||||
|
DefenseTR4,
|
||||||
|
DefenseTR5,
|
||||||
|
DefenseTR6,
|
||||||
|
//140
|
||||||
|
DefenseTR7,
|
||||||
|
DefenseVS1,
|
||||||
|
DefenseVS2,
|
||||||
|
DefenseVS3,
|
||||||
|
DefenseVS4,
|
||||||
|
DefenseVS5,
|
||||||
|
DefenseVS6,
|
||||||
|
DefenseVS7,
|
||||||
|
DevilDogsMovie,
|
||||||
|
DogFighter1,
|
||||||
|
//150
|
||||||
|
DogFighter2,
|
||||||
|
DogFighter3,
|
||||||
|
DogFighter4,
|
||||||
|
DogFighter5,
|
||||||
|
DogFighter6,
|
||||||
|
DogFighter7,
|
||||||
|
DriverGunner1,
|
||||||
|
DriverGunner2,
|
||||||
|
DriverGunner3,
|
||||||
|
DriverGunner4,
|
||||||
|
//160
|
||||||
|
DriverGunner5,
|
||||||
|
DriverGunner6,
|
||||||
|
DriverGunner7,
|
||||||
|
EliteAssault0,
|
||||||
|
EliteAssault1,
|
||||||
|
EliteAssault2,
|
||||||
|
EliteAssault3,
|
||||||
|
EliteAssault4,
|
||||||
|
EliteAssault5,
|
||||||
|
EliteAssault6,
|
||||||
|
//170
|
||||||
|
EliteAssault7,
|
||||||
|
EmeraldVeteran,
|
||||||
|
Engineer1,
|
||||||
|
Engineer2,
|
||||||
|
Engineer3,
|
||||||
|
Engineer4,
|
||||||
|
Engineer5,
|
||||||
|
Engineer6,
|
||||||
|
EquipmentSupport1,
|
||||||
|
EquipmentSupport2,
|
||||||
|
//180
|
||||||
|
EquipmentSupport3,
|
||||||
|
EquipmentSupport4,
|
||||||
|
EquipmentSupport5,
|
||||||
|
EquipmentSupport6,
|
||||||
|
EquipmentSupport7,
|
||||||
|
EventNCCommander,
|
||||||
|
EventNCElite,
|
||||||
|
EventNCSoldier,
|
||||||
|
EventTRCommander,
|
||||||
|
EventTRElite,
|
||||||
|
//190
|
||||||
|
EventTRSoldier,
|
||||||
|
EventVSCommander,
|
||||||
|
EventVSElite,
|
||||||
|
EventVSSoldier,
|
||||||
|
Explorer1,
|
||||||
|
FiveYearNC,
|
||||||
|
FiveYearTR,
|
||||||
|
FiveYearVS,
|
||||||
|
FourYearNC,
|
||||||
|
FourYearTR,
|
||||||
|
//200
|
||||||
|
FourYearVS,
|
||||||
|
GalaxySupport1,
|
||||||
|
GalaxySupport2,
|
||||||
|
GalaxySupport3,
|
||||||
|
GalaxySupport4,
|
||||||
|
GalaxySupport5,
|
||||||
|
GalaxySupport6,
|
||||||
|
GalaxySupport7,
|
||||||
|
Grenade1,
|
||||||
|
Grenade2,
|
||||||
|
//210
|
||||||
|
Grenade3,
|
||||||
|
Grenade4,
|
||||||
|
Grenade5,
|
||||||
|
Grenade6,
|
||||||
|
Grenade7,
|
||||||
|
GroundGunner1,
|
||||||
|
GroundGunner2,
|
||||||
|
GroundGunner3,
|
||||||
|
GroundGunner4,
|
||||||
|
GroundGunner5,
|
||||||
|
//220
|
||||||
|
GroundGunner6,
|
||||||
|
GroundGunner7,
|
||||||
|
HackingSupport1,
|
||||||
|
HackingSupport2,
|
||||||
|
HackingSupport3,
|
||||||
|
HackingSupport4,
|
||||||
|
HackingSupport5,
|
||||||
|
HackingSupport6,
|
||||||
|
HackingSupport7,
|
||||||
|
HeavyAssault1,
|
||||||
|
//230
|
||||||
|
HeavyAssault2,
|
||||||
|
HeavyAssault3,
|
||||||
|
HeavyAssault4,
|
||||||
|
HeavyAssault5,
|
||||||
|
HeavyAssault6,
|
||||||
|
HeavyAssault7,
|
||||||
|
HeavyInfantry,
|
||||||
|
HeavyInfantry2,
|
||||||
|
HeavyInfantry3,
|
||||||
|
HeavyInfantry4,
|
||||||
|
//240
|
||||||
|
InfantryExpert1,
|
||||||
|
InfantryExpert2,
|
||||||
|
InfantryExpert3,
|
||||||
|
Jacking,
|
||||||
|
Jacking2,
|
||||||
|
Jacking3,
|
||||||
|
Jacking4,
|
||||||
|
Jacking5,
|
||||||
|
Jacking6,
|
||||||
|
Jacking7,
|
||||||
|
//250
|
||||||
|
KnifeCombat1,
|
||||||
|
KnifeCombat2,
|
||||||
|
KnifeCombat3,
|
||||||
|
KnifeCombat4,
|
||||||
|
KnifeCombat5,
|
||||||
|
KnifeCombat6,
|
||||||
|
KnifeCombat7,
|
||||||
|
LightInfantry,
|
||||||
|
LockerCracker1,
|
||||||
|
LockerCracker2,
|
||||||
|
//260
|
||||||
|
LockerCracker3,
|
||||||
|
LockerCracker4,
|
||||||
|
LockerCracker5,
|
||||||
|
LockerCracker6,
|
||||||
|
LockerCracker7,
|
||||||
|
LodestarSupport1,
|
||||||
|
LodestarSupport2,
|
||||||
|
LodestarSupport3,
|
||||||
|
LodestarSupport4,
|
||||||
|
LodestarSupport5,
|
||||||
|
//270
|
||||||
|
LodestarSupport6,
|
||||||
|
LodestarSupport7,
|
||||||
|
Loser,
|
||||||
|
Loser2,
|
||||||
|
Loser3,
|
||||||
|
Loser4,
|
||||||
|
MarkovVeteran,
|
||||||
|
Max1,
|
||||||
|
Max2,
|
||||||
|
Max3,
|
||||||
|
//280
|
||||||
|
Max4,
|
||||||
|
Max5,
|
||||||
|
Max6,
|
||||||
|
MaxBuster1,
|
||||||
|
MaxBuster2,
|
||||||
|
MaxBuster3,
|
||||||
|
MaxBuster4,
|
||||||
|
MaxBuster5,
|
||||||
|
MaxBuster6,
|
||||||
|
MediumAssault1,
|
||||||
|
//290
|
||||||
|
MediumAssault2,
|
||||||
|
MediumAssault3,
|
||||||
|
MediumAssault4,
|
||||||
|
MediumAssault5,
|
||||||
|
MediumAssault6,
|
||||||
|
MediumAssault7,
|
||||||
|
OneYearNC,
|
||||||
|
OneYearTR,
|
||||||
|
OneYearVS,
|
||||||
|
Orion1,
|
||||||
|
//300
|
||||||
|
Orion2,
|
||||||
|
Orion3,
|
||||||
|
Orion4,
|
||||||
|
Orion5,
|
||||||
|
Orion6,
|
||||||
|
Orion7,
|
||||||
|
Osprey1,
|
||||||
|
Osprey2,
|
||||||
|
Osprey3,
|
||||||
|
Osprey4,
|
||||||
|
//310
|
||||||
|
Osprey5,
|
||||||
|
Osprey6,
|
||||||
|
Osprey7,
|
||||||
|
Phalanx1,
|
||||||
|
Phalanx2,
|
||||||
|
Phalanx3,
|
||||||
|
Phalanx4,
|
||||||
|
Phalanx5,
|
||||||
|
Phalanx6,
|
||||||
|
Phalanx7,
|
||||||
|
//320
|
||||||
|
PSUMaAttendee,
|
||||||
|
PSUMbAttendee,
|
||||||
|
QAAppreciation,
|
||||||
|
ReinforcementHackSpecialist,
|
||||||
|
ReinforcementInfantrySpecialist,
|
||||||
|
ReinforcementSpecialist,
|
||||||
|
ReinforcementVehicleSpecialist,
|
||||||
|
RouterSupport1,
|
||||||
|
RouterSupport2,
|
||||||
|
RouterSupport3,
|
||||||
|
//330
|
||||||
|
RouterSupport4,
|
||||||
|
RouterSupport5,
|
||||||
|
RouterSupport6,
|
||||||
|
RouterSupport7,
|
||||||
|
RouterTelepadDeploy1,
|
||||||
|
RouterTelepadDeploy2,
|
||||||
|
RouterTelepadDeploy3,
|
||||||
|
RouterTelepadDeploy4,
|
||||||
|
RouterTelepadDeploy5,
|
||||||
|
RouterTelepadDeploy6,
|
||||||
|
//340
|
||||||
|
RouterTelepadDeploy7,
|
||||||
|
ScavengerNC1,
|
||||||
|
ScavengerNC2,
|
||||||
|
ScavengerNC3,
|
||||||
|
ScavengerNC4,
|
||||||
|
ScavengerNC5,
|
||||||
|
ScavengerNC6,
|
||||||
|
ScavengerTR1,
|
||||||
|
ScavengerTR2,
|
||||||
|
ScavengerTR3,
|
||||||
|
//350
|
||||||
|
ScavengerTR4,
|
||||||
|
ScavengerTR5,
|
||||||
|
ScavengerTR6,
|
||||||
|
ScavengerVS1,
|
||||||
|
ScavengerVS2,
|
||||||
|
ScavengerVS3,
|
||||||
|
ScavengerVS4,
|
||||||
|
ScavengerVS5,
|
||||||
|
ScavengerVS6,
|
||||||
|
SixYearNC,
|
||||||
|
//360
|
||||||
|
SixYearTR,
|
||||||
|
SixYearVS,
|
||||||
|
Sniper1,
|
||||||
|
Sniper2,
|
||||||
|
Sniper3,
|
||||||
|
Sniper4,
|
||||||
|
Sniper5,
|
||||||
|
Sniper6,
|
||||||
|
Sniper7,
|
||||||
|
SpecialAssault1,
|
||||||
|
//370
|
||||||
|
SpecialAssault2,
|
||||||
|
SpecialAssault3,
|
||||||
|
SpecialAssault4,
|
||||||
|
SpecialAssault5,
|
||||||
|
SpecialAssault6,
|
||||||
|
SpecialAssault7,
|
||||||
|
StandardAssault1,
|
||||||
|
StandardAssault2,
|
||||||
|
StandardAssault3,
|
||||||
|
StandardAssault4,
|
||||||
|
//380
|
||||||
|
StandardAssault5,
|
||||||
|
StandardAssault6,
|
||||||
|
StandardAssault7,
|
||||||
|
StracticsHistorian,
|
||||||
|
Supply1,
|
||||||
|
Supply2,
|
||||||
|
Supply3,
|
||||||
|
Supply4,
|
||||||
|
Supply5,
|
||||||
|
Supply6,
|
||||||
|
//390
|
||||||
|
Supply7,
|
||||||
|
TankBuster1,
|
||||||
|
TankBuster2,
|
||||||
|
TankBuster3,
|
||||||
|
TankBuster4,
|
||||||
|
TankBuster5,
|
||||||
|
TankBuster6,
|
||||||
|
TankBuster7,
|
||||||
|
ThreeYearNC,
|
||||||
|
ThreeYearTR,
|
||||||
|
//400
|
||||||
|
ThreeYearVS,
|
||||||
|
TinyRoboticSupport1,
|
||||||
|
TinyRoboticSupport2,
|
||||||
|
TinyRoboticSupport3,
|
||||||
|
TinyRoboticSupport4,
|
||||||
|
TinyRoboticSupport5,
|
||||||
|
TinyRoboticSupport6,
|
||||||
|
TinyRoboticSupport7,
|
||||||
|
Transport1,
|
||||||
|
Transport2,
|
||||||
|
//410
|
||||||
|
Transport3,
|
||||||
|
Transport4,
|
||||||
|
Transport5,
|
||||||
|
Transport6,
|
||||||
|
Transport7,
|
||||||
|
TransportationCitation1,
|
||||||
|
TransportationCitation2,
|
||||||
|
TransportationCitation3,
|
||||||
|
TransportationCitation4,
|
||||||
|
TransportationCitation5,
|
||||||
|
//420
|
||||||
|
TwoYearNC,
|
||||||
|
TwoYearTR,
|
||||||
|
TwoYearVS,
|
||||||
|
ValentineFemale,
|
||||||
|
ValentineMale,
|
||||||
|
WernerVeteran,
|
||||||
|
XmasGingerman,
|
||||||
|
XmasSnowman,
|
||||||
|
XmasSpirit = Value
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The value None requires special consideration.
|
The value None requires special consideration.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue