* resolved merge of multi-PR-merge master branch supporting gating branch

* making adjustments to the distinctions between building map id and building GUID, where necessary, to assist with the loading process

* custom spawn tube definitions for the sanctuary VT_building's
This commit is contained in:
Fate-JH 2019-04-08 08:05:15 -04:00 committed by GitHub
parent 7fcbf7bf41
commit c38c619a23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
45 changed files with 2348 additions and 948 deletions

View file

@ -980,6 +980,8 @@ object GlobalDefinitions {
val respawn_tube = new SpawnTubeDefinition(732)
val respawn_tube_sanctuary = new SpawnTubeDefinition(732) //respawn_tube for sanctuary VT_building_* structures
val respawn_tube_tower = new SpawnTubeDefinition(733)
val teleportpad_terminal = new OrderTerminalDefinition(853)
@ -1029,6 +1031,41 @@ object GlobalDefinitions {
val manned_turret = new TurretDefinition(480)
initMiscellaneous()
/*
Buildings
*/
val building : ObjectDefinition = new ObjectDefinition(474) { Name = "building" } //borrows object id of entity mainbase1
val warpgate : ObjectDefinition with SpawnPointDefinition = new ObjectDefinition(993) with SpawnPointDefinition
warpgate.Name = "warpgate"
warpgate.UseRadius = 301.8713f
warpgate.Delay = 10
warpgate.VehicleAllowance = true
warpgate.SpecificPointFunc = SpawnPoint.Gate
val hst : ObjectDefinition with SpawnPointDefinition = new ObjectDefinition(402) with SpawnPointDefinition
hst.Name = "hst"
hst.UseRadius = 20.4810f
hst.Delay = 10
hst.VehicleAllowance = true
hst.NoWarp += dropship
hst.NoWarp += galaxy_gunship
hst.NoWarp += lodestar
//hst.NoWarp += aphelion_gunner
//hst.NoWarp += aphelion_flight
//hst.NoWarp += colossus_gunner
//hst.NoWarp += colossus_flight
//hst.NoWarp += peregrine_gunner
//hst.NoWarp += peregrine_flight
hst.SpecificPointFunc = SpawnPoint.Gate
val warpgate_cavern : ObjectDefinition with SpawnPointDefinition = new ObjectDefinition(994) with SpawnPointDefinition
warpgate_cavern.Name = "warpgate_cavern"
warpgate_cavern.UseRadius = 55.0522f
warpgate_cavern.Delay = 10
warpgate_cavern.VehicleAllowance = true
warpgate_cavern.SpecificPointFunc = SpawnPoint.Gate
/**
* Given a faction, provide the standard assault melee weapon.
* @param faction the faction
@ -5352,6 +5389,7 @@ object GlobalDefinitions {
mosquito.Name = "mosquito"
mosquito.MaxHealth = 665
mosquito.MaxShields = 133 + 1
mosquito.CanFly = true
mosquito.Seats += 0 -> new SeatDefinition()
mosquito.Seats(0).Bailable = true
mosquito.Seats(0).ControlledWeapon = 1
@ -5367,6 +5405,7 @@ object GlobalDefinitions {
lightgunship.Name = "lightgunship"
lightgunship.MaxHealth = 1000
lightgunship.MaxShields = 200 + 1
lightgunship.CanFly = true
lightgunship.Seats += 0 -> new SeatDefinition()
lightgunship.Seats(0).Bailable = true
lightgunship.Seats(0).ControlledWeapon = 1
@ -5383,6 +5422,7 @@ object GlobalDefinitions {
wasp.Name = "wasp"
wasp.MaxHealth = 515
wasp.MaxShields = 103 + 1
wasp.CanFly = true
wasp.Seats += 0 -> new SeatDefinition()
wasp.Seats(0).Bailable = true
wasp.Seats(0).ControlledWeapon = 1
@ -5398,6 +5438,7 @@ object GlobalDefinitions {
liberator.Name = "liberator"
liberator.MaxHealth = 2500
liberator.MaxShields = 500 + 1
liberator.CanFly = true
liberator.Seats += 0 -> new SeatDefinition()
liberator.Seats(0).ControlledWeapon = 3
liberator.Seats += 1 -> new SeatDefinition()
@ -5421,6 +5462,7 @@ object GlobalDefinitions {
vulture.Name = "vulture"
vulture.MaxHealth = 2500
vulture.MaxShields = 500 + 1
vulture.CanFly = true
vulture.Seats += 0 -> new SeatDefinition()
vulture.Seats(0).ControlledWeapon = 3
vulture.Seats += 1 -> new SeatDefinition()
@ -5444,6 +5486,7 @@ object GlobalDefinitions {
dropship.Name = "dropship"
dropship.MaxHealth = 5000
dropship.MaxShields = 1000 + 1
dropship.CanFly = true
dropship.Seats += 0 -> new SeatDefinition()
dropship.Seats += 1 -> new SeatDefinition()
dropship.Seats(1).Bailable = true
@ -5499,6 +5542,7 @@ object GlobalDefinitions {
galaxy_gunship.Name = "galaxy_gunship"
galaxy_gunship.MaxHealth = 6000
galaxy_gunship.MaxShields = 1200 + 1
galaxy_gunship.CanFly = true
galaxy_gunship.Seats += 0 -> new SeatDefinition()
galaxy_gunship.Seats += 1 -> new SeatDefinition()
galaxy_gunship.Seats(1).ControlledWeapon = 6
@ -5531,6 +5575,7 @@ object GlobalDefinitions {
lodestar.Name = "lodestar"
lodestar.MaxHealth = 5000
lodestar.MaxShields = 1000 + 1
lodestar.CanFly = true
lodestar.Seats += 0 -> new SeatDefinition()
lodestar.MountPoints += 1 -> 0
lodestar.MountPoints += 2 -> 1
@ -5554,6 +5599,7 @@ object GlobalDefinitions {
phantasm.MaxHealth = 2500
phantasm.MaxShields = 500 + 1
phantasm.CanCloak = true
phantasm.CanFly = true
phantasm.Seats += 0 -> new SeatDefinition()
phantasm.Seats += 1 -> new SeatDefinition()
phantasm.Seats(1).Bailable = true
@ -5731,6 +5777,10 @@ object GlobalDefinitions {
* Initialize `Miscellaneous` globals.
*/
private def initMiscellaneous() : Unit = {
ams_respawn_tube.Name = "ams_respawn_tube"
ams_respawn_tube.Delay = 5
ams_respawn_tube.SpecificPointFunc = SpawnPoint.AMS
matrix_terminala.Name = "matrix_terminala"
matrix_terminalb.Name = "matrix_terminalb"
@ -5789,6 +5839,18 @@ object GlobalDefinitions {
bfr_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.bfrVehicles, VehicleTerminalDefinition.trunk)
bfr_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage()
respawn_tube.Name = "respawn_tube"
respawn_tube.Delay = 10
respawn_tube.SpecificPointFunc = SpawnPoint.Tube
respawn_tube_sanctuary.Name = "respawn_tube"
respawn_tube_sanctuary.Delay = 10
respawn_tube_sanctuary.SpecificPointFunc = SpawnPoint.Default
respawn_tube_tower.Name = "respawn_tube_tower"
respawn_tube_tower.Delay = 10
respawn_tube_tower.SpecificPointFunc = SpawnPoint.Tube
teleportpad_terminal.Name = "teleportpad_terminal"
teleportpad_terminal.Tab += 0 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.routerTerminal)

View file

@ -0,0 +1,162 @@
// Copyright (c) 2019 PSForever
package net.psforever.objects
import net.psforever.objects.definition.{ObjectDefinition, VehicleDefinition}
import net.psforever.objects.serverobject.PlanetSideServerObject
import net.psforever.packet.game.PlanetSideGUID
import net.psforever.types.Vector3
import scala.collection.mutable
trait SpawnPoint {
psso : PlanetSideServerObject =>
/**
* An element of the contract of `PlanetSideServerObject`;
* but, this makes it visible to a `SpawnPoint` object without casting.
* @see `Identifiable.GUID`
*/
def GUID : PlanetSideGUID
/**
* An element of the contract of `PlanetSideServerObject`;
* but, this makes it visible to a `SpawnPoint` object without casting.
* @see `WorldEntity.GUID`
* @see `SpecificPoint`
*/
def Position : Vector3
/**
* An element of the contract of `PlanetSideServerObject`;
* but, this makes it visible to a `SpawnPoint` object without casting.
* @see `WorldEntity.GUID`
* @see `SpecificPoint`
*/
def Orientation : Vector3
/**
* An element of an unspoken contract with `Amenity`.
* While not all `SpawnPoint` objects will be `Amenity` objects, a subclass of the `PlanetSideServerObject` class,
* they will all promote having an object owner, or "parent."
* This should generally be themselves.
* @see `Amenity.Owner`
*/
def Owner : PlanetSideServerObject
/**
* An element of the contract of `PlanetSideServerObject`;
* but, this makes it visible to a `SpawnPoint` object without casting.
* @see `PlanetSideGameObject.Definition`
* @see `SpecificPoint`
*/
def Definition : ObjectDefinition with SpawnPointDefinition
/**
* Determine a specific position and orientation in which to spawn the target.
* @return a `Tuple` of `Vector3` objects;
* the first represents the game world position of spawning;
* the second represents the game world direction of spawning
*/
def SpecificPoint(target : PlanetSideGameObject) : (Vector3, Vector3) = {
psso.Definition match {
case d : SpawnPointDefinition =>
d.SpecificPoint(this, target)
case _ =>
SpawnPoint.Default(this, target)
}
}
}
object SpawnPoint {
def Default(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = (obj.Position, obj.Orientation)
def Tube(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = (
obj.Position + Vector3.z(1.5f),
obj.Orientation.xy + Vector3.z(obj.Orientation.z + 90 % 360)
)
def AMS(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = {
//position the player alongside either of the AMS's terminals, facing away from it
val ori = obj.Orientation
val side = if(System.currentTimeMillis() % 2 == 0) 1 else -1 //right | left
val x = ori.x
val xsin = 3 * side * math.abs(math.sin(math.toRadians(x))).toFloat + 0.5f //sin because 0-degrees is up
val z = ori.z
val zrot = (z + 90) % 360
val zrad = math.toRadians(zrot)
val shift = Vector3(math.sin(zrad).toFloat, math.cos(zrad).toFloat, 0) * (3 * side) //x=sin, y=cos because compass-0 is East, not North
(
obj.Position + shift + (if(x >= 330) { //ams leaning to the left
Vector3.z(xsin)
}
else { //ams leaning to the right
Vector3.z(-xsin)
}),
if(side == 1) {
Vector3.z(zrot)
}
else {
Vector3.z((z - 90) % 360)
}
)
}
def Gate(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = {
obj.Definition match {
case d : SpawnPointDefinition =>
val ori = target.Orientation
val zrad = math.toRadians(ori.z)
val radius = scala.math.random.toFloat * d.UseRadius/2 + 20f //20 is definitely outside of the gating energy field
val shift = Vector3(math.sin(zrad).toFloat, math.cos(zrad).toFloat, 0) * radius
val altitudeShift = target.Definition match {
case vdef : VehicleDefinition if GlobalDefinitions.isFlightVehicle(vdef) =>
Vector3.z(scala.math.random.toFloat * d.UseRadius/4 + 20f)
case _ =>
Vector3.Zero
}
(obj.Position + shift + altitudeShift, ori)
case _ =>
Default(obj, target)
}
}
}
trait SpawnPointDefinition {
private var radius : Float = 0f //m
private var delay : Long = 0 //s
private var noWarp : Option[mutable.Set[VehicleDefinition]] = None
private var spawningFunc : (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3) = SpawnPoint.Default
def UseRadius : Float = radius
def UseRadius_=(rad : Float) : Float = {
radius = rad
UseRadius
}
def Delay : Long = delay
def Delay_=(toDelay : Long) : Long = {
delay = toDelay
Delay
}
def VehicleAllowance : Boolean = noWarp.isDefined
def VehicleAllowance_=(allow : Boolean) : Boolean = {
if(allow && noWarp.isEmpty) {
noWarp = Some(mutable.Set.empty[VehicleDefinition])
}
else if(!allow && noWarp.isDefined) {
noWarp = None
}
VehicleAllowance
}
def NoWarp : mutable.Set[VehicleDefinition] = {
noWarp.getOrElse(mutable.Set.empty[VehicleDefinition])
}
def SpecificPointFunc : (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3) = spawningFunc
def SpecificPointFunc_=(func : (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3)) : Unit = {
spawningFunc = func
}
def SpecificPoint(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = spawningFunc(obj, target)
}

View file

@ -82,6 +82,7 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends PlanetSideServ
private var trunkAccess : Option[PlanetSideGUID] = None
private var jammered : Boolean = false
private var cloaked : Boolean = false
private var flying : Boolean = false
private var capacitor : Int = 0
private var continent : String = "home2" //the zone id
@ -207,6 +208,13 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends PlanetSideServ
Cloaked
}
def Flying : Boolean = flying
def Flying_=(isFlying : Boolean) : Boolean = {
flying = isFlying
Flying
}
def Capacitor : Int = capacitor
def Capacitor_=(value: Int) : Int = {

View file

@ -36,6 +36,7 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId)
private var trunkSize : InventoryTile = InventoryTile.None
private var trunkOffset : Int = 0
private var canCloak : Boolean = false
private var canFly : Boolean = false
private var canBeOwned : Boolean = true
private var serverVehicleOverrideSpeeds : (Int, Int) = (0, 0)
private var deconTime : Option[FiniteDuration] = None
@ -81,6 +82,13 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId)
CanCloak
}
def CanFly : Boolean = canFly
def CanFly_=(flying : Boolean) : Boolean = {
canFly = flying
CanFly
}
def Weapons : mutable.HashMap[Int, ToolDefinition] = weapons
def Deployment : Boolean = deployment

View file

@ -7,5 +7,13 @@ import net.psforever.packet.game.objectcreate.{VariantVehicleData, VehicleFormat
class VariantVehicleConverter extends VehicleConverter {
override protected def SpecificFormatModifier : VehicleFormat.Value = VehicleFormat.Variant
override protected def SpecificFormatData(obj : Vehicle) = Some(VariantVehicleData(0))
override protected def SpecificFormatData(obj : Vehicle) = {
/*
landed is 0
flying is 7
*/
Some(VariantVehicleData(
if(obj.Definition.CanFly && obj.Flying) 7 else 0
))
}
}

View file

@ -3,40 +3,46 @@ package net.psforever.objects.serverobject.hackable
import net.psforever.objects.Player
import net.psforever.objects.serverobject.affinity.FactionAffinity
import net.psforever.packet.game.{PlanetSideGUID, TriggeredSound}
import net.psforever.types.Vector3
import net.psforever.types.{PlanetSideEmpire, Vector3}
trait Hackable extends FactionAffinity {
/** An entry that maintains a reference to the `Player`, and the player's GUID and location when the message was received. */
private var hackedBy : Option[(Player, PlanetSideGUID, Vector3)] = None
def HackedBy : Option[(Player, PlanetSideGUID, Vector3)] = hackedBy
def HackedBy_=(agent : Player) : Option[(Player, PlanetSideGUID, Vector3)] = HackedBy_=(Some(agent))
import Hackable._
/** inportant information regarding the hack and how it was started */
private var hackedBy : Option[HackInfo] = None
def HackedBy : Option[HackInfo] = hackedBy
def HackedBy_=(agent : Player) : Option[HackInfo] = HackedBy_=(Some(agent))
/**
* Set the hack state of this object by recording important information about the player that caused it.
* Set the hack state of this object by recording important information about the player who caused it.
* Set the hack state if there is no current hack state.
* Override the hack state with a new hack state if the new user has different faction affiliation.
* @param agent a `Player`, or no player
* @return the player hack entry
*/
def HackedBy_=(agent : Option[Player]) : Option[(Player, PlanetSideGUID, Vector3)] = {
hackedBy match {
case None =>
//set the hack state if there is no current hack state
if(agent.isDefined) {
hackedBy = Some(agent.get, agent.get.GUID, agent.get.Position)
}
case Some(_) =>
//clear the hack state if no agent is provided or the agent's faction matches the object faction
if(agent.isEmpty || agent.get.Faction == this.Faction) {
def HackedBy_=(agent : Option[Player]) : Option[HackInfo] = {
(hackedBy, agent) match {
case (None, Some(actor)) =>
hackedBy = Some(HackInfo(actor.Name, actor.GUID, actor.Faction, actor.Position, System.nanoTime, 0L))
case (Some(info), Some(actor)) =>
if(actor.Faction == this.Faction) {
//hack cleared
hackedBy = None
}
//override the hack state with a new hack state if the new user has different faction affiliation
else if(agent.get.Faction != hackedBy.get._1.Faction) {
hackedBy = Some(agent.get, agent.get.GUID, agent.get.Position)
else if(actor.Faction != info.hackerFaction) {
//override the hack state with a new hack state if the new user has different faction affiliation
hackedBy = Some(HackInfo(actor.Name, actor.GUID, actor.Faction, actor.Position, System.nanoTime, 0L))
}
case (_, None) =>
hackedBy = None
}
HackedBy
}
def HackedBy_=(hackInfo : HackInfo) : Option[HackInfo] = {
hackedBy = Some(hackInfo)
HackedBy
}
/** The sound made when the object is hacked */
private var hackSound : TriggeredSound.Value = TriggeredSound.HackDoor
def HackSound : TriggeredSound.Value = hackSound
@ -61,3 +67,15 @@ trait Hackable extends FactionAffinity {
arr
}
}
object Hackable {
final case class HackInfo(hackerName : String,
hackerGUID : PlanetSideGUID,
hackerFaction : PlanetSideEmpire.Value,
hackerPos : Vector3,
hackStartTime : Long,
hackDuration : Long) {
def Duration(time : Long) : HackInfo =
HackInfo(hackerName, hackerGUID, hackerFaction, hackerPos, hackStartTime, time)
}
}

View file

@ -2,13 +2,18 @@
package net.psforever.objects.serverobject.structures
import akka.actor.ActorContext
import net.psforever.objects.GlobalDefinitions
import net.psforever.objects.definition.ObjectDefinition
import net.psforever.objects.serverobject.PlanetSideServerObject
import net.psforever.objects.serverobject.hackable.Hackable
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.terminals.CaptureTerminal
import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.PlanetSideGUID
import net.psforever.packet.game._
import net.psforever.types.{PlanetSideEmpire, Vector3}
class Building(private val building_guid : Int, private val map_id : Int, private val zone : Zone, private val buildingType : StructureType.Value) extends PlanetSideServerObject {
class Building(private val building_guid : Int, private val map_id : Int, private val zone : Zone, private val buildingType : StructureType.Value, private val buildingDefinition : ObjectDefinition) extends PlanetSideServerObject {
/**
* The map_id is the identifier number used in BuildingInfoUpdateMessage. This is the index that the building appears in the MPO file starting from index 1
* The GUID is the identifier number used in SetEmpireMessage / Facility hacking / PlanetSideAttributeMessage.
@ -36,30 +41,93 @@ class Building(private val building_guid : Int, private val map_id : Int, privat
def Zone : Zone = zone
def Info : (
Int,
Boolean, PlanetSideEmpire.Value, Long, PlanetSideEmpire.Value,
Long, Option[Additional1],
PlanetSideGeneratorState.Value, Boolean, Boolean,
Int, Int,
List[Additional2], Long, Boolean,
Int, Option[Additional3],
Boolean, Boolean
) = {
//if we have a silo, get the NTU level
val ntuLevel : Int = amenities.find(_.Definition == GlobalDefinitions.resource_silo) match {
case Some(obj: ResourceSilo) =>
obj.CapacitorDisplay.toInt
case _ => //we have no silo; we have unlimited power
10
}
//if we have a capture terminal, get the hack status & time from control console if it exists
val (hacking, hackingFaction, hackTime) : (Boolean, PlanetSideEmpire.Value, Long) = amenities.find(_.Definition == GlobalDefinitions.capture_terminal) match {
case Some(obj: CaptureTerminal with Hackable) =>
obj.HackedBy match {
case Some(Hackable.HackInfo(_, _, hfaction, _, start, length)) =>
(true, hfaction, math.max(0, start + length - System.nanoTime))
case _ =>
(false, PlanetSideEmpire.NEUTRAL, 0L)
}
case _ =>
(false, PlanetSideEmpire.NEUTRAL, 0L)
}
//TODO if we have a generator, get the current repair state
val (generatorState, bootGeneratorPain) = (PlanetSideGeneratorState.Normal, false)
//if we have spawn tubes, determine if any of them are active
val (spawnTubesNormal, boostSpawnPain) : (Boolean, Boolean) = {
val o = amenities.collect({ case _ : SpawnTube => true }) ///TODO obj.Health > 0
if(o.nonEmpty) {
(o.foldLeft(false)(_ || _), false) //TODO poll pain field strength
}
else {
(true, false)
}
}
//out
(
ntuLevel,
hacking,
hackingFaction,
hackTime,
if(ntuLevel > 0) Faction else PlanetSideEmpire.NEUTRAL,
0, //!! Field != 0 will cause malformed packet. See class def.
None,
generatorState,
spawnTubesNormal,
false, //force_dome_active
0, //lattice_benefit
0, //cavern_benefit; !! Field > 0 will cause malformed packet. See class def.
Nil,
0,
false,
8, //!! Field != 8 will cause malformed packet. See class def.
None,
boostSpawnPain, //boost_spawn_pain
bootGeneratorPain //boost_generator_pain
)
}
def BuildingType : StructureType.Value = buildingType
override def Continent : String = zone.Id
override def Continent_=(zone : String) : String = Continent
def Definition: ObjectDefinition = Building.BuildingDefinition
def Definition: ObjectDefinition = buildingDefinition
}
object Building {
final val NoBuilding : Building = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Platform) {
final val NoBuilding : Building = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Platform, GlobalDefinitions.building) {
override def Faction_=(faction : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL
override def Amenities_=(obj : Amenity) : List[Amenity] = Nil
}
final val BuildingDefinition : ObjectDefinition = new ObjectDefinition(0) { Name = "building" }
def apply(guid : Int, map_id : Int, zone : Zone, buildingType : StructureType.Value) : Building = {
new Building(guid, map_id, zone, buildingType)
new Building(guid, map_id, zone, buildingType, GlobalDefinitions.building)
}
def Structure(buildingType : StructureType.Value, location : Vector3)(guid : Int, map_id : Int, zone : Zone, context : ActorContext) : Building = {
import akka.actor.Props
val obj = new Building(guid, map_id, zone, buildingType)
val obj = new Building(guid, map_id, zone, buildingType, GlobalDefinitions.building)
obj.Position = location
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-$buildingType-building")
obj
@ -67,10 +135,18 @@ object Building {
def Structure(buildingType : StructureType.Value)(guid: Int, map_id : Int, zone : Zone, context : ActorContext) : Building = {
import akka.actor.Props
val obj = new Building(guid, map_id, zone, buildingType)
val obj = new Building(guid, map_id, zone, buildingType, GlobalDefinitions.building)
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-$buildingType-building")
obj
}
def Structure(buildingType : StructureType.Value, buildingDefinition : ObjectDefinition, location : Vector3)(guid: Int, id : Int, zone : Zone, context : ActorContext) : Building = {
import akka.actor.Props
val obj = new Building(guid, id, zone, buildingType, buildingDefinition)
obj.Position = location
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$id-$buildingType-building")
obj
}
final case class SendMapUpdate(all_clients: Boolean)
}

View file

@ -1,26 +1,12 @@
// Copyright (c) 2017 PSForever
package net.psforever.objects.serverobject.structures
import java.util.concurrent.TimeUnit
import akka.actor.{Actor, ActorRef, Props}
import net.psforever.objects.GlobalDefinitions
import akka.actor.{Actor, ActorRef}
import net.psforever.objects.serverobject.affinity.{FactionAffinity, FactionAffinityBehavior}
import net.psforever.objects.serverobject.hackable.Hackable
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.terminals.CaptureTerminal
import net.psforever.packet.game.{BuildingInfoUpdateMessage, PlanetSideGeneratorState}
import net.psforever.types.PlanetSideEmpire
import net.psforever.packet.game.BuildingInfoUpdateMessage
import services.ServiceManager
import services.ServiceManager.Lookup
import services.galaxy.{GalaxyAction, GalaxyResponse, GalaxyServiceMessage, GalaxyServiceResponse}
import services.local.support.HackCaptureActor
import scala.util.Success
import scala.concurrent.duration._
import akka.pattern.ask
import scala.concurrent.{Await, Future}
class BuildingControl(building : Building) extends Actor with FactionAffinityBehavior.Check {
def FactionObject : FactionAffinity = building
@ -47,59 +33,32 @@ class BuildingControl(building : Building) extends Actor with FactionAffinityBeh
building.Amenities.foreach(_.Actor forward FactionAffinity.ConfirmFactionAffinity())
}
sender ! FactionAffinity.AssertFactionAffinity(building, faction)
case Building.SendMapUpdate(all_clients: Boolean) =>
log.info(s"Sending BuildingInfoUpdateMessage update. Zone: ${building.Zone.Number} - Building: ${building.GUID} / MapId: ${building.MapId}")
var ntuLevel = 0
var is_hacked = false
var hack_time_remaining_ms = 0L;
var hacked_by_faction = PlanetSideEmpire.NEUTRAL
// Get Ntu level from silo if it exists
building.Amenities.filter(x => (x.Definition == GlobalDefinitions.resource_silo)).headOption.asInstanceOf[Option[ResourceSilo]] match {
case Some(obj: ResourceSilo) =>
ntuLevel = obj.CapacitorDisplay.toInt
case _ => ;
}
// Get hack status & time from control console if it exists
building.Amenities.filter(x => x.Definition == GlobalDefinitions.capture_terminal).headOption.asInstanceOf[Option[CaptureTerminal with Hackable]] match {
case Some(obj: CaptureTerminal with Hackable) =>
if(!obj.HackedBy.isEmpty) {
is_hacked = true
hacked_by_faction = obj.HackedBy.get._1.Faction
}
import scala.concurrent.ExecutionContext.Implicits.global
val future = ask(localService, HackCaptureActor.GetHackTimeRemainingNanos(obj.GUID))(1 second)
//todo: this is blocking. Not so bad when we're only retrieving one piece of data but as more functionality is added we'll need to change this to be async but wait for all replies before sending BIUM to clients
val time = Await.result(future, 1 second).asInstanceOf[Long]
hack_time_remaining_ms = TimeUnit.MILLISECONDS.convert(time, TimeUnit.NANOSECONDS)
case _ => ;
}
val zoneNumber = building.Zone.Number
val buildingNumber = building.MapId
log.info(s"sending BuildingInfoUpdateMessage update - zone=$zoneNumber, building=$buildingNumber")
val (
ntuLevel,
isHacked, empireHack, hackTimeRemaining, controllingEmpire,
unk1, unk1x,
generatorState, spawnTubesNormal, forceDomeActive,
latticeBenefit, cavernBenefit,
unk4, unk5, unk6,
unk7, unk7x,
boostSpawnPain, boostGeneratorPain
) = building.Info
val msg = BuildingInfoUpdateMessage(
continent_id = building.Zone.Number, //Zone
building_map_id = building.MapId, //Facility
ntu_level = ntuLevel,
is_hacked,
hacked_by_faction,
hack_time_remaining_ms,
empire_own = building.Faction,
unk1 = 0, //!! Field != 0 will cause malformed packet. See class def.
unk1x = None,
generator_state = PlanetSideGeneratorState.Normal,
spawn_tubes_normal = true,
force_dome_active = false,
lattice_benefit = 0,
cavern_benefit = 0, //!! Field > 0 will cause malformed packet. See class def.
unk4 = Nil,
unk5 = 0,
unk6 = false,
unk7 = 8, //!! Field != 8 will cause malformed packet. See class def.
unk7x = None,
boost_spawn_pain = false,
boost_generator_pain = false
zoneNumber,
buildingNumber,
ntuLevel,
isHacked, empireHack, hackTimeRemaining, controllingEmpire,
unk1, unk1x,
generatorState, spawnTubesNormal, forceDomeActive,
latticeBenefit, cavernBenefit,
unk4, unk5, unk6,
unk7, unk7x,
boostSpawnPain, boostGeneratorPain
)
if(all_clients) {
@ -110,6 +69,6 @@ class BuildingControl(building : Building) extends Actor with FactionAffinityBeh
}
case default =>
log.warn(s"BuildingControl: Unknown message ${default} received from ${sender().path}")
log.warn(s"BuildingControl: Unknown message $default received from ${sender().path}")
}
}

View file

@ -9,12 +9,12 @@ object StructureType extends Enumeration {
type Type = Value
val
Bridge,
Bridge, //technically, a "bridge section"
Building, //generic
Bunker,
Facility,
Platform, //outdoor amenities like the spawn pads in sanctuary
Tower,
WarpGate
Bunker, //low accessible ground cover
Facility, //large base
Platform, //outdoor amenities disconnected froma proper base like the vehicle spawn pads in sanctuary
Tower, //also called field towers: watchtower, air tower, gun tower
WarpGate //transport point between zones
= Value
}

View file

@ -2,20 +2,96 @@
package net.psforever.objects.serverobject.structures
import akka.actor.ActorContext
import net.psforever.objects.definition.ObjectDefinition
import net.psforever.objects.serverobject.PlanetSideServerObject
import net.psforever.objects.{GlobalDefinitions, SpawnPoint, SpawnPointDefinition}
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.{Additional1, Additional2, Additional3, PlanetSideGeneratorState}
import net.psforever.types.{PlanetSideEmpire, Vector3}
class WarpGate(building_guid : Int, map_id : Int, zone : Zone) extends Building(building_guid, map_id, zone, StructureType.WarpGate) {
class WarpGate(building_guid : Int, map_id : Int, zone : Zone, buildingDefinition : ObjectDefinition with SpawnPointDefinition)
extends Building(building_guid, map_id, zone, StructureType.WarpGate, buildingDefinition)
with SpawnPoint {
private var active : Boolean = true
private var broadcast : Boolean = false
override def Info : (
Int,
Boolean, PlanetSideEmpire.Value, Long, PlanetSideEmpire.Value,
Long, Option[Additional1],
PlanetSideGeneratorState.Value, Boolean, Boolean,
Int, Int,
List[Additional2], Long, Boolean,
Int, Option[Additional3],
Boolean, Boolean
) = {
(
0,
false,
PlanetSideEmpire.NEUTRAL,
0L,
Faction,
0, //!! Field != 0 will cause malformed packet. See class def.
None,
PlanetSideGeneratorState.Normal,
true, //TODO?
false, //force_dome_active
0, //lattice_benefit
0, //cavern_benefit; !! Field > 0 will cause malformed packet. See class def.
Nil,
0,
false,
8, //!! Field != 8 will cause malformed packet. See class def.
None,
false, //boost_spawn_pain
false //boost_generator_pain
)
}
def Active : Boolean = active
def Active_=(state : Boolean) : Boolean = {
active = state
Active
}
def Broadcast : Boolean = Active && broadcast
def Broadcast_=(cast : Boolean) : Boolean = {
broadcast = cast
Broadcast
}
def Owner : PlanetSideServerObject = this
override def Definition : ObjectDefinition with SpawnPointDefinition = buildingDefinition
//TODO stuff later
}
object WarpGate {
def apply(guid : Int, map_id : Int, zone : Zone) : WarpGate = {
new WarpGate(guid, map_id, zone)
def apply(guid : Int, map_id : Int, zone : Zone, buildingDefinition : ObjectDefinition with SpawnPointDefinition) : WarpGate = {
new WarpGate(guid, map_id, zone, buildingDefinition)
}
def Structure(guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = {
import akka.actor.Props
val obj = new WarpGate(guid, map_id, zone)
val obj = new WarpGate(guid, map_id, zone, GlobalDefinitions.warpgate)
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-gate")
obj
}
def Structure(location : Vector3)(guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = {
import akka.actor.Props
val obj = new WarpGate(guid, map_id, zone, GlobalDefinitions.warpgate)
obj.Position = location
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-gate")
obj
}
def Structure(location : Vector3, buildingDefinition : ObjectDefinition with SpawnPointDefinition)(guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = {
import akka.actor.Props
val obj = new WarpGate(guid, map_id, zone, buildingDefinition)
obj.Position = location
obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-gate")
obj
}

View file

@ -1,7 +1,7 @@
// Copyright (c) 2017 PSForever
package net.psforever.objects.serverobject.tube
import net.psforever.objects.GlobalDefinitions
import net.psforever.objects.{GlobalDefinitions, SpawnPoint}
import net.psforever.objects.serverobject.structures.Amenity
/**
@ -9,7 +9,8 @@ import net.psforever.objects.serverobject.structures.Amenity
* that infantry will be arranged upon spawning into the game world.
* @param tDef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields
*/
class SpawnTube(tDef : SpawnTubeDefinition) extends Amenity {
class SpawnTube(tDef : SpawnTubeDefinition) extends Amenity
with SpawnPoint {
def Definition : SpawnTubeDefinition = tDef
}

View file

@ -2,28 +2,16 @@
package net.psforever.objects.serverobject.tube
import akka.actor.ActorContext
import net.psforever.objects.SpawnPointDefinition
import net.psforever.objects.definition.ObjectDefinition
import net.psforever.objects.definition.converter.SpawnTubeConverter
import net.psforever.objects.serverobject.structures.Amenity
/**
* The definition for any `VehicleSpawnPad`.
* Currently, all tubes identify as object id 49 - `ams_respawn_tube` - configured manually.
* @see `GlobalDefinitions.ams_respawn_tube`
* The definition for any spawn point in the game world.
*/
class SpawnTubeDefinition(object_id : Int) extends ObjectDefinition(object_id) {
Name = if(object_id == 49) {
"ams_respawn_tube"
}
else if(object_id == 732) {
"respawn_tube"
}
else if(object_id == 733) {
"respawn_tube_tower"
}
else {
throw new IllegalArgumentException("terminal must be object id 49, 732, or 733")
}
class SpawnTubeDefinition(object_id : Int) extends ObjectDefinition(object_id)
with SpawnPointDefinition {
Packet = new SpawnTubeConverter
}

View file

@ -61,6 +61,15 @@ class InterstellarCluster(zones : List[Zone]) extends Actor {
sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None)
}
case msg @ Zone.Lattice.RequestSpecificSpawnPoint(zone_number, _, _) =>
recursiveFindWorldInCluster(zones.iterator, _.Number == zone_number) match {
case Some(zone) =>
zone.Actor forward msg
case None => //zone_number does not exist
sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None)
}
case _ =>
log.warn(s"InterstellarCluster received unknown message");
}

View file

@ -15,9 +15,8 @@ import net.psforever.objects.guid.source.LimitedNumberSource
import net.psforever.objects.inventory.Container
import net.psforever.objects.serverobject.PlanetSideServerObject
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.structures.{Amenity, Building}
import net.psforever.objects.serverobject.structures.{Amenity, Building, WarpGate}
import net.psforever.objects.serverobject.terminals.ProximityUnit
import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.serverobject.turret.FacilityTurret
import net.psforever.packet.game.PlanetSideGUID
import net.psforever.types.Vector3
@ -75,7 +74,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
private var buildings : PairMap[Int, Building] = PairMap.empty[Int, Building]
/** key - spawn zone id, value - buildings belonging to spawn zone */
private var spawnGroups : Map[Building, List[SpawnTube]] = PairMap[Building, List[SpawnTube]]()
private var spawnGroups : Map[Building, List[SpawnPoint]] = PairMap[Building, List[SpawnPoint]]()
/** */
private var vehicleEvents : ActorRef = ActorRef.noSender
@ -92,7 +91,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
* <br>
* Execution of this operation should be fail-safe.
* The chances of failure should be mitigated or skipped.
* An testing routine should be run after the fact on the results of the process.
* A testing routine should be run after the fact on the results of the process.
* @see `ZoneActor.ZoneSetupCheck`
* @param context a reference to an `ActorContext` necessary for `Props`
*/
@ -188,7 +187,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
* @return synchronized reference to the globally unique identifier system
*/
def GUID(hub : NumberPoolHub) : Boolean = {
if(actor == ActorRef.noSender && guid.Pools.map({case ((_, pool)) => pool.Count}).sum == 0) {
if(actor == ActorRef.noSender && guid.Pools.map({case (_, pool) => pool.Count}).sum == 0) {
import org.fusesource.jansi.Ansi.Color.RED
import org.fusesource.jansi.Ansi.ansi
println(ansi().fgBright(RED).a(s"""Caution: replacement of the number pool system for zone $Id; function is for testing purposes only""").reset())
@ -312,8 +311,8 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
buildings.get(id)
}
def BuildingByMapId(map_id : Int) : Building = {
buildings.filter(x => x._2.MapId == map_id).head._2
def BuildingByMapId(map_id : Int) : Option[Building] = {
buildings.values.find(_.MapId == map_id)
}
private def BuildLocalObjects(implicit context : ActorContext, guid : NumberPoolHub) : Unit = {
@ -324,7 +323,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
//guard against errors here, but don't worry about specifics; let ZoneActor.ZoneSetupCheck complain about problems
val other : ListBuffer[IdentifiableEntity] = new ListBuffer[IdentifiableEntity]()
//turret to weapon
Map.TurretToWeapon.foreach({ case ((turret_guid, weapon_guid)) =>
Map.TurretToWeapon.foreach({ case (turret_guid, weapon_guid) =>
((GUID(turret_guid) match {
case Some(obj : FacilityTurret) =>
Some(obj)
@ -385,27 +384,32 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) {
private def CreateSpawnGroups() : Unit = {
buildings.values
.filterNot { _.Position == Vector3.Zero }
.map(building => { building -> building.Amenities.collect { case(obj : SpawnTube) => obj } })
.filter( { case((_, spawns)) => spawns.nonEmpty })
.map(building => { building -> building.Amenities.collect { case obj : SpawnPoint => obj } })
.filter( { case(_, spawns) => spawns.nonEmpty })
.foreach { SpawnGroups }
buildings.values
.filterNot { _.Position == Vector3.Zero }
.collect { case building : WarpGate => building -> List(building.asInstanceOf[SpawnPoint]) }
.foreach { SpawnGroups }
}
def SpawnGroups() : Map[Building, List[SpawnTube]] = spawnGroups
def SpawnGroups() : Map[Building, List[SpawnPoint]] = spawnGroups
def SpawnGroups(building : Building) : List[SpawnTube] = SpawnGroups(building.MapId)
def SpawnGroups(building : Building) : List[SpawnPoint] = SpawnGroups(building.MapId)
def SpawnGroups(buildingId : Int) : List[SpawnTube] = {
spawnGroups.find({ case((building, _)) => building.MapId == buildingId }) match {
def SpawnGroups(buildingId : Int) : List[SpawnPoint] = {
spawnGroups.find({ case(building, _) => building.MapId == buildingId }) match {
case Some((_, list)) =>
list
case None =>
List.empty[SpawnTube]
List.empty[SpawnPoint]
}
}
def SpawnGroups(spawns : (Building, List[SpawnTube])) : Map[Building, List[SpawnTube]] = {
val (building, tubes) = spawns
val entry : Map[Building, List[SpawnTube]] = PairMap(building -> tubes)
def SpawnGroups(spawns : (Building, List[SpawnPoint])) : Map[Building, List[SpawnPoint]] = {
val (building, points) = spawns
val entry : Map[Building, List[SpawnPoint]] = PairMap(building -> points)
spawnGroups = spawnGroups ++ entry
entry
}
@ -533,12 +537,14 @@ object Zone {
* @param spawn_group the category of spawn points the request wants searched
*/
final case class RequestSpawnPoint(zone_number : Int, player : Player, spawn_group : Int)
final case class RequestSpecificSpawnPoint(zone_number : Int, player : Player, target : PlanetSideGUID)
/**
* Message that returns a discovered spawn point to a request source.
* @param zone_id the zone's text identifier
* @param spawn_tube the spawn point holding object
* @param spawn_point the spawn point holding object
*/
final case class SpawnPoint(zone_id : String, spawn_tube : SpawnTube)
final case class SpawnPoint(zone_id : String, spawn_point : net.psforever.objects.SpawnPoint)
/**
* Message that informs a request source that a spawn point could not be discovered with the previous criteria.
* @param zone_number this zone's numeric identifier

View file

@ -4,11 +4,11 @@ package net.psforever.objects.zones
import java.util.concurrent.atomic.AtomicInteger
import akka.actor.Actor
import net.psforever.objects.{GlobalDefinitions, PlanetSideGameObject, Tool}
import net.psforever.objects.serverobject.structures.StructureType
import net.psforever.objects.{GlobalDefinitions, PlanetSideGameObject, SpawnPoint, Tool}
import net.psforever.objects.serverobject.structures.{StructureType, WarpGate}
import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.vehicles.UtilityType
import net.psforever.types.{DriveState, Vector3}
import net.psforever.types.{DriveState, PlanetSideEmpire, Vector3}
import org.log4s.Logger
/**
@ -79,8 +79,8 @@ class ZoneActor(zone : Zone) extends Actor {
//ams
zone.Vehicles
.filter(veh =>
veh.DeploymentState == DriveState.Deployed &&
veh.Definition == GlobalDefinitions.ams &&
veh.DeploymentState == DriveState.Deployed &&
veh.Faction == player.Faction
)
.sortBy(veh => Vector3.DistanceSquared(playerPosition, veh.Position.xy))
@ -103,16 +103,23 @@ class ZoneActor(zone : Zone) extends Actor {
else if(spawn_group == 7) {
Set(StructureType.Facility, StructureType.Building)
}
else if(spawn_group == 12) {
Set(StructureType.WarpGate)
}
else {
Set.empty[StructureType.Value]
}
zone.SpawnGroups()
.filter({ case ((building, _)) =>
building.Faction == player.Faction &&
buildingTypeSet.contains(building.BuildingType)
.filter({ case (building, _) =>
buildingTypeSet.contains(building.BuildingType) && (building match {
case wg : WarpGate =>
building.Faction == player.Faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast
case _ =>
building.Faction == player.Faction
})
})
.toSeq
.sortBy({ case ((building, _)) =>
.sortBy({ case (building, _) =>
Vector3.DistanceSquared(playerPosition, building.Position.xy)
})
.headOption match {
@ -137,6 +144,53 @@ class ZoneActor(zone : Zone) extends Actor {
sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None)
}
case Zone.Lattice.RequestSpecificSpawnPoint(zone_number, player, target) =>
if(zone_number == zone.Number) {
//is our spawn point some other privileged vehicle?
zone.Vehicles.collectFirst({
case vehicle : SpawnPoint if vehicle.Faction == player.Faction && vehicle.GUID == target =>
Some(vehicle) //the vehicle itself is the spawn point
case vehicle if vehicle.Faction == player.Faction && vehicle.GUID == target =>
vehicle.Utilities.values.find {
util =>
util().isInstanceOf[SpawnPoint]
} match {
case None =>
None
case Some(util) =>
Some(util().asInstanceOf[SpawnTube]) //the vehicle's utility is the spawn point
}
}).orElse( {
//is our spawn point a building itself (like a warp gate)?
val friendlySpawnGroups = zone.SpawnGroups().filter {
case(building, _) =>
building match {
case wg : WarpGate =>
building.Faction == player.Faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast
case _ =>
building.Faction == player.Faction
}
}
friendlySpawnGroups.collectFirst({
case (building, points) if building.MapId == target.guid && points.nonEmpty =>
scala.util.Random.shuffle(points).head
})
.orElse {
//is our spawn a conventional amenity?
friendlySpawnGroups.values.flatten.find { point => point.GUID == target}
}
}) match {
case Some(point : SpawnPoint) =>
sender ! Zone.Lattice.SpawnPoint(zone.Id, point)
case _ =>
sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, Some(target.guid))
}
}
else { //wrong zone_number
sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None)
}
case msg =>
log.warn(s"Received unexpected message - $msg")
}
@ -147,7 +201,7 @@ class ZoneActor(zone : Zone) extends Actor {
def guid(id : Int) = zone.GUID(id)
val slog = org.log4s.getLogger(s"zone/${zone.Id}/sanity")
val errors = new AtomicInteger(0)
val validateObject : (Int, (PlanetSideGameObject)=>Boolean, String) => Boolean = ValidateObject(guid, slog, errors)
val validateObject : (Int, PlanetSideGameObject=>Boolean, String) => Boolean = ValidateObject(guid, slog, errors)
//check bases
map.ObjectToBuilding.values.toSet[Int].foreach(building_id =>
@ -166,25 +220,25 @@ class ZoneActor(zone : Zone) extends Actor {
)
//check door to lock association
map.DoorToLock.foreach({ case((door_guid, lock_guid)) =>
map.DoorToLock.foreach({ case(door_guid, lock_guid) =>
validateObject(door_guid, DoorCheck, "door")
validateObject(lock_guid, LockCheck, "IFF lock")
})
//check vehicle terminal to spawn pad association
map.TerminalToSpawnPad.foreach({ case ((term_guid, pad_guid)) =>
map.TerminalToSpawnPad.foreach({ case (term_guid, pad_guid) =>
validateObject(term_guid, TerminalCheck, "vehicle terminal")
validateObject(pad_guid, VehicleSpawnPadCheck, "vehicle spawn pad")
})
//check implant terminal mech to implant terminal interface association
map.TerminalToInterface.foreach({case ((mech_guid, interface_guid)) =>
map.TerminalToInterface.foreach({case (mech_guid, interface_guid) =>
validateObject(mech_guid, ImplantMechCheck, "implant terminal mech")
validateObject(interface_guid, TerminalCheck, "implant terminal interface")
})
//check manned turret to weapon association
map.TurretToWeapon.foreach({ case ((turret_guid, weapon_guid)) =>
map.TurretToWeapon.foreach({ case (turret_guid, weapon_guid) =>
validateObject(turret_guid, FacilityTurretCheck, "facility turret mount")
if(validateObject(weapon_guid, WeaponCheck, "facility turret weapon")) {
if(guid(weapon_guid).get.asInstanceOf[Tool].AmmoSlots.count(!_.Box.HasGUID) > 0) {
@ -213,8 +267,8 @@ object ZoneActor {
* @return `true` if the object was discovered and validates correctly;
* `false` if the object failed any tests
*/
def ValidateObject(guid : (Int)=>Option[PlanetSideGameObject], elog : Logger, errorCounter : AtomicInteger)
(object_guid : Int, test : (PlanetSideGameObject)=>Boolean, description : String) : Boolean = {
def ValidateObject(guid : Int=>Option[PlanetSideGameObject], elog : Logger, errorCounter : AtomicInteger)
(object_guid : Int, test : PlanetSideGameObject=>Boolean, description : String) : Boolean = {
try {
if(!test(guid(object_guid).get)) {
elog.error(s"expected id $object_guid to be a $description, but it was not")

View file

@ -42,6 +42,7 @@ class ZoneVehicleActor(zone : Zone, vehicleList : ListBuffer[Vehicle]) extends A
}
else {
vehicleList += vehicle
vehicle.Continent = zone.Id
vehicle.Actor = context.actorOf(Props(classOf[VehicleControl], vehicle), s"${vehicle.Definition.Name}_${vehicle.GUID.guid}")
}

View file

@ -54,10 +54,9 @@ object BindStatus extends Enumeration(1) {
* Find other bind descriptors.
* @param action the purpose of the packet
* @param bind_desc a text description of the respawn binding point
* @param unk1 na;
* usually set `true` if there is more data in the packet ...
* @param display_icon show the selection icon on the redeployment map
* @param logging true, to report on bind point change visible in the events window;
* false, to render spawn change silent;
* false, to render spawn change silently;
* some first time notifications will always display regardless of this flag
* @param spawn_group the kind of spawn request that will be made;
* affects the type of icon displayed;
@ -71,7 +70,7 @@ object BindStatus extends Enumeration(1) {
*/
final case class BindPlayerMessage(action : BindStatus.Value,
bind_desc : String,
unk1 : Boolean,
display_icon : Boolean,
logging : Boolean,
spawn_group : SpawnGroup.Value,
zone_number : Long,
@ -94,7 +93,7 @@ object BindPlayerMessage extends Marshallable[BindPlayerMessage] {
implicit val codec : Codec[BindPlayerMessage] = (
("action" | BindStatus.codec) ::
("bind_desc" | PacketHelpers.encodedString) ::
("unk1" | bool) ::
("display_icon" | bool) ::
("logging" | bool) ::
("spawn_group" | spawnGroupCodec) ::
("zone_number" | uint32L) ::

View file

@ -7,14 +7,23 @@ import scodec.Codec
import scodec.codecs._
/**
*
* @param cargo_vehicle_guid Cargo vehicle GUID (galaxy / lodestar)
* @param requesting_vehicle Seems to be vehicle that requested mounting (0 after mount)
* @param mounted_vehicle Seems to be vehicle that requested mounting after mount (0 before mount)
* @param dismounted_vehicle Seems to be vehicle that was mounted after disembarking (0 before embark or reset to 0 when MountVehicleCargoMsg received)
* @param slot Mount point for cargo bay 1 = lodestar, 15 = galaxy
* @param mount_status Mount status? 0 = None, 1 = Mount/Dismount in progress, 3 = Mounted
* @param orientation 0 = normal, 1 = sideways (e.g. router in lodestar)
* na
* @see `CargoStatus`
* @see `MountVehicleCargoMsg`
* @param cargo_vehicle_guid always the carrier vehicle
* @param requesting_vehicle cargo vehicle that requested mounting during the mounting process;
* blank when the process is complete
* @param mounted_vehicle cargo vehicle that requested mounting after the mounting process is complete;
* blank before the process is complete
* @param dismounted_vehicle cargo vehicle that was mounted after disembarking;
* blank before disembark
* blank before mounting request, when packet `MountVehicleCargoMsg` is received
* @param slot cargo hold mount position;
* common values are 1 for the `lodestar` and 15 for the `dropship`
* @param mount_status cargo mount status
* @param orientation direction the cargo vehicle faces when stowed in the carrier cargo bay;
* 0 is "normal," front facing forward;
* 1 is "sideways," front facing the side of the carrier vehicle, e.g. `router`
*/
final case class CargoMountPointStatusMessage(cargo_vehicle_guid : PlanetSideGUID,
requesting_vehicle: PlanetSideGUID,

View file

@ -14,13 +14,17 @@ import scodec.codecs._
* @param pos the xyz-coordinate location in the world
* @param ang the orientation of the vehicle
* @param vel optional movement data
* @param unk2 na
* @param flying flight information, valid only for a vehicle that can fly when in flight;
* `Some(7)`, when in a flying state (vertical thrust unnecessary to unlock movement)
* `None`, when landed and for all vehicles that do not fly
* @param unk3 na
* @param unk4 na
* @param wheel_direction for ground vehicles, whether the wheels are being turned;
* @param wheel_direction for ground vehicles, whether and how much the wheels are being turned;
* 15 for straight;
* 0 for hard right;
* 30 for hard left
* 30 for hard left;
* values in between are possible;
* vehicles that hover also influence this field as expected
* @param unk5 na - Possibly a flag to indicate the vehicle is attached to something else e.g. is in a galaxy/lodestar cargo bay
* @param unk6 na
* @see `PlacementData`
@ -30,7 +34,7 @@ final case class VehicleStateMessage(vehicle_guid : PlanetSideGUID,
pos : Vector3,
ang : Vector3,
vel : Option[Vector3],
unk2 : Option[Int],
flying : Option[Int],
unk3 : Int,
unk4 : Int,
wheel_direction : Int,
@ -61,7 +65,7 @@ object VehicleStateMessage extends Marshallable[VehicleStateMessage] {
("pos" | Vector3.codec_pos) ::
("ang" | codec_orient) ::
optional(bool, "vel" | Vector3.codec_vel) ::
optional(bool, "unk2" | uintL(5)) ::
optional(bool, "flying" | uintL(5)) ::
("unk3" | uintL(7)) ::
("unk4" | uint4L) ::
("wheel_direction" | uintL(5)) ::

View file

@ -15,21 +15,18 @@ import scodec.codecs._
* The process of gate transportation should not start until the server responds to this packet.<br>
* <br>
* Exploration 1:<br>
* Does this packet apply to geowarp transport as well?<br>
* <br>
* Exploration 2:<br>
* Those last two fields that are usually blanked do something?
* @param continent_guid the continent (zone)
* @param building_guid the warp gate
* @param dest_building_guid the destination warp gate
* @param dest_continent_guid the destination continent (zone)
* Does this packet apply to geowarp transport as well?
* @param from_zone the continent (zone)
* @param from_gate_guid the warp gate
* @param to_gate_mapid the destination warp gate
* @param to_zone the destination continent (zone)
* @param unk1 na; always zero?
* @param unk2 na; always zero?
*/
final case class WarpgateRequest(continent_guid : PlanetSideGUID,
building_guid : PlanetSideGUID,
dest_building_guid : PlanetSideGUID,
dest_continent_guid : PlanetSideGUID,
final case class WarpgateRequest(from_zone : PlanetSideGUID,
from_gate_guid : PlanetSideGUID,
to_gate_mapid : PlanetSideGUID,
to_zone : PlanetSideGUID,
unk1 : Int,
unk2 : Int)
extends PlanetSideGamePacket {
@ -40,10 +37,10 @@ final case class WarpgateRequest(continent_guid : PlanetSideGUID,
object WarpgateRequest extends Marshallable[WarpgateRequest] {
implicit val codec : Codec[WarpgateRequest] = (
("continent_guid" | PlanetSideGUID.codec) ::
("building_guid" | PlanetSideGUID.codec) ::
("dest_building_guid" | PlanetSideGUID.codec) ::
("dest_continent_guid" | PlanetSideGUID.codec) ::
("from_zone" | PlanetSideGUID.codec) ::
("from_gate_guid" | PlanetSideGUID.codec) ::
("to_gate_mapid" | PlanetSideGUID.codec) ::
("to_zone" | PlanetSideGUID.codec) ::
("unk1" | uint8L) ::
("unk2" | uint8L)
).as[WarpgateRequest]

View file

@ -17,6 +17,7 @@ package net.psforever.types
* The icons produced by the normal and the bound tower and facility groups are not detailed.
* The ones that are not designated as "bound" also do not display icons when manually set.
* The AMS spawn group icons have an overhead AMS glyph and are smaller in radius, identical otherwise.
* @see `BindPlayerMessage`
*/
object SpawnGroup extends Enumeration {
type Type = Value

View file

@ -108,11 +108,13 @@ object Vector3 {
).as[Vector3]
/**
* A common vector object that only concerns itself with rotation around the world-up axis.
* @param yaw the angle of rotation
* A common vector object that only concerns itself
* with rotation around the world-up axis
* or the "world up" coordinate direction.
* @param value the third coordinate
* @return a `Vector3` object
*/
def z(yaw : Float) : Vector3 = Vector3(0, 0, yaw)
def z(value : Float) : Vector3 = Vector3(0, 0, value)
/**
* Calculate the actual distance between two points.

View file

@ -23,9 +23,15 @@ class HackCaptureActor extends Actor {
def receive : Receive = {
case HackCaptureActor.ObjectIsHacked(target, zone, unk1, unk2, duration, time) =>
log.trace(s"${target.GUID} is hacked.")
target.HackedBy match {
case Some(hackInfo) =>
target.HackedBy = hackInfo.Duration(duration.toNanos)
case None =>
log.error(s"Initial $target hack information is missing")
}
hackedObjects.filter(x => x.target == target).headOption match {
case Some(x) =>
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.")
hackedObjects = hackedObjects.filterNot(x => x.target == target)
log.warn(s"len: ${hackedObjects.length}")
@ -49,7 +55,7 @@ class HackCaptureActor extends Actor {
unhackObjects.foreach(entry => {
log.trace(s"Capture terminal hack timeout reached for terminal ${entry.target.GUID}")
val hackedByFaction = entry.target.HackedBy.get._1.Faction
val hackedByFaction = entry.target.HackedBy.get.hackerFaction
entry.target.Actor ! CommonMessages.ClearHack()
context.parent ! HackCaptureActor.HackTimeoutReached(entry.target.GUID, entry.zone.Id, entry.unk1, entry.unk2, hackedByFaction) //call up to the main event system
@ -58,7 +64,7 @@ class HackCaptureActor extends Actor {
// If there's hacked objects left in the list restart the timer with the shortest hack time left
RestartTimer()
case HackCaptureActor.ClearHack(target, zone) =>
case HackCaptureActor.ClearHack(target, _) =>
hackedObjects = hackedObjects.filterNot(x => x.target == target)
target.Owner.Actor ! Building.SendMapUpdate(all_clients = true)
@ -66,19 +72,19 @@ class HackCaptureActor extends Actor {
RestartTimer()
case HackCaptureActor.GetHackTimeRemainingNanos(capture_console_guid) =>
hackedObjects.filter(x => x.target.GUID == capture_console_guid).headOption match {
hackedObjects.find(_.target.GUID == capture_console_guid) match {
case Some(obj: HackCaptureActor.HackEntry) =>
val time_left: Long = obj.duration.toNanos - (System.nanoTime - obj.hack_timestamp)
sender ! time_left
case _ =>
log.warn(s"Couldn't find capture terminal guid ${capture_console_guid} in hackedObjects list")
log.warn(s"Couldn't find capture terminal guid $capture_console_guid in hackedObjects list")
sender ! 0L
}
case _ => ;
}
private def RestartTimer(): Unit = {
if(hackedObjects.length != 0) {
if(hackedObjects.nonEmpty) {
val now = System.nanoTime()
def minTimeLeft(entry1: HackCaptureActor.HackEntry, entry2: HackCaptureActor.HackEntry): HackCaptureActor.HackEntry = {
val entry1TimeLeft = entry1.duration.toNanos - (now - entry1.hack_timestamp)

View file

@ -32,4 +32,9 @@ object VehicleAction {
final case class VehicleState(player_guid : PlanetSideGUID, vehicle_guid : PlanetSideGUID, unk1 : Int, pos : Vector3, ang : Vector3, vel : Option[Vector3], unk2 : Option[Int], unk3 : Int, unk4 : Int, wheel_direction : Int, unk5 : Boolean, unk6 : Boolean) extends Action
final case class SendResponse(player_guid: PlanetSideGUID, msg : PlanetSideGamePacket) extends Action
final case class UpdateAmsSpawnPoint(zone : Zone) extends Action
final case class TransferPassengerChannel(player_guid : PlanetSideGUID, temp_channel : String, new_channel : String, vehicle : Vehicle) extends Action
final case class TransferPassenger(player_guid : PlanetSideGUID, temp_channel : String, vehicle : Vehicle, vehicle_to_delete : PlanetSideGUID) extends Action
final case class KickCargo(player_guid : PlanetSideGUID, cargo : Vehicle, speed : Int) extends Action
}

View file

@ -36,4 +36,9 @@ object VehicleResponse {
final case class VehicleState(vehicle_guid : PlanetSideGUID, unk1 : Int, pos : Vector3, ang : Vector3, vel : Option[Vector3], unk2 : Option[Int], unk3 : Int, unk4 : Int, wheel_direction : Int, unk5 : Boolean, unk6 : Boolean) extends Response
final case class SendResponse(msg: PlanetSideGamePacket) extends Response
final case class UpdateAmsSpawnPoint(list : List[SpawnTube]) extends Response
final case class TransferPassengerChannel(old_channel : String, temp_channel : String, vehicle : Vehicle) extends Response
final case class TransferPassenger(temp_channel : String, vehicle : Vehicle, vehicle_to_delete : PlanetSideGUID) extends Response
final case class KickCargo(cargo : Vehicle, speed : Int) extends Response
}

View file

@ -130,6 +130,20 @@ class VehicleService extends Actor {
//unlike other messages, just return to sender, don't publish
case VehicleAction.UpdateAmsSpawnPoint(zone : Zone) =>
sender ! VehicleServiceResponse(s"/$forChannel/Vehicle", Service.defaultPlayerGUID, VehicleResponse.UpdateAmsSpawnPoint(AmsSpawnPoints(zone)))
case VehicleAction.TransferPassengerChannel(player_guid, old_channel, temp_channel, vehicle) =>
VehicleEvents.publish(
VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.TransferPassengerChannel(old_channel, temp_channel, vehicle))
)
case VehicleAction.TransferPassenger(player_guid, temp_channel, vehicle, vehicle_to_delete) =>
VehicleEvents.publish(
VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.TransferPassenger(temp_channel, vehicle, vehicle_to_delete))
)
case VehicleAction.KickCargo(player_guid, cargo, speed) =>
VehicleEvents.publish(
VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.KickCargo(cargo, speed))
)
case _ => ;
}

View file

@ -104,7 +104,7 @@ class BuildingTest extends Specification {
class WarpGateTest extends Specification {
"WarpGate" should {
"construct" in {
val bldg = WarpGate(0, 10, Zone.Nowhere)
val bldg = WarpGate(0, 10, Zone.Nowhere, GlobalDefinitions.warpgate)
bldg.MapId mustEqual 10
bldg.Actor mustEqual ActorRef.noSender
bldg.Amenities mustEqual Nil

View file

@ -101,7 +101,7 @@ object DoorControlTest {
def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, Door) = {
val door = Door(GlobalDefinitions.door)
door.Actor = system.actorOf(Props(classOf[DoorControl], door), "door")
door.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building)
door.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
door.Owner.Faction = faction
(Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), door)
}

View file

@ -43,7 +43,7 @@ class FactionAffinityTest extends Specification {
"inherits affinity from owner 2" in {
val obj = new Door(GlobalDefinitions.door)
val bldg = new Building(building_guid = 0, map_id = 1, Zone.Nowhere, StructureType.Building)
val bldg = new Building(building_guid = 0, map_id = 1, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
obj.Owner = bldg
obj.Faction mustEqual PlanetSideEmpire.NEUTRAL

View file

@ -89,7 +89,7 @@ object IFFLockControlTest {
def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, IFFLock) = {
val lock = IFFLock(GlobalDefinitions.lock_external)
lock.Actor = system.actorOf(Props(classOf[IFFLockControl], lock), "lock-control")
lock.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building)
lock.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
lock.Owner.Faction = faction
(Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), lock)
}

View file

@ -14,7 +14,7 @@ import net.psforever.packet.game.{PlanetSideGUID, UseItemMessage}
import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, Vector3}
import org.specs2.mutable.Specification
import services.ServiceManager
import services.avatar.{AvatarAction, AvatarService, AvatarServiceMessage}
import services.avatar.{AvatarAction, AvatarServiceMessage}
import scala.concurrent.duration._
@ -111,7 +111,7 @@ class ResourceSiloControlNtuWarningTest extends ActorTest {
obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo")
obj.Actor ! "startup"
obj.Owner = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building)
obj.Owner = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
"Resource silo" should {
"announce high ntu" in {
@ -144,7 +144,7 @@ class ResourceSiloControlUpdate1Test extends ActorTest {
obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo")
obj.Actor ! "startup"
val bldg = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building)
val bldg = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
val probe2 = TestProbe()
bldg.Actor = system.actorOf(Props(classOf[ResourceSiloTest.ProbedBuildingControl], probe2), "test-bldg")
obj.Owner = bldg
@ -211,7 +211,7 @@ class ResourceSiloControlUpdate2Test extends ActorTest {
obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo")
obj.Actor ! "startup"
val bldg = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building)
val bldg = new Building(building_guid = 6, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
val probe2 = TestProbe()
bldg.Actor = system.actorOf(Props(classOf[ResourceSiloTest.ProbedBuildingControl], probe2), "test-bldg")
obj.Owner = bldg
@ -270,7 +270,7 @@ class ResourceSiloControlNoUpdateTest extends ActorTest {
obj.GUID = PlanetSideGUID(1)
obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo")
obj.Actor ! "startup"
val bldg = new Building(building_guid = 6, map_id = 6, Zone.Nowhere, StructureType.Building)
val bldg = new Building(building_guid = 6, map_id = 6, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
val probe2 = TestProbe()
bldg.Actor = system.actorOf(Props(classOf[ResourceSiloTest.ProbedBuildingControl], probe2), "test-bldg")
obj.Owner = bldg

View file

@ -9,34 +9,9 @@ import org.specs2.mutable.Specification
class SpawnTubeTest extends Specification {
"SpawnTubeDefinition" should {
"define (ams_respawn_tube)" in {
"define" in {
val obj = new SpawnTubeDefinition(49)
obj.ObjectId mustEqual 49
obj.Name mustEqual "ams_respawn_tube"
}
"define (respawn_tube)" in {
val obj = new SpawnTubeDefinition(732)
obj.ObjectId mustEqual 732
obj.Name mustEqual "respawn_tube"
}
"define (respawn_tube_tower)" in {
val obj = new SpawnTubeDefinition(733)
obj.ObjectId mustEqual 733
obj.Name mustEqual "respawn_tube_tower"
}
"define (invalid)" in {
var id : Int = (math.random * Int.MaxValue).toInt
if(id == 49 || id == 733) {
id += 1
}
else if(id == 732) {
id += 2
}
new SpawnTubeDefinition(id) must throwA[IllegalArgumentException]
}
}

View file

@ -339,7 +339,7 @@ object VehicleSpawnPadControlTest {
val pad = VehicleSpawnPad(GlobalDefinitions.mb_pad_creation)
pad.Actor = system.actorOf(Props(classOf[VehicleSpawnControl], pad), s"test-pad-${System.nanoTime()}")
pad.Owner = new Building(building_guid = 0, map_id = 0, zone, StructureType.Building)
pad.Owner = new Building(building_guid = 0, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building)
pad.Owner.Faction = faction
val player = Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute))
player.GUID = PlanetSideGUID(10)

View file

@ -243,14 +243,14 @@ class ZoneActorTest extends ActorTest {
val reply1 = receiveOne(Duration.create(200, "ms"))
assert(reply1.isInstanceOf[Zone.Lattice.SpawnPoint])
assert(reply1.asInstanceOf[Zone.Lattice.SpawnPoint].zone_id == "test")
assert(reply1.asInstanceOf[Zone.Lattice.SpawnPoint].spawn_tube.Owner == bldg1)
assert(reply1.asInstanceOf[Zone.Lattice.SpawnPoint].spawn_point.Owner == bldg1)
player.Position = Vector3(3,3,3) //closer to bldg3
zone.Actor ! Zone.Lattice.RequestSpawnPoint(1, player, 7)
val reply3 = receiveOne(Duration.create(200, "ms"))
assert(reply3.isInstanceOf[Zone.Lattice.SpawnPoint])
assert(reply3.asInstanceOf[Zone.Lattice.SpawnPoint].zone_id == "test")
assert(reply3.asInstanceOf[Zone.Lattice.SpawnPoint].spawn_tube.Owner == bldg3)
assert(reply3.asInstanceOf[Zone.Lattice.SpawnPoint].spawn_point.Owner == bldg3)
}
"will report if no spawn points have been found in a zone" in {

View file

@ -161,7 +161,7 @@ object ImplantTerminalMechTest {
val terminal = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech)
terminal.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], terminal), "mech")
terminal.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building)
terminal.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
terminal.Owner.Faction = faction
terminal.GUID = PlanetSideGUID(1)
(Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal)

View file

@ -13,7 +13,7 @@ class OrderTerminalTest extends Specification {
val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)
val player = Player(avatar)
val building = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building)
val building = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
building.Faction = PlanetSideEmpire.TR
val infantryTerminal = Terminal(GlobalDefinitions.order_terminal)
infantryTerminal.Owner = building

View file

@ -109,7 +109,7 @@ class ProximityTerminalControlStartTest extends ActorTest {
AddPool("dynamic", 1 to 10)
}
}
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility) {
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility, GlobalDefinitions.building) {
Amenities = terminal
Faction = PlanetSideEmpire.VS
}
@ -153,7 +153,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest {
AddPool("dynamic", 1 to 10)
}
}
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility) {
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility, GlobalDefinitions.building) {
Amenities = terminal
Faction = PlanetSideEmpire.VS
}
@ -205,7 +205,7 @@ class ProximityTerminalControlStopTest extends ActorTest {
AddPool("dynamic", 1 to 10)
}
}
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility) {
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility, GlobalDefinitions.building) {
Amenities = terminal
Faction = PlanetSideEmpire.VS
}
@ -256,7 +256,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest {
AddPool("dynamic", 1 to 10)
}
}
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility) {
new Building(building_guid = 0, map_id = 0, zone, StructureType.Facility, GlobalDefinitions.building) {
Amenities = terminal
Faction = PlanetSideEmpire.VS
}

View file

@ -121,7 +121,7 @@ object TerminalControlTest {
def SetUpAgents(tdef : TerminalDefinition, faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, Terminal) = {
val terminal = Terminal(tdef)
terminal.Actor = system.actorOf(Props(classOf[TerminalControl], terminal), "test-term")
terminal.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building)
terminal.Owner = new Building(building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building)
terminal.Owner.Faction = faction
(Player(Avatar("test", faction, CharacterGender.Male, 0, CharacterVoice.Mute)), terminal)
}

View file

@ -253,6 +253,33 @@ class VehicleStateTest extends ActorTest {
}
}
class TransferPassengerChannelTest extends ActorTest {
ServiceManager.boot(system)
"VehicleService" should {
"pass TransferPassengerChannel" in {
val service = system.actorOf(Props[VehicleService], "v-service")
val fury = Vehicle(GlobalDefinitions.fury)
service ! Service.Join("test")
service ! VehicleServiceMessage("test", VehicleAction.TransferPassengerChannel(PlanetSideGUID(10), "old_channel", "new_channel", fury))
expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.TransferPassengerChannel("old_channel", "new_channel", fury)))
}
}
}
class TransferPassengerTest extends ActorTest {
ServiceManager.boot(system)
"VehicleService" should {
"pass TransferPassenger" in {
val fury = Vehicle(GlobalDefinitions.fury)
val service = system.actorOf(Props[VehicleService], "v-service")
service ! Service.Join("test")
service ! VehicleServiceMessage("test", VehicleAction.TransferPassenger(PlanetSideGUID(10), "temp_channel", fury, PlanetSideGUID(11)))
expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.TransferPassenger("temp_channel", fury, PlanetSideGUID(11))))
}
}
}
object VehicleServiceTest {
//decoy
}

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,8 @@
// Copyright (c) 2017 PSForever
import akka.actor.ActorContext
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
import net.psforever.objects.serverobject.pad.process._
import net.psforever.objects.GlobalDefinitions
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.structures.WarpGate
import net.psforever.objects.zones.Zone
import net.psforever.types.PlanetSideEmpire
@ -16,67 +17,74 @@ object Zones {
override def Init(implicit context : ActorContext) : Unit = {
super.Init(context)
BuildingByMapId(5).Faction = PlanetSideEmpire.TR //Akkan
BuildingByMapId(6).Faction = PlanetSideEmpire.TR //Baal
BuildingByMapId(7).Faction = PlanetSideEmpire.TR //Dagon
BuildingByMapId(8).Faction = PlanetSideEmpire.NC //Enkidu
BuildingByMapId(9).Faction = PlanetSideEmpire.VS //Girru
BuildingByMapId(10).Faction = PlanetSideEmpire.VS //Hanish
BuildingByMapId(11).Faction = PlanetSideEmpire.VS //Irkalla
BuildingByMapId(12).Faction = PlanetSideEmpire.VS //Kusag
BuildingByMapId(13).Faction = PlanetSideEmpire.VS //Lahar
BuildingByMapId(14).Faction = PlanetSideEmpire.NC //Marduk
BuildingByMapId(15).Faction = PlanetSideEmpire.NC //Neti
BuildingByMapId(16).Faction = PlanetSideEmpire.NC //Zaqar
BuildingByMapId(17).Faction = PlanetSideEmpire.NC //S_Marduk_Tower
BuildingByMapId(18).Faction = PlanetSideEmpire.NC //W_Neti_Tower
BuildingByMapId(19).Faction = PlanetSideEmpire.NC //W_Zaqar_Tower
BuildingByMapId(20).Faction = PlanetSideEmpire.NC //E_Zaqar_Tower
BuildingByMapId(21).Faction = PlanetSideEmpire.NC //NE_Neti_Tower
BuildingByMapId(22).Faction = PlanetSideEmpire.NC //SE_Ceryshen_Warpgate_Tower
BuildingByMapId(23).Faction = PlanetSideEmpire.VS //S_Kusag_Tower
BuildingByMapId(24).Faction = PlanetSideEmpire.VS //NW_Kusag_Tower
BuildingByMapId(25).Faction = PlanetSideEmpire.VS //N_Ceryshen_Warpgate_Tower
BuildingByMapId(26).Faction = PlanetSideEmpire.VS //SE_Irkalla_Tower
BuildingByMapId(27).Faction = PlanetSideEmpire.VS //S_Irkalla_Tower
BuildingByMapId(28).Faction = PlanetSideEmpire.TR //NE_Enkidu_Tower
BuildingByMapId(29).Faction = PlanetSideEmpire.NC //SE_Akkan_Tower
BuildingByMapId(30).Faction = PlanetSideEmpire.NC //SW_Enkidu_Tower
BuildingByMapId(31).Faction = PlanetSideEmpire.TR //E_Searhus_Warpgate_Tower
BuildingByMapId(32).Faction = PlanetSideEmpire.TR //N_Searhus_Warpgate_Tower
BuildingByMapId(33).Faction = PlanetSideEmpire.VS //E_Girru_Tower
BuildingByMapId(34).Faction = PlanetSideEmpire.VS //SE_Hanish_Tower
BuildingByMapId(35).Faction = PlanetSideEmpire.TR //SW_Hanish_Tower
BuildingByMapId(36).Faction = PlanetSideEmpire.VS //W_Girru_Tower
BuildingByMapId(37).Faction = PlanetSideEmpire.TR //E_Dagon_Tower
BuildingByMapId(38).Faction = PlanetSideEmpire.TR //NE_Baal_Tower
BuildingByMapId(39).Faction = PlanetSideEmpire.TR //SE_Baal_Tower
BuildingByMapId(40).Faction = PlanetSideEmpire.TR //S_Dagon_Tower
BuildingByMapId(41).Faction = PlanetSideEmpire.NC //W_Ceryshen_Warpgate_Tower
BuildingByMapId(42).Faction = PlanetSideEmpire.NEUTRAL //dagon bunker
BuildingByMapId(43).Faction = PlanetSideEmpire.NEUTRAL //Akkan North Bunker
BuildingByMapId(44).Faction = PlanetSideEmpire.NEUTRAL //Enkidu East Bunker
BuildingByMapId(45).Faction = PlanetSideEmpire.NEUTRAL //Neti bunker
BuildingByMapId(46).Faction = PlanetSideEmpire.NEUTRAL //Hanish West Bunker
BuildingByMapId(47).Faction = PlanetSideEmpire.NEUTRAL //Irkalla East Bunker
BuildingByMapId(48).Faction = PlanetSideEmpire.NEUTRAL //Zaqar bunker
BuildingByMapId(49).Faction = PlanetSideEmpire.NEUTRAL //Kusag West Bunker
BuildingByMapId(50).Faction = PlanetSideEmpire.NEUTRAL //marduk bunker
BuildingByMapId(51).Faction = PlanetSideEmpire.TR //baal bunker
BuildingByMapId(52).Faction = PlanetSideEmpire.NEUTRAL //girru bunker
BuildingByMapId(53).Faction = PlanetSideEmpire.NEUTRAL //lahar bunker
BuildingByMapId(54).Faction = PlanetSideEmpire.NEUTRAL //akkan bunker
BuildingByMapId(55).Faction = PlanetSideEmpire.VS //Irkalla_Tower
BuildingByMapId(56).Faction = PlanetSideEmpire.VS //Hanish_Tower
BuildingByMapId(57).Faction = PlanetSideEmpire.VS //E_Ceryshen_Warpgate_Tower
BuildingByMapId(58).Faction = PlanetSideEmpire.VS //Lahar_Tower
BuildingByMapId(59).Faction = PlanetSideEmpire.VS //VSSanc_Warpgate_Tower
BuildingByMapId(60).Faction = PlanetSideEmpire.TR //Akkan_Tower
BuildingByMapId(61).Faction = PlanetSideEmpire.NC //TRSanc_Warpgate_Tower
BuildingByMapId(62).Faction = PlanetSideEmpire.NC //Marduk_Tower
BuildingByMapId(63).Faction = PlanetSideEmpire.TR //NW_Dagon_Tower
BuildingByMapId(64).Faction = PlanetSideEmpire.NEUTRAL //E7 East Bunker (at north from bridge)
BuildingByMapId(65).Faction = PlanetSideEmpire.VS //W_Hanish_Tower
Buildings.values.flatMap {
_.Amenities.collect {
case amenity if amenity.Definition == GlobalDefinitions.resource_silo =>
val silo = amenity.asInstanceOf[ResourceSilo]
silo.ChargeLevel = silo.MaximumCharge
}
}
BuildingByMapId(5).get.Faction = PlanetSideEmpire.TR //Akkan
BuildingByMapId(6).get.Faction = PlanetSideEmpire.TR //Baal
BuildingByMapId(7).get.Faction = PlanetSideEmpire.TR //Dagon
BuildingByMapId(8).get.Faction = PlanetSideEmpire.NC //Enkidu
BuildingByMapId(9).get.Faction = PlanetSideEmpire.VS //Girru
BuildingByMapId(10).get.Faction = PlanetSideEmpire.VS //Hanish
BuildingByMapId(11).get.Faction = PlanetSideEmpire.VS //Irkalla
BuildingByMapId(12).get.Faction = PlanetSideEmpire.VS //Kusag
BuildingByMapId(13).get.Faction = PlanetSideEmpire.VS //Lahar
BuildingByMapId(14).get.Faction = PlanetSideEmpire.NC //Marduk
BuildingByMapId(15).get.Faction = PlanetSideEmpire.NC //Neti
BuildingByMapId(16).get.Faction = PlanetSideEmpire.NC //Zaqar
BuildingByMapId(17).get.Faction = PlanetSideEmpire.NC //S_Marduk_Tower
BuildingByMapId(18).get.Faction = PlanetSideEmpire.NC //W_Neti_Tower
BuildingByMapId(19).get.Faction = PlanetSideEmpire.NC //W_Zaqar_Tower
BuildingByMapId(20).get.Faction = PlanetSideEmpire.NC //E_Zaqar_Tower
BuildingByMapId(21).get.Faction = PlanetSideEmpire.NC //NE_Neti_Tower
BuildingByMapId(22).get.Faction = PlanetSideEmpire.NC //SE_Ceryshen_Warpgate_Tower
BuildingByMapId(23).get.Faction = PlanetSideEmpire.VS //S_Kusag_Tower
BuildingByMapId(24).get.Faction = PlanetSideEmpire.VS //NW_Kusag_Tower
BuildingByMapId(25).get.Faction = PlanetSideEmpire.VS //N_Ceryshen_Warpgate_Tower
BuildingByMapId(26).get.Faction = PlanetSideEmpire.VS //SE_Irkalla_Tower
BuildingByMapId(27).get.Faction = PlanetSideEmpire.VS //S_Irkalla_Tower
BuildingByMapId(28).get.Faction = PlanetSideEmpire.TR //NE_Enkidu_Tower
BuildingByMapId(29).get.Faction = PlanetSideEmpire.NC //SE_Akkan_Tower
BuildingByMapId(30).get.Faction = PlanetSideEmpire.NC //SW_Enkidu_Tower
BuildingByMapId(31).get.Faction = PlanetSideEmpire.TR //E_Searhus_Warpgate_Tower
BuildingByMapId(32).get.Faction = PlanetSideEmpire.TR //N_Searhus_Warpgate_Tower
BuildingByMapId(33).get.Faction = PlanetSideEmpire.VS //E_Girru_Tower
BuildingByMapId(34).get.Faction = PlanetSideEmpire.VS //SE_Hanish_Tower
BuildingByMapId(35).get.Faction = PlanetSideEmpire.TR //SW_Hanish_Tower
BuildingByMapId(36).get.Faction = PlanetSideEmpire.VS //W_Girru_Tower
BuildingByMapId(37).get.Faction = PlanetSideEmpire.TR //E_Dagon_Tower
BuildingByMapId(38).get.Faction = PlanetSideEmpire.TR //NE_Baal_Tower
BuildingByMapId(39).get.Faction = PlanetSideEmpire.TR //SE_Baal_Tower
BuildingByMapId(40).get.Faction = PlanetSideEmpire.TR //S_Dagon_Tower
BuildingByMapId(41).get.Faction = PlanetSideEmpire.NC //W_Ceryshen_Warpgate_Tower
BuildingByMapId(42).get.Faction = PlanetSideEmpire.NEUTRAL //dagon bunker
BuildingByMapId(43).get.Faction = PlanetSideEmpire.NEUTRAL //Akkan North Bunker
BuildingByMapId(44).get.Faction = PlanetSideEmpire.NEUTRAL //Enkidu East Bunker
BuildingByMapId(45).get.Faction = PlanetSideEmpire.NEUTRAL //Neti bunker
BuildingByMapId(46).get.Faction = PlanetSideEmpire.NEUTRAL //Hanish West Bunker
BuildingByMapId(47).get.Faction = PlanetSideEmpire.NEUTRAL //Irkalla East Bunker
BuildingByMapId(48).get.Faction = PlanetSideEmpire.NEUTRAL //Zaqar bunker
BuildingByMapId(49).get.Faction = PlanetSideEmpire.NEUTRAL //Kusag West Bunker
BuildingByMapId(50).get.Faction = PlanetSideEmpire.NEUTRAL //marduk bunker
BuildingByMapId(51).get.Faction = PlanetSideEmpire.TR //baal bunker
BuildingByMapId(52).get.Faction = PlanetSideEmpire.NEUTRAL //girru bunker
BuildingByMapId(53).get.Faction = PlanetSideEmpire.NEUTRAL //lahar bunker
BuildingByMapId(54).get.Faction = PlanetSideEmpire.NEUTRAL //akkan bunker
BuildingByMapId(55).get.Faction = PlanetSideEmpire.VS //Irkalla_Tower
BuildingByMapId(56).get.Faction = PlanetSideEmpire.VS //Hanish_Tower
BuildingByMapId(57).get.Faction = PlanetSideEmpire.VS //E_Ceryshen_Warpgate_Tower
BuildingByMapId(58).get.Faction = PlanetSideEmpire.VS //Lahar_Tower
BuildingByMapId(59).get.Faction = PlanetSideEmpire.VS //VSSanc_Warpgate_Tower
BuildingByMapId(60).get.Faction = PlanetSideEmpire.TR //Akkan_Tower
BuildingByMapId(61).get.Faction = PlanetSideEmpire.NC //TRSanc_Warpgate_Tower
BuildingByMapId(62).get.Faction = PlanetSideEmpire.NC //Marduk_Tower
BuildingByMapId(63).get.Faction = PlanetSideEmpire.TR //NW_Dagon_Tower
BuildingByMapId(64).get.Faction = PlanetSideEmpire.NEUTRAL //E7 East Bunker (at north from bridge)
BuildingByMapId(65).get.Faction = PlanetSideEmpire.VS //W_Hanish_Tower
}
}
@ -86,15 +94,21 @@ object Zones {
override def Init(implicit context : ActorContext) : Unit = {
super.Init(context)
GUID(2094) match {
case Some(silo : ResourceSilo) =>
silo.ChargeLevel = silo.MaximumCharge
case _ => ;
}
import net.psforever.types.PlanetSideEmpire
// Building(2).get.Faction = PlanetSideEmpire.VS
// Building(2).get.ModelId = 20
// Building(38).get.ModelId = 0
// Building(42).get.ModelId = 0
// Building(48).get.Faction = PlanetSideEmpire.VS
// Building(48).get.ModelId = 59
// Building(49).get.Faction = PlanetSideEmpire.VS
// Building(49).get.ModelId = 69
BuildingByMapId(2).get.Faction = PlanetSideEmpire.VS
BuildingByMapId(10).get.asInstanceOf[WarpGate].Broadcast = true
BuildingByMapId(11).get.asInstanceOf[WarpGate].Broadcast = true
BuildingByMapId(12).get.asInstanceOf[WarpGate].Broadcast = true
BuildingByMapId(13).get.asInstanceOf[WarpGate].Broadcast = true
BuildingByMapId(48).get.Faction = PlanetSideEmpire.VS
BuildingByMapId(49).get.Faction = PlanetSideEmpire.VS
BuildingByMapId(18657).get.asInstanceOf[WarpGate].Active = false
BuildingByMapId(18658).get.asInstanceOf[WarpGate].Active = false
}
}
@ -130,11 +144,9 @@ object Zones {
import net.psforever.types.PlanetSideEmpire
Buildings.values.foreach { _.Faction = PlanetSideEmpire.VS }
// Building(29).get.Faction = PlanetSideEmpire.NC //South Villa Gun Tower
// GUID(293).get.asInstanceOf[VehicleSpawnPad].Railed = false //building 52
// GUID(706).get.asInstanceOf[VehicleSpawnPad].Guide = List(AutoDriveControls.DistanceFromHere(50f)) //building 77
// GUID(710).get.asInstanceOf[VehicleSpawnPad].Railed = false //building 79
// GUID(712).get.asInstanceOf[VehicleSpawnPad].Railed = false //building 81
BuildingByMapId(60).get.Faction = PlanetSideEmpire.NC //South Villa Gun Tower
BuildingByMapId(1).get.asInstanceOf[WarpGate].Broadcast = true
BuildingByMapId(3).get.asInstanceOf[WarpGate].Broadcast = true
}
}
@ -203,4 +215,32 @@ object Zones {
case PlanetSideEmpire.NEUTRAL => 0 //invalid, not black ops
}
}
/**
* Given a zone identification string, provide that zone's ordinal number.
* As zone identification naming is extremely formulaic,
* just being able to poll the zone's identifier by its first few letters will produce its ordinal position.
* @param id a zone id string
* @return a zone number
*/
def NumberFromId(id : String) : Int = {
if(id.startsWith("z")) { //z2 -> 2
id.substring(1).toInt
}
else if(id.startsWith("home")) { //home2 -> 2 + 10 = 12
id.substring(4).toInt + 10
}
else if(id.startsWith("tz")) { //tzconc -> (14 + (3 * 1) + 2) -> 19
(List("tr", "nc", "vs").indexOf(id.substring(4)) * 3) + List("sh", "dr", "co").indexOf(id.substring(2, 4)) + 14
}
else if(id.startsWith("c")) { //c2 -> 2 + 21 = 23
id.substring(1).toInt + 21
}
else if(id.startsWith("i")) { //i2 -> 2 + 28 = 30
id.substring(1).toInt + 28
}
else {
0
}
}
}

View file

@ -7,7 +7,7 @@ import net.psforever.objects.serverobject.locks.IFFLock
import net.psforever.objects.serverobject.mblocker.Locker
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType}
import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType, WarpGate}
import net.psforever.objects.serverobject.terminals.{CaptureTerminal, ProximityTerminal, Terminal}
import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.serverobject.turret.FacilityTurret
@ -2280,5 +2280,41 @@ object Map06 {
LocalObject(1469, FacilityTurret.Constructor(manned_turret, Vector3(6343.497f, 4006.957f, 56.5199f)), owning_building_guid = 73)
TurretToWeapon(1469, 5098)
}
Building10()
def Building10() : Unit = { // Name: ??? Type: ??? GUID: 76, MapID: 10
LocalBuilding(76, 10, FoundationBuilder(WarpGate.Structure(Vector3(4970.0703f, 2082.1719f, 24.421875f)))) //searhus warp gate
}
Building11()
def Building11() : Unit = { // Name: ??? Type: ??? GUID: 75, MapID: 11
LocalBuilding(75, 11, FoundationBuilder(WarpGate.Structure(Vector3(2587.7969f, 2997.1562f, 195.34375f)))) //cyssor warp gate
}
Building12()
def Building12() : Unit = { // Name: ??? Type: ??? GUID: 74, MapID: 12
LocalBuilding(74, 12, FoundationBuilder(WarpGate.Structure(Vector3(2189.5703f, 5508.164f, 38.765625f)))) //solar warp gate
}
Building13()
def Building13() : Unit = { // Name: ??? Type: ??? GUID: 77, MapID: 13
LocalBuilding(77, 13, FoundationBuilder(WarpGate.Structure(Vector3(5028.1094f, 4499.7188f, 50.09375f)))) //vs sanctuary warp gate
}
Building18657()
def Building18657() : Unit = { // Name: ??? Type: ??? GUID: 33, MapID: 18657
LocalBuilding(33, 18657, FoundationBuilder(WarpGate.Structure(Vector3.Zero, hst))) //geowarp near Tarqaq
}
Building18658()
def Building18658() : Unit = { // Name: ??? Type: ??? GUID: 34, MapID: 18658
LocalBuilding(34, 18658, FoundationBuilder(WarpGate.Structure(Vector3.Zero, hst))) //geowarp near Igaluk
}
}
}

View file

@ -817,12 +817,12 @@ object Map11 {
LocalObject(852, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(853, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(854, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(774, SpawnTube.Constructor(Vector3(2162.234f, 5444.899f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(775, SpawnTube.Constructor(Vector3(2162.317f, 5449.653f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(776, SpawnTube.Constructor(Vector3(2168.941f, 5444.781f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(777, SpawnTube.Constructor(Vector3(2169.023f, 5449.536f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(778, SpawnTube.Constructor(Vector3(2175.648f, 5444.665f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(779, SpawnTube.Constructor(Vector3(2175.731f, 5449.419f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(774, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2162.234f, 5444.899f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(775, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2162.317f, 5449.653f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(776, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2168.941f, 5444.781f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(777, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2169.023f, 5449.536f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(778, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2175.648f, 5444.665f, 67.2449f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(779, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2175.731f, 5449.419f, 67.2449f), Vector3(0, 0, 1)), owning_building_guid = 41)
}
Building35()
@ -849,12 +849,12 @@ object Map11 {
LocalObject(878, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(879, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(880, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(780, SpawnTube.Constructor(Vector3(2355.215f, 5438.748f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(781, SpawnTube.Constructor(Vector3(2358.517f, 5435.328f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
LocalObject(782, SpawnTube.Constructor(Vector3(2360.04f, 5443.408f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(783, SpawnTube.Constructor(Vector3(2363.344f, 5439.987f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
LocalObject(784, SpawnTube.Constructor(Vector3(2364.866f, 5448.068f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(785, SpawnTube.Constructor(Vector3(2368.168f, 5444.648f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
LocalObject(780, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2355.215f, 5438.748f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(781, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2358.517f, 5435.328f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
LocalObject(782, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2360.04f, 5443.408f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(783, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2363.344f, 5439.987f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
LocalObject(784, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2364.866f, 5448.068f, 66.71281f), Vector3(0, 0, 316)), owning_building_guid = 42)
LocalObject(785, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2368.168f, 5444.648f, 66.71281f), Vector3(0, 0, 136)), owning_building_guid = 42)
}
Building36()
@ -881,12 +881,12 @@ object Map11 {
LocalObject(884, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(885, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(886, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(786, SpawnTube.Constructor(Vector3(2394.346f, 5547.723f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(787, SpawnTube.Constructor(Vector3(2394.463f, 5541.015f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(788, SpawnTube.Constructor(Vector3(2394.58f, 5534.308f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(789, SpawnTube.Constructor(Vector3(2399.1f, 5547.806f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
LocalObject(790, SpawnTube.Constructor(Vector3(2399.218f, 5541.099f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
LocalObject(791, SpawnTube.Constructor(Vector3(2399.334f, 5534.391f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
LocalObject(786, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2394.346f, 5547.723f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(787, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2394.463f, 5541.015f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(788, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2394.58f, 5534.308f, 67.23998f), Vector3(0, 0, 269)), owning_building_guid = 43)
LocalObject(789, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2399.1f, 5547.806f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
LocalObject(790, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2399.218f, 5541.099f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
LocalObject(791, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2399.334f, 5534.391f, 67.23998f), Vector3(0, 0, 89)), owning_building_guid = 43)
}
Building53()
@ -913,12 +913,12 @@ object Map11 {
LocalObject(902, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(903, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(904, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(792, SpawnTube.Constructor(Vector3(3990.234f, 5976.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(793, SpawnTube.Constructor(Vector3(3990.317f, 5981.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
LocalObject(794, SpawnTube.Constructor(Vector3(3996.941f, 5976.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(795, SpawnTube.Constructor(Vector3(3997.023f, 5981.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
LocalObject(796, SpawnTube.Constructor(Vector3(4003.648f, 5976.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(797, SpawnTube.Constructor(Vector3(4003.731f, 5981.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
LocalObject(792, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3990.234f, 5976.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(793, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3990.317f, 5981.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
LocalObject(794, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3996.941f, 5976.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(795, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3997.023f, 5981.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
LocalObject(796, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4003.648f, 5976.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 44)
LocalObject(797, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4003.731f, 5981.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 44)
}
Building18()
@ -945,12 +945,12 @@ object Map11 {
LocalObject(918, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(919, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(920, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(798, SpawnTube.Constructor(Vector3(4142.234f, 5944.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(799, SpawnTube.Constructor(Vector3(4142.317f, 5949.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
LocalObject(800, SpawnTube.Constructor(Vector3(4148.941f, 5944.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(801, SpawnTube.Constructor(Vector3(4149.023f, 5949.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
LocalObject(802, SpawnTube.Constructor(Vector3(4155.648f, 5944.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(803, SpawnTube.Constructor(Vector3(4155.731f, 5949.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
LocalObject(798, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4142.234f, 5944.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(799, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4142.317f, 5949.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
LocalObject(800, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4148.941f, 5944.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(801, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4149.023f, 5949.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
LocalObject(802, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4155.648f, 5944.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 45)
LocalObject(803, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4155.731f, 5949.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 45)
}
Building52()
@ -977,12 +977,12 @@ object Map11 {
LocalObject(943, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(944, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(945, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(804, SpawnTube.Constructor(Vector3(4296.234f, 5970.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(805, SpawnTube.Constructor(Vector3(4296.317f, 5975.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
LocalObject(806, SpawnTube.Constructor(Vector3(4302.941f, 5970.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(807, SpawnTube.Constructor(Vector3(4303.023f, 5975.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
LocalObject(808, SpawnTube.Constructor(Vector3(4309.648f, 5970.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(809, SpawnTube.Constructor(Vector3(4309.731f, 5975.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
LocalObject(804, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4296.234f, 5970.899f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(805, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4296.317f, 5975.653f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
LocalObject(806, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4302.941f, 5970.781f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(807, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4303.023f, 5975.536f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
LocalObject(808, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4309.648f, 5970.665f, 45.90862f), Vector3(0, 0, 181)), owning_building_guid = 46)
LocalObject(809, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4309.731f, 5975.419f, 45.90862f), Vector3(0, 0, 1)), owning_building_guid = 46)
}
Building5()
@ -1009,12 +1009,12 @@ object Map11 {
LocalObject(952, Terminal.Constructor(order_terminal), owning_building_guid = 47)
LocalObject(953, Terminal.Constructor(order_terminal), owning_building_guid = 47)
LocalObject(954, Terminal.Constructor(order_terminal), owning_building_guid = 47)
LocalObject(810, SpawnTube.Constructor(Vector3(4696.047f, 3402.895f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(811, SpawnTube.Constructor(Vector3(4699.524f, 3406.137f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
LocalObject(812, SpawnTube.Constructor(Vector3(4700.622f, 3397.988f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(813, SpawnTube.Constructor(Vector3(4704.099f, 3401.232f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
LocalObject(814, SpawnTube.Constructor(Vector3(4705.197f, 3393.082f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(815, SpawnTube.Constructor(Vector3(4708.674f, 3396.325f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
LocalObject(810, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4696.047f, 3402.895f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(811, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4699.524f, 3406.137f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
LocalObject(812, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4700.622f, 3397.988f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(813, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4704.099f, 3401.232f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
LocalObject(814, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4705.197f, 3393.082f, 70.77006f), Vector3(0, 0, 227)), owning_building_guid = 47)
LocalObject(815, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4708.674f, 3396.325f, 70.77006f), Vector3(0, 0, 47)), owning_building_guid = 47)
}
Building7()
@ -1041,12 +1041,12 @@ object Map11 {
LocalObject(958, Terminal.Constructor(order_terminal), owning_building_guid = 48)
LocalObject(959, Terminal.Constructor(order_terminal), owning_building_guid = 48)
LocalObject(960, Terminal.Constructor(order_terminal), owning_building_guid = 48)
LocalObject(816, SpawnTube.Constructor(Vector3(4724.571f, 3593.914f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(817, SpawnTube.Constructor(Vector3(4727.933f, 3590.552f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
LocalObject(818, SpawnTube.Constructor(Vector3(4729.314f, 3598.658f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(819, SpawnTube.Constructor(Vector3(4732.677f, 3595.296f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
LocalObject(820, SpawnTube.Constructor(Vector3(4734.058f, 3603.401f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(821, SpawnTube.Constructor(Vector3(4737.42f, 3600.039f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
LocalObject(816, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4724.571f, 3593.914f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(817, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4727.933f, 3590.552f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
LocalObject(818, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4729.314f, 3598.658f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(819, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4732.677f, 3595.296f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
LocalObject(820, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4734.058f, 3603.401f, 70.77006f), Vector3(0, 0, 315)), owning_building_guid = 48)
LocalObject(821, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4737.42f, 3600.039f, 70.77006f), Vector3(0, 0, 135)), owning_building_guid = 48)
}
Building6()
@ -1073,12 +1073,12 @@ object Map11 {
LocalObject(987, Terminal.Constructor(order_terminal), owning_building_guid = 49)
LocalObject(988, Terminal.Constructor(order_terminal), owning_building_guid = 49)
LocalObject(989, Terminal.Constructor(order_terminal), owning_building_guid = 49)
LocalObject(822, SpawnTube.Constructor(Vector3(4919.932f, 3622.866f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(823, SpawnTube.Constructor(Vector3(4923.352f, 3626.168f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
LocalObject(824, SpawnTube.Constructor(Vector3(4924.592f, 3618.04f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(825, SpawnTube.Constructor(Vector3(4928.013f, 3621.344f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
LocalObject(826, SpawnTube.Constructor(Vector3(4929.252f, 3613.215f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(827, SpawnTube.Constructor(Vector3(4932.672f, 3616.517f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
LocalObject(822, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4919.932f, 3622.866f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(823, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4923.352f, 3626.168f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
LocalObject(824, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4924.592f, 3618.04f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(825, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4928.013f, 3621.344f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
LocalObject(826, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4929.252f, 3613.215f, 70.77006f), Vector3(0, 0, 226)), owning_building_guid = 49)
LocalObject(827, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(4932.672f, 3616.517f, 70.77006f), Vector3(0, 0, 46)), owning_building_guid = 49)
}
Building34()

View file

@ -715,12 +715,12 @@ object Map12 {
LocalObject(817, Terminal.Constructor(order_terminal), owning_building_guid = 62)
LocalObject(818, Terminal.Constructor(order_terminal), owning_building_guid = 62)
LocalObject(819, Terminal.Constructor(order_terminal), owning_building_guid = 62)
LocalObject(742, SpawnTube.Constructor(Vector3(2760.571f, 5245.914f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(743, SpawnTube.Constructor(Vector3(2763.933f, 5242.552f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
LocalObject(744, SpawnTube.Constructor(Vector3(2765.314f, 5250.658f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(745, SpawnTube.Constructor(Vector3(2768.677f, 5247.296f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
LocalObject(746, SpawnTube.Constructor(Vector3(2770.058f, 5255.401f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(747, SpawnTube.Constructor(Vector3(2773.42f, 5252.039f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
LocalObject(742, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2760.571f, 5245.914f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(743, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2763.933f, 5242.552f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
LocalObject(744, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2765.314f, 5250.658f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(745, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2768.677f, 5247.296f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
LocalObject(746, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2770.058f, 5255.401f, 38.03099f), Vector3(0, 0, 315)), owning_building_guid = 62)
LocalObject(747, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2773.42f, 5252.039f, 38.03099f), Vector3(0, 0, 135)), owning_building_guid = 62)
}
Building43()
@ -747,12 +747,12 @@ object Map12 {
LocalObject(833, Terminal.Constructor(order_terminal), owning_building_guid = 63)
LocalObject(834, Terminal.Constructor(order_terminal), owning_building_guid = 63)
LocalObject(835, Terminal.Constructor(order_terminal), owning_building_guid = 63)
LocalObject(748, SpawnTube.Constructor(Vector3(2850.79f, 3037.98f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(749, SpawnTube.Constructor(Vector3(2850.791f, 3031.272f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(750, SpawnTube.Constructor(Vector3(2850.791f, 3044.688f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(751, SpawnTube.Constructor(Vector3(2855.545f, 3031.272f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
LocalObject(752, SpawnTube.Constructor(Vector3(2855.545f, 3037.981f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
LocalObject(753, SpawnTube.Constructor(Vector3(2855.545f, 3044.688f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
LocalObject(748, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2850.79f, 3037.98f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(749, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2850.791f, 3031.272f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(750, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2850.791f, 3044.688f, 36.95669f), Vector3(0, 0, 270)), owning_building_guid = 63)
LocalObject(751, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2855.545f, 3031.272f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
LocalObject(752, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2855.545f, 3037.981f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
LocalObject(753, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2855.545f, 3044.688f, 36.95669f), Vector3(0, 0, 90)), owning_building_guid = 63)
}
Building13()
@ -779,12 +779,12 @@ object Map12 {
LocalObject(845, Terminal.Constructor(order_terminal), owning_building_guid = 64)
LocalObject(846, Terminal.Constructor(order_terminal), owning_building_guid = 64)
LocalObject(847, Terminal.Constructor(order_terminal), owning_building_guid = 64)
LocalObject(754, SpawnTube.Constructor(Vector3(2913.312f, 5104.791f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(755, SpawnTube.Constructor(Vector3(2913.312f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
LocalObject(756, SpawnTube.Constructor(Vector3(2920.019f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
LocalObject(757, SpawnTube.Constructor(Vector3(2920.02f, 5104.79f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(758, SpawnTube.Constructor(Vector3(2926.728f, 5104.791f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(759, SpawnTube.Constructor(Vector3(2926.728f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
LocalObject(754, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2913.312f, 5104.791f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(755, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2913.312f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
LocalObject(756, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2920.019f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
LocalObject(757, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2920.02f, 5104.79f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(758, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2926.728f, 5104.791f, 38.03099f), Vector3(0, 0, 180)), owning_building_guid = 64)
LocalObject(759, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2926.728f, 5109.545f, 38.03099f), Vector3(0, 0, 0)), owning_building_guid = 64)
}
Building15()
@ -811,12 +811,12 @@ object Map12 {
LocalObject(877, Terminal.Constructor(order_terminal), owning_building_guid = 65)
LocalObject(880, Terminal.Constructor(order_terminal), owning_building_guid = 65)
LocalObject(881, Terminal.Constructor(order_terminal), owning_building_guid = 65)
LocalObject(760, SpawnTube.Constructor(Vector3(3066.552f, 5250.067f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(761, SpawnTube.Constructor(Vector3(3069.914f, 5253.429f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
LocalObject(762, SpawnTube.Constructor(Vector3(3071.296f, 5245.323f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(763, SpawnTube.Constructor(Vector3(3074.658f, 5248.686f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
LocalObject(764, SpawnTube.Constructor(Vector3(3076.039f, 5240.58f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(765, SpawnTube.Constructor(Vector3(3079.401f, 5243.942f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
LocalObject(760, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3066.552f, 5250.067f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(761, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3069.914f, 5253.429f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
LocalObject(762, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3071.296f, 5245.323f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(763, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3074.658f, 5248.686f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
LocalObject(764, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3076.039f, 5240.58f, 38.03099f), Vector3(0, 0, 225)), owning_building_guid = 65)
LocalObject(765, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3079.401f, 5243.942f, 38.03099f), Vector3(0, 0, 45)), owning_building_guid = 65)
}
Building42()
@ -843,12 +843,12 @@ object Map12 {
LocalObject(893, Terminal.Constructor(order_terminal), owning_building_guid = 66)
LocalObject(894, Terminal.Constructor(order_terminal), owning_building_guid = 66)
LocalObject(895, Terminal.Constructor(order_terminal), owning_building_guid = 66)
LocalObject(772, SpawnTube.Constructor(Vector3(3157.272f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(773, SpawnTube.Constructor(Vector3(3157.272f, 3049.209f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
LocalObject(774, SpawnTube.Constructor(Vector3(3163.98f, 3049.21f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
LocalObject(775, SpawnTube.Constructor(Vector3(3163.981f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(776, SpawnTube.Constructor(Vector3(3170.688f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(777, SpawnTube.Constructor(Vector3(3170.688f, 3049.209f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
LocalObject(772, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3157.272f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(773, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3157.272f, 3049.209f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
LocalObject(774, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3163.98f, 3049.21f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
LocalObject(775, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3163.981f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(776, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3170.688f, 3044.455f, 36.9544f), Vector3(0, 0, 180)), owning_building_guid = 66)
LocalObject(777, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3170.688f, 3049.209f, 36.9544f), Vector3(0, 0, 0)), owning_building_guid = 66)
}
Building41()
@ -875,12 +875,12 @@ object Map12 {
LocalObject(887, Terminal.Constructor(order_terminal), owning_building_guid = 67)
LocalObject(888, Terminal.Constructor(order_terminal), owning_building_guid = 67)
LocalObject(889, Terminal.Constructor(order_terminal), owning_building_guid = 67)
LocalObject(766, SpawnTube.Constructor(Vector3(3138.455f, 2875.312f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(767, SpawnTube.Constructor(Vector3(3138.455f, 2882.019f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(768, SpawnTube.Constructor(Vector3(3138.455f, 2888.728f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(769, SpawnTube.Constructor(Vector3(3143.209f, 2875.312f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
LocalObject(770, SpawnTube.Constructor(Vector3(3143.209f, 2888.728f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
LocalObject(771, SpawnTube.Constructor(Vector3(3143.21f, 2882.02f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
LocalObject(766, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3138.455f, 2875.312f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(767, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3138.455f, 2882.019f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(768, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3138.455f, 2888.728f, 36.95451f), Vector3(0, 0, 270)), owning_building_guid = 67)
LocalObject(769, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3143.209f, 2875.312f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
LocalObject(770, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3143.209f, 2888.728f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
LocalObject(771, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3143.21f, 2882.02f, 36.95451f), Vector3(0, 0, 90)), owning_building_guid = 67)
}
Building25()
@ -907,12 +907,12 @@ object Map12 {
LocalObject(917, Terminal.Constructor(order_terminal), owning_building_guid = 68)
LocalObject(918, Terminal.Constructor(order_terminal), owning_building_guid = 68)
LocalObject(919, Terminal.Constructor(order_terminal), owning_building_guid = 68)
LocalObject(778, SpawnTube.Constructor(Vector3(5078.79f, 3907.98f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(779, SpawnTube.Constructor(Vector3(5078.791f, 3901.272f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(780, SpawnTube.Constructor(Vector3(5078.791f, 3914.688f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(781, SpawnTube.Constructor(Vector3(5083.545f, 3901.272f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
LocalObject(782, SpawnTube.Constructor(Vector3(5083.545f, 3907.981f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
LocalObject(783, SpawnTube.Constructor(Vector3(5083.545f, 3914.688f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
LocalObject(778, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5078.79f, 3907.98f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(779, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5078.791f, 3901.272f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(780, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5078.791f, 3914.688f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 68)
LocalObject(781, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5083.545f, 3901.272f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
LocalObject(782, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5083.545f, 3907.981f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
LocalObject(783, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5083.545f, 3914.688f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 68)
}
Building23()
@ -939,12 +939,12 @@ object Map12 {
LocalObject(933, Terminal.Constructor(order_terminal), owning_building_guid = 69)
LocalObject(934, Terminal.Constructor(order_terminal), owning_building_guid = 69)
LocalObject(935, Terminal.Constructor(order_terminal), owning_building_guid = 69)
LocalObject(784, SpawnTube.Constructor(Vector3(5223.312f, 3784.791f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(785, SpawnTube.Constructor(Vector3(5223.312f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
LocalObject(786, SpawnTube.Constructor(Vector3(5230.019f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
LocalObject(787, SpawnTube.Constructor(Vector3(5230.02f, 3784.79f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(788, SpawnTube.Constructor(Vector3(5236.728f, 3784.791f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(789, SpawnTube.Constructor(Vector3(5236.728f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
LocalObject(784, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5223.312f, 3784.791f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(785, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5223.312f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
LocalObject(786, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5230.019f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
LocalObject(787, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5230.02f, 3784.79f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(788, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5236.728f, 3784.791f, 37.96111f), Vector3(0, 0, 180)), owning_building_guid = 69)
LocalObject(789, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5236.728f, 3789.545f, 37.96111f), Vector3(0, 0, 0)), owning_building_guid = 69)
}
Building24()
@ -971,12 +971,12 @@ object Map12 {
LocalObject(949, Terminal.Constructor(order_terminal), owning_building_guid = 70)
LocalObject(950, Terminal.Constructor(order_terminal), owning_building_guid = 70)
LocalObject(951, Terminal.Constructor(order_terminal), owning_building_guid = 70)
LocalObject(790, SpawnTube.Constructor(Vector3(5382.455f, 3899.312f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(791, SpawnTube.Constructor(Vector3(5382.455f, 3906.019f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(792, SpawnTube.Constructor(Vector3(5382.455f, 3912.728f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(793, SpawnTube.Constructor(Vector3(5387.209f, 3899.312f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
LocalObject(794, SpawnTube.Constructor(Vector3(5387.209f, 3912.728f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
LocalObject(795, SpawnTube.Constructor(Vector3(5387.21f, 3906.02f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
LocalObject(790, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5382.455f, 3899.312f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(791, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5382.455f, 3906.019f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(792, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5382.455f, 3912.728f, 37.96111f), Vector3(0, 0, 270)), owning_building_guid = 70)
LocalObject(793, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5387.209f, 3899.312f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
LocalObject(794, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5387.209f, 3912.728f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
LocalObject(795, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5387.21f, 3906.02f, 37.96111f), Vector3(0, 0, 90)), owning_building_guid = 70)
}
Building8()

View file

@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.implantmech.ImplantTerminalMech
import net.psforever.objects.serverobject.locks.IFFLock
import net.psforever.objects.serverobject.mblocker.Locker
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType}
import net.psforever.objects.serverobject.structures.{Building, FoundationBuilder, StructureType, WarpGate}
import net.psforever.objects.serverobject.terminals.{CaptureTerminal, ProximityTerminal, Terminal}
import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.serverobject.turret.FacilityTurret
@ -16,10 +16,9 @@ import net.psforever.types.Vector3
object Map13 {
// HOME3 (VANU SOVREIGNTY SANCTUARY)
val ZoneMap = new ZoneMap("map13") {
Building22()
def Building22(): Unit = { // Name: Hart_Ishundar Type: orbital_building_vs GUID: 1, MapID: 22
def Building22() : Unit = { // Name: Hart_Ishundar Type: orbital_building_vs GUID: 1, MapID: 22
LocalBuilding(1, 22, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2978f, 4834f, 56.08539f))))
LocalObject(360, Door.Constructor(Vector3(2898f, 4821.99f, 60.19139f)), owning_building_guid = 1)
LocalObject(361, Door.Constructor(Vector3(2898f, 4845.99f, 60.19139f)), owning_building_guid = 1)
@ -125,7 +124,7 @@ object Map13 {
Building4()
def Building4(): Unit = { // Name: Hart_Esamir Type: orbital_building_vs GUID: 2, MapID: 4
def Building4() : Unit = { // Name: Hart_Esamir Type: orbital_building_vs GUID: 2, MapID: 4
LocalBuilding(2, 4, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3688f, 2808f, 90.85312f))))
LocalObject(370, Door.Constructor(Vector3(3608f, 2795.99f, 94.95912f)), owning_building_guid = 2)
LocalObject(371, Door.Constructor(Vector3(3608f, 2819.99f, 94.95912f)), owning_building_guid = 2)
@ -231,7 +230,7 @@ object Map13 {
Building40()
def Building40(): Unit = { // Name: Hart_Hossin Type: orbital_building_vs GUID: 3, MapID: 40
def Building40() : Unit = { // Name: Hart_Hossin Type: orbital_building_vs GUID: 3, MapID: 40
LocalBuilding(3, 40, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5610f, 4238f, 103.2289f))))
LocalObject(382, Door.Constructor(Vector3(5530f, 4225.99f, 107.3349f)), owning_building_guid = 3)
LocalObject(383, Door.Constructor(Vector3(5530f, 4249.99f, 107.3349f)), owning_building_guid = 3)
@ -337,7 +336,7 @@ object Map13 {
Building58()
def Building58(): Unit = { // Name: S_Ishundar_WG_tower Type: tower_a GUID: 28, MapID: 58
def Building58() : Unit = { // Name: S_Ishundar_WG_tower Type: tower_a GUID: 28, MapID: 58
LocalBuilding(28, 58, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2708f, 5084f, 56.14882f))))
LocalObject(1015, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 28)
LocalObject(312, Door.Constructor(Vector3(2720f, 5076f, 57.66982f)), owning_building_guid = 28)
@ -371,7 +370,7 @@ object Map13 {
Building63()
def Building63(): Unit = { // Name: Esamir_WG_tower Type: tower_a GUID: 29, MapID: 63
def Building63() : Unit = { // Name: Esamir_WG_tower Type: tower_a GUID: 29, MapID: 63
LocalBuilding(29, 63, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3968f, 2600f, 90.86123f))))
LocalObject(1019, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 29)
LocalObject(330, Door.Constructor(Vector3(3980f, 2592f, 92.38223f)), owning_building_guid = 29)
@ -405,7 +404,7 @@ object Map13 {
Building66()
def Building66(): Unit = { // Name: SE_Hossin_WG_tower Type: tower_a GUID: 30, MapID: 66
def Building66() : Unit = { // Name: SE_Hossin_WG_tower Type: tower_a GUID: 30, MapID: 66
LocalBuilding(30, 66, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6006f, 4414f, 97.87095f))))
LocalObject(1024, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 30)
LocalObject(354, Door.Constructor(Vector3(6018f, 4406f, 99.39195f)), owning_building_guid = 30)
@ -439,7 +438,7 @@ object Map13 {
Building60()
def Building60(): Unit = { // Name: NW_Esamir_WG_tower Type: tower_b GUID: 31, MapID: 60
def Building60() : Unit = { // Name: NW_Esamir_WG_tower Type: tower_b GUID: 31, MapID: 60
LocalBuilding(31, 60, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3208f, 3524f, 92.25745f))))
LocalObject(1016, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 31)
LocalObject(316, Door.Constructor(Vector3(3220f, 3516f, 93.77745f)), owning_building_guid = 31)
@ -473,7 +472,7 @@ object Map13 {
Building64()
def Building64(): Unit = { // Name: W_Hossin_WG_tower Type: tower_b GUID: 32, MapID: 64
def Building64() : Unit = { // Name: W_Hossin_WG_tower Type: tower_b GUID: 32, MapID: 64
LocalBuilding(32, 64, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3988f, 4380f, 87.9162f))))
LocalObject(1020, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 32)
LocalObject(334, Door.Constructor(Vector3(4000f, 4372f, 89.4362f)), owning_building_guid = 32)
@ -507,7 +506,7 @@ object Map13 {
Building67()
def Building67(): Unit = { // Name: NE_Esamir_WG_tower Type: tower_b GUID: 33, MapID: 67
def Building67() : Unit = { // Name: NE_Esamir_WG_tower Type: tower_b GUID: 33, MapID: 67
LocalBuilding(33, 67, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5098f, 2978f, 97.9873f))))
LocalObject(1022, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 33)
LocalObject(344, Door.Constructor(Vector3(5110f, 2970f, 99.5073f)), owning_building_guid = 33)
@ -541,7 +540,7 @@ object Map13 {
Building59()
def Building59(): Unit = { // Name: SE_Ishundar_WG_tower Type: tower_c GUID: 34, MapID: 59
def Building59() : Unit = { // Name: SE_Ishundar_WG_tower Type: tower_c GUID: 34, MapID: 59
LocalBuilding(34, 59, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3224f, 4594f, 56.08539f))))
LocalObject(1017, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 34)
LocalObject(322, Door.Constructor(Vector3(3236f, 4586f, 57.60639f)), owning_building_guid = 34)
@ -579,7 +578,7 @@ object Map13 {
Building62()
def Building62(): Unit = { // Name: N_Esamir_WG_tower Type: tower_c GUID: 35, MapID: 62
def Building62() : Unit = { // Name: N_Esamir_WG_tower Type: tower_c GUID: 35, MapID: 62
LocalBuilding(35, 62, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3670f, 3180f, 89.51079f))))
LocalObject(1018, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 35)
LocalObject(326, Door.Constructor(Vector3(3682f, 3172f, 91.03179f)), owning_building_guid = 35)
@ -617,7 +616,7 @@ object Map13 {
Building61()
def Building61(): Unit = { // Name: Continent_Central_tower Type: tower_c GUID: 36, MapID: 61
def Building61() : Unit = { // Name: Continent_Central_tower Type: tower_c GUID: 36, MapID: 61
LocalBuilding(36, 61, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4410f, 3728f, 83.92174f))))
LocalObject(1021, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 36)
LocalObject(340, Door.Constructor(Vector3(4422f, 3720f, 85.44274f)), owning_building_guid = 36)
@ -655,7 +654,7 @@ object Map13 {
Building65()
def Building65(): Unit = { // Name: SW_Hossin_WG_tower Type: tower_c GUID: 37, MapID: 65
def Building65() : Unit = { // Name: SW_Hossin_WG_tower Type: tower_c GUID: 37, MapID: 65
LocalBuilding(37, 65, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5160f, 4266f, 93.25694f))))
LocalObject(1023, CaptureTerminal.Constructor(secondary_capture), owning_building_guid = 37)
LocalObject(350, Door.Constructor(Vector3(5172f, 4258f, 94.77794f)), owning_building_guid = 37)
@ -693,7 +692,7 @@ object Map13 {
Building33()
def Building33(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 38, MapID: 33
def Building33() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 38, MapID: 33
LocalBuilding(38, 33, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2848f, 4948f, 56.08539f))))
LocalObject(234, Door.Constructor(Vector3(2801.93f, 4911.454f, 58.16139f)), owning_building_guid = 38)
LocalObject(235, Door.Constructor(Vector3(2806.54f, 4916.042f, 58.16139f)), owning_building_guid = 38)
@ -715,17 +714,17 @@ object Map13 {
LocalObject(795, Terminal.Constructor(order_terminal), owning_building_guid = 38)
LocalObject(796, Terminal.Constructor(order_terminal), owning_building_guid = 38)
LocalObject(797, Terminal.Constructor(order_terminal), owning_building_guid = 38)
LocalObject(720, SpawnTube.Constructor(Vector3(2802.552f, 4912.067f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(721, SpawnTube.Constructor(Vector3(2805.914f, 4915.429f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
LocalObject(722, SpawnTube.Constructor(Vector3(2807.296f, 4907.323f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(723, SpawnTube.Constructor(Vector3(2810.658f, 4910.686f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
LocalObject(724, SpawnTube.Constructor(Vector3(2812.039f, 4902.58f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(725, SpawnTube.Constructor(Vector3(2815.401f, 4905.942f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
LocalObject(720, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2802.552f, 4912.067f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(721, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2805.914f, 4915.429f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
LocalObject(722, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2807.296f, 4907.323f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(723, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2810.658f, 4910.686f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
LocalObject(724, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2812.039f, 4902.58f, 58.11739f), Vector3(0, 0, 225)), owning_building_guid = 38)
LocalObject(725, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(2815.401f, 4905.942f, 58.11739f), Vector3(0, 0, 45)), owning_building_guid = 38)
}
Building35()
def Building35(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 39, MapID: 35
def Building35() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 39, MapID: 35
LocalBuilding(39, 35, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3122f, 4690f, 56.08539f))))
LocalObject(240, Door.Constructor(Vector3(3075.97f, 4726.587f, 58.16139f)), owning_building_guid = 39)
LocalObject(241, Door.Constructor(Vector3(3080.558f, 4721.976f, 58.16139f)), owning_building_guid = 39)
@ -747,17 +746,17 @@ object Map13 {
LocalObject(821, Terminal.Constructor(order_terminal), owning_building_guid = 39)
LocalObject(822, Terminal.Constructor(order_terminal), owning_building_guid = 39)
LocalObject(823, Terminal.Constructor(order_terminal), owning_building_guid = 39)
LocalObject(726, SpawnTube.Constructor(Vector3(3076.58f, 4725.961f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(727, SpawnTube.Constructor(Vector3(3079.942f, 4722.599f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
LocalObject(728, SpawnTube.Constructor(Vector3(3081.323f, 4730.704f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(729, SpawnTube.Constructor(Vector3(3084.686f, 4727.342f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
LocalObject(730, SpawnTube.Constructor(Vector3(3086.067f, 4735.448f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(731, SpawnTube.Constructor(Vector3(3089.429f, 4732.086f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
LocalObject(726, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3076.58f, 4725.961f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(727, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3079.942f, 4722.599f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
LocalObject(728, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3081.323f, 4730.704f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(729, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3084.686f, 4727.342f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
LocalObject(730, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3086.067f, 4735.448f, 58.11739f), Vector3(0, 0, 315)), owning_building_guid = 39)
LocalObject(731, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3089.429f, 4732.086f, 58.11739f), Vector3(0, 0, 135)), owning_building_guid = 39)
}
Building34()
def Building34(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 40, MapID: 34
def Building34() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 40, MapID: 34
LocalBuilding(40, 34, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3144f, 4930f, 56.08539f))))
LocalObject(246, Door.Constructor(Vector3(3137.266f, 4871.582f, 58.16139f)), owning_building_guid = 40)
LocalObject(247, Door.Constructor(Vector3(3137.281f, 4878.085f, 58.16139f)), owning_building_guid = 40)
@ -779,17 +778,17 @@ object Map13 {
LocalObject(827, Terminal.Constructor(order_terminal), owning_building_guid = 40)
LocalObject(828, Terminal.Constructor(order_terminal), owning_building_guid = 40)
LocalObject(829, Terminal.Constructor(order_terminal), owning_building_guid = 40)
LocalObject(732, SpawnTube.Constructor(Vector3(3137.272f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(733, SpawnTube.Constructor(Vector3(3137.272f, 4877.209f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
LocalObject(734, SpawnTube.Constructor(Vector3(3143.98f, 4877.21f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
LocalObject(735, SpawnTube.Constructor(Vector3(3143.981f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(736, SpawnTube.Constructor(Vector3(3150.688f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(737, SpawnTube.Constructor(Vector3(3150.688f, 4877.209f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
LocalObject(732, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3137.272f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(733, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3137.272f, 4877.209f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
LocalObject(734, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3143.98f, 4877.21f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
LocalObject(735, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3143.981f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(736, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3150.688f, 4872.455f, 58.11739f), Vector3(0, 0, 180)), owning_building_guid = 40)
LocalObject(737, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3150.688f, 4877.209f, 58.11739f), Vector3(0, 0, 0)), owning_building_guid = 40)
}
Building7()
def Building7(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 41, MapID: 7
def Building7() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 41, MapID: 7
LocalBuilding(41, 7, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3592f, 2966f, 90.8536f))))
LocalObject(252, Door.Constructor(Vector3(3584.247f, 2907.708f, 92.9296f)), owning_building_guid = 41)
LocalObject(253, Door.Constructor(Vector3(3584.376f, 2914.211f, 92.9296f)), owning_building_guid = 41)
@ -811,17 +810,17 @@ object Map13 {
LocalObject(839, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(840, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(841, Terminal.Constructor(order_terminal), owning_building_guid = 41)
LocalObject(738, SpawnTube.Constructor(Vector3(3584.269f, 2908.581f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(739, SpawnTube.Constructor(Vector3(3584.352f, 2913.335f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(740, SpawnTube.Constructor(Vector3(3590.977f, 2908.464f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(741, SpawnTube.Constructor(Vector3(3591.059f, 2913.219f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(742, SpawnTube.Constructor(Vector3(3597.683f, 2908.347f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(743, SpawnTube.Constructor(Vector3(3597.766f, 2913.101f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(738, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3584.269f, 2908.581f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(739, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3584.352f, 2913.335f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(740, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3590.977f, 2908.464f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(741, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3591.059f, 2913.219f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
LocalObject(742, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3597.683f, 2908.347f, 92.8856f), Vector3(0, 0, 181)), owning_building_guid = 41)
LocalObject(743, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3597.766f, 2913.101f, 92.8856f), Vector3(0, 0, 1)), owning_building_guid = 41)
}
Building12()
def Building12(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 42, MapID: 12
def Building12() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 42, MapID: 12
LocalBuilding(42, 12, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3690f, 2656f, 90.84919f))))
LocalObject(258, Door.Constructor(Vector3(3684.214f, 2708.023f, 92.92519f)), owning_building_guid = 42)
LocalObject(259, Door.Constructor(Vector3(3684.343f, 2714.527f, 92.92519f)), owning_building_guid = 42)
@ -843,17 +842,17 @@ object Map13 {
LocalObject(855, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(859, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(860, Terminal.Constructor(order_terminal), owning_building_guid = 42)
LocalObject(744, SpawnTube.Constructor(Vector3(3684.234f, 2708.899f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(745, SpawnTube.Constructor(Vector3(3684.317f, 2713.653f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
LocalObject(746, SpawnTube.Constructor(Vector3(3690.941f, 2708.781f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(747, SpawnTube.Constructor(Vector3(3691.023f, 2713.536f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
LocalObject(748, SpawnTube.Constructor(Vector3(3697.648f, 2708.665f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(749, SpawnTube.Constructor(Vector3(3697.731f, 2713.419f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
LocalObject(744, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3684.234f, 2708.899f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(745, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3684.317f, 2713.653f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
LocalObject(746, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3690.941f, 2708.781f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(747, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3691.023f, 2713.536f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
LocalObject(748, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3697.648f, 2708.665f, 92.88119f), Vector3(0, 0, 181)), owning_building_guid = 42)
LocalObject(749, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3697.731f, 2713.419f, 92.88119f), Vector3(0, 0, 1)), owning_building_guid = 42)
}
Building13()
def Building13(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 43, MapID: 13
def Building13() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 43, MapID: 13
LocalBuilding(43, 13, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3788f, 2968f, 90.8505f))))
LocalObject(264, Door.Constructor(Vector3(3780.247f, 2909.708f, 92.9265f)), owning_building_guid = 43)
LocalObject(265, Door.Constructor(Vector3(3780.376f, 2916.211f, 92.9265f)), owning_building_guid = 43)
@ -875,17 +874,17 @@ object Map13 {
LocalObject(874, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(875, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(876, Terminal.Constructor(order_terminal), owning_building_guid = 43)
LocalObject(750, SpawnTube.Constructor(Vector3(3780.269f, 2910.581f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(751, SpawnTube.Constructor(Vector3(3780.352f, 2915.335f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
LocalObject(752, SpawnTube.Constructor(Vector3(3786.977f, 2910.464f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(753, SpawnTube.Constructor(Vector3(3787.059f, 2915.219f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
LocalObject(754, SpawnTube.Constructor(Vector3(3793.683f, 2910.347f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(755, SpawnTube.Constructor(Vector3(3793.766f, 2915.101f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
LocalObject(750, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3780.269f, 2910.581f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(751, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3780.352f, 2915.335f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
LocalObject(752, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3786.977f, 2910.464f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(753, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3787.059f, 2915.219f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
LocalObject(754, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3793.683f, 2910.347f, 92.8825f), Vector3(0, 0, 181)), owning_building_guid = 43)
LocalObject(755, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(3793.766f, 2915.101f, 92.8825f), Vector3(0, 0, 1)), owning_building_guid = 43)
}
Building50()
def Building50(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 44, MapID: 50
def Building50() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 44, MapID: 50
LocalBuilding(44, 50, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5470f, 4094f, 103.2367f))))
LocalObject(276, Door.Constructor(Vector3(5501.976f, 4135.442f, 105.3127f)), owning_building_guid = 44)
LocalObject(277, Door.Constructor(Vector3(5506.587f, 4140.03f, 105.3127f)), owning_building_guid = 44)
@ -907,17 +906,17 @@ object Map13 {
LocalObject(901, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(902, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(903, Terminal.Constructor(order_terminal), owning_building_guid = 44)
LocalObject(762, SpawnTube.Constructor(Vector3(5502.599f, 4136.058f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(763, SpawnTube.Constructor(Vector3(5505.961f, 4139.42f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
LocalObject(764, SpawnTube.Constructor(Vector3(5507.342f, 4131.314f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(765, SpawnTube.Constructor(Vector3(5510.704f, 4134.677f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
LocalObject(766, SpawnTube.Constructor(Vector3(5512.086f, 4126.571f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(767, SpawnTube.Constructor(Vector3(5515.448f, 4129.933f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
LocalObject(762, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5502.599f, 4136.058f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(763, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5505.961f, 4139.42f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
LocalObject(764, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5507.342f, 4131.314f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(765, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5510.704f, 4134.677f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
LocalObject(766, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5512.086f, 4126.571f, 105.2687f), Vector3(0, 0, 225)), owning_building_guid = 44)
LocalObject(767, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5515.448f, 4129.933f, 105.2687f), Vector3(0, 0, 45)), owning_building_guid = 44)
}
Building49()
def Building49(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 45, MapID: 49
def Building49() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 45, MapID: 49
LocalBuilding(45, 49, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5494f, 4394f, 103.232f))))
LocalObject(270, Door.Constructor(Vector3(5487.266f, 4335.582f, 105.308f)), owning_building_guid = 45)
LocalObject(271, Door.Constructor(Vector3(5487.281f, 4342.085f, 105.308f)), owning_building_guid = 45)
@ -939,17 +938,17 @@ object Map13 {
LocalObject(895, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(896, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(897, Terminal.Constructor(order_terminal), owning_building_guid = 45)
LocalObject(756, SpawnTube.Constructor(Vector3(5487.272f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(757, SpawnTube.Constructor(Vector3(5487.272f, 4341.209f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
LocalObject(758, SpawnTube.Constructor(Vector3(5493.98f, 4341.21f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
LocalObject(759, SpawnTube.Constructor(Vector3(5493.981f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(760, SpawnTube.Constructor(Vector3(5500.688f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(761, SpawnTube.Constructor(Vector3(5500.688f, 4341.209f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
LocalObject(756, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5487.272f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(757, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5487.272f, 4341.209f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
LocalObject(758, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5493.98f, 4341.21f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
LocalObject(759, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5493.981f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(760, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5500.688f, 4336.455f, 105.264f), Vector3(0, 0, 180)), owning_building_guid = 45)
LocalObject(761, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5500.688f, 4341.209f, 105.264f), Vector3(0, 0, 0)), owning_building_guid = 45)
}
Building48()
def Building48(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 46, MapID: 48
def Building48() : Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 46, MapID: 48
LocalBuilding(46, 48, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5796f, 4330f, 103.2358f))))
LocalObject(282, Door.Constructor(Vector3(5749.93f, 4293.454f, 105.3118f)), owning_building_guid = 46)
LocalObject(283, Door.Constructor(Vector3(5754.54f, 4298.042f, 105.3118f)), owning_building_guid = 46)
@ -971,17 +970,17 @@ object Map13 {
LocalObject(927, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(928, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(929, Terminal.Constructor(order_terminal), owning_building_guid = 46)
LocalObject(768, SpawnTube.Constructor(Vector3(5750.552f, 4294.067f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(769, SpawnTube.Constructor(Vector3(5753.914f, 4297.429f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
LocalObject(770, SpawnTube.Constructor(Vector3(5755.296f, 4289.323f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(771, SpawnTube.Constructor(Vector3(5758.658f, 4292.686f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
LocalObject(772, SpawnTube.Constructor(Vector3(5760.039f, 4284.58f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(773, SpawnTube.Constructor(Vector3(5763.401f, 4287.942f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
LocalObject(768, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5750.552f, 4294.067f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(769, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5753.914f, 4297.429f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
LocalObject(770, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5755.296f, 4289.323f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(771, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5758.658f, 4292.686f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
LocalObject(772, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5760.039f, 4284.58f, 105.2678f), Vector3(0, 0, 225)), owning_building_guid = 46)
LocalObject(773, SpawnTube.Constructor(respawn_tube_sanctuary, Vector3(5763.401f, 4287.942f, 105.2678f), Vector3(0, 0, 45)), owning_building_guid = 46)
}
Building37()
def Building37(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 47, MapID: 37
def Building37() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 47, MapID: 37
LocalBuilding(47, 37, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2764f, 4842f, 56.08539f))))
LocalObject(300, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 47)
LocalObject(288, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(2767.589f, 4841.958f, 52.10039f), Vector3(0, 0, 181)), owning_building_guid = 47, terminal_guid = 300)
@ -989,7 +988,7 @@ object Map13 {
Building24()
def Building24(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 48, MapID: 24
def Building24() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 48, MapID: 24
LocalBuilding(48, 24, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2928f, 5050f, 56.08539f))))
LocalObject(301, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 48)
LocalObject(289, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(2927.957f, 5046.411f, 52.10039f), Vector3(0, 0, -89)), owning_building_guid = 48, terminal_guid = 301)
@ -997,7 +996,7 @@ object Map13 {
Building36()
def Building36(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 49, MapID: 36
def Building36() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 49, MapID: 36
LocalBuilding(49, 36, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3018f, 4618f, 56.08539f))))
LocalObject(302, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 49)
LocalObject(290, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3018.043f, 4621.589f, 52.10039f), Vector3(0, 0, 91)), owning_building_guid = 49, terminal_guid = 302)
@ -1005,7 +1004,7 @@ object Map13 {
Building23()
def Building23(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 50, MapID: 23
def Building23() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 50, MapID: 23
LocalBuilding(50, 23, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3212f, 4768f, 56.08539f))))
LocalObject(303, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 50)
LocalObject(291, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3208.411f, 4768.042f, 52.10039f), Vector3(0, 0, 1)), owning_building_guid = 50, terminal_guid = 303)
@ -1013,7 +1012,7 @@ object Map13 {
Building6()
def Building6(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 51, MapID: 6
def Building6() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 51, MapID: 6
LocalBuilding(51, 6, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3506f, 2896f, 90.85538f))))
LocalObject(304, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 51)
LocalObject(292, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3509.589f, 2895.957f, 86.87038f), Vector3(0, 0, 181)), owning_building_guid = 51, terminal_guid = 304)
@ -1021,7 +1020,7 @@ object Map13 {
Building15()
def Building15(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 52, MapID: 15
def Building15() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 52, MapID: 15
LocalBuilding(52, 15, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3572f, 2652f, 90.85646f))))
LocalObject(305, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 52)
LocalObject(293, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3574.568f, 2654.508f, 86.87146f), Vector3(0, 0, 136)), owning_building_guid = 52, terminal_guid = 305)
@ -1029,7 +1028,7 @@ object Map13 {
Building14()
def Building14(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 53, MapID: 14
def Building14() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 53, MapID: 14
LocalBuilding(53, 14, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3808f, 2654f, 90.85372f))))
LocalObject(306, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 53)
LocalObject(294, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3805.492f, 2656.568f, 86.86872f), Vector3(0, 0, 46)), owning_building_guid = 53, terminal_guid = 306)
@ -1037,7 +1036,7 @@ object Map13 {
Building5()
def Building5(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 54, MapID: 5
def Building5() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 54, MapID: 5
LocalBuilding(54, 5, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3876f, 2896f, 90.85098f))))
LocalObject(307, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 54)
LocalObject(295, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(3872.411f, 2896.043f, 86.86597f), Vector3(0, 0, 1)), owning_building_guid = 54, terminal_guid = 307)
@ -1045,7 +1044,7 @@ object Map13 {
Building52()
def Building52(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 55, MapID: 52
def Building52() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 55, MapID: 52
LocalBuilding(55, 52, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5394f, 4238f, 103.2297f))))
LocalObject(308, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 55)
LocalObject(296, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(5397.589f, 4237.958f, 99.24469f), Vector3(0, 0, 181)), owning_building_guid = 55, terminal_guid = 308)
@ -1053,7 +1052,7 @@ object Map13 {
Building51()
def Building51(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 56, MapID: 51
def Building51() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 56, MapID: 51
LocalBuilding(56, 51, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5600f, 4034f, 103.2345f))))
LocalObject(309, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 56)
LocalObject(297, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(5600.042f, 4037.589f, 99.24946f), Vector3(0, 0, 91)), owning_building_guid = 56, terminal_guid = 309)
@ -1061,7 +1060,7 @@ object Map13 {
Building42()
def Building42(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 57, MapID: 42
def Building42() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 57, MapID: 42
LocalBuilding(57, 42, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5622f, 4456f, 103.2351f))))
LocalObject(310, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 57)
LocalObject(298, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(5621.958f, 4452.411f, 99.25006f), Vector3(0, 0, -89)), owning_building_guid = 57, terminal_guid = 310)
@ -1069,7 +1068,7 @@ object Map13 {
Building41()
def Building41(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 58, MapID: 41
def Building41() : Unit = { // Name: vt_dropship Type: vt_dropship GUID: 58, MapID: 41
LocalBuilding(58, 41, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5834f, 4218f, 103.2365f))))
LocalObject(311, Terminal.Constructor(dropship_vehicle_terminal), owning_building_guid = 58)
LocalObject(299, VehicleSpawnPad.Constructor(dropship_pad_doors, Vector3(5830.411f, 4218.042f, 99.25149f), Vector3(0, 0, 1)), owning_building_guid = 58, terminal_guid = 311)
@ -1077,79 +1076,79 @@ object Map13 {
Building30()
def Building30(): Unit = { // Name: VS_NW_Tport_01 Type: vt_spawn GUID: 59, MapID: 30
def Building30() : Unit = { // Name: VS_NW_Tport_01 Type: vt_spawn GUID: 59, MapID: 30
LocalBuilding(59, 30, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2900f, 4758f, 56.08539f))))
}
Building29()
def Building29(): Unit = { // Name: VS_NW_Tport_02 Type: vt_spawn GUID: 60, MapID: 29
def Building29() : Unit = { // Name: VS_NW_Tport_02 Type: vt_spawn GUID: 60, MapID: 29
LocalBuilding(60, 29, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2940f, 4932f, 56.08539f))))
}
Building32()
def Building32(): Unit = { // Name: VS_NW_Tport_03 Type: vt_spawn GUID: 61, MapID: 32
def Building32() : Unit = { // Name: VS_NW_Tport_03 Type: vt_spawn GUID: 61, MapID: 32
LocalBuilding(61, 32, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3060f, 4908f, 56.08539f))))
}
Building31()
def Building31(): Unit = { // Name: VS_NW_Tport_04 Type: vt_spawn GUID: 62, MapID: 31
def Building31() : Unit = { // Name: VS_NW_Tport_04 Type: vt_spawn GUID: 62, MapID: 31
LocalBuilding(62, 31, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3124f, 4776f, 56.08539f))))
}
Building19()
def Building19(): Unit = { // Name: VS_S_Tport_03 Type: vt_spawn GUID: 63, MapID: 19
def Building19() : Unit = { // Name: VS_S_Tport_03 Type: vt_spawn GUID: 63, MapID: 19
LocalBuilding(63, 19, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3610f, 2732f, 90.85205f))))
}
Building18()
def Building18(): Unit = { // Name: VS_S_Tport_01 Type: vt_spawn GUID: 64, MapID: 18
def Building18() : Unit = { // Name: VS_S_Tport_01 Type: vt_spawn GUID: 64, MapID: 18
LocalBuilding(64, 18, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3652f, 2908f, 90.8536f))))
}
Building21()
def Building21(): Unit = { // Name: VS_S_Tport_02 Type: vt_spawn GUID: 65, MapID: 21
def Building21() : Unit = { // Name: VS_S_Tport_02 Type: vt_spawn GUID: 65, MapID: 21
LocalBuilding(65, 21, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3730f, 2908f, 90.8536f))))
}
Building20()
def Building20(): Unit = { // Name: VS_S_Tport_04 Type: vt_spawn GUID: 66, MapID: 20
def Building20() : Unit = { // Name: VS_S_Tport_04 Type: vt_spawn GUID: 66, MapID: 20
LocalBuilding(66, 20, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3766f, 2732f, 90.84919f))))
}
Building45()
def Building45(): Unit = { // Name: VS_NE_Tport_04 Type: vt_spawn GUID: 67, MapID: 45
def Building45() : Unit = { // Name: VS_NE_Tport_04 Type: vt_spawn GUID: 67, MapID: 45
LocalBuilding(67, 45, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5484f, 4208f, 103.2298f))))
}
Building44()
def Building44(): Unit = { // Name: VS_NE_Tport_01 Type: vt_spawn GUID: 68, MapID: 44
def Building44() : Unit = { // Name: VS_NE_Tport_01 Type: vt_spawn GUID: 68, MapID: 44
LocalBuilding(68, 44, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5552f, 4344f, 103.2289f))))
}
Building46()
def Building46(): Unit = { // Name: VS_NE_Tport_03 Type: vt_spawn GUID: 69, MapID: 46
def Building46() : Unit = { // Name: VS_NE_Tport_03 Type: vt_spawn GUID: 69, MapID: 46
LocalBuilding(69, 46, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5690f, 4164f, 103.2289f))))
}
Building47()
def Building47(): Unit = { // Name: VS_NE_Tport_02 Type: vt_spawn GUID: 70, MapID: 47
def Building47() : Unit = { // Name: VS_NE_Tport_02 Type: vt_spawn GUID: 70, MapID: 47
LocalBuilding(70, 47, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5692f, 4312f, 103.2289f))))
}
Building26()
def Building26(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 71, MapID: 26
def Building26() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 71, MapID: 26
LocalBuilding(71, 26, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2768f, 4768f, 56.08539f))))
LocalObject(1057, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 71)
LocalObject(702, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(2767.853f, 4767.976f, 54.61439f), Vector3(0, 0, -89)), owning_building_guid = 71, terminal_guid = 1057)
@ -1157,7 +1156,7 @@ object Map13 {
Building38()
def Building38(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 72, MapID: 38
def Building38() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 72, MapID: 38
LocalBuilding(72, 38, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2816f, 4700f, 56.08539f))))
LocalObject(1058, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 72)
LocalObject(703, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(2815.915f, 4699.877f, 54.61439f), Vector3(0, 0, 225)), owning_building_guid = 72, terminal_guid = 1058)
@ -1165,7 +1164,7 @@ object Map13 {
Building28()
def Building28(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 73, MapID: 28
def Building28() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 73, MapID: 28
LocalBuilding(73, 28, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2946f, 4622f, 56.08539f))))
LocalObject(1059, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 73)
LocalObject(704, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(2946.024f, 4621.853f, 54.61439f), Vector3(0, 0, 181)), owning_building_guid = 73, terminal_guid = 1059)
@ -1173,7 +1172,7 @@ object Map13 {
Building25()
def Building25(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 74, MapID: 25
def Building25() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 74, MapID: 25
LocalBuilding(74, 25, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3000f, 5048f, 56.08539f))))
LocalObject(1060, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 74)
LocalObject(705, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(2999.976f, 5048.147f, 54.61439f), Vector3(0, 0, 1)), owning_building_guid = 74, terminal_guid = 1060)
@ -1181,7 +1180,7 @@ object Map13 {
Building39()
def Building39(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 75, MapID: 39
def Building39() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 75, MapID: 39
LocalBuilding(75, 39, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3094f, 5010f, 56.08539f))))
LocalObject(1061, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 75)
LocalObject(706, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3094.085f, 5010.123f, 54.61439f), Vector3(0, 0, 45)), owning_building_guid = 75, terminal_guid = 1061)
@ -1189,7 +1188,7 @@ object Map13 {
Building27()
def Building27(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 76, MapID: 27
def Building27() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 76, MapID: 27
LocalBuilding(76, 27, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3212f, 4842f, 56.08539f))))
LocalObject(1062, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 76)
LocalObject(707, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3212.147f, 4842.024f, 54.61439f), Vector3(0, 0, 91)), owning_building_guid = 76, terminal_guid = 1062)
@ -1197,7 +1196,7 @@ object Map13 {
Building17()
def Building17(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 77, MapID: 17
def Building17() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 77, MapID: 17
LocalBuilding(77, 17, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3506f, 2820f, 90.8536f))))
LocalObject(1063, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 77)
LocalObject(708, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3505.853f, 2819.976f, 89.3826f), Vector3(0, 0, -89)), owning_building_guid = 77, terminal_guid = 1063)
@ -1205,7 +1204,7 @@ object Map13 {
Building8()
def Building8(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 78, MapID: 8
def Building8() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 78, MapID: 8
LocalBuilding(78, 8, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3658f, 3020f, 90.8536f))))
LocalObject(1064, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 78)
LocalObject(709, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3657.976f, 3020.147f, 89.3826f), Vector3(0, 0, 1)), owning_building_guid = 78, terminal_guid = 1064)
@ -1213,7 +1212,7 @@ object Map13 {
Building11()
def Building11(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 79, MapID: 11
def Building11() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 79, MapID: 11
LocalBuilding(79, 11, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3660f, 2590f, 90.8536f))))
LocalObject(1065, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 79)
LocalObject(710, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3660.024f, 2589.853f, 89.3826f), Vector3(0, 0, 181)), owning_building_guid = 79, terminal_guid = 1065)
@ -1221,7 +1220,7 @@ object Map13 {
Building9()
def Building9(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 80, MapID: 9
def Building9() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 80, MapID: 9
LocalBuilding(80, 9, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3722f, 3020f, 90.8536f))))
LocalObject(1066, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 80)
LocalObject(711, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3721.976f, 3020.147f, 89.3826f), Vector3(0, 0, 1)), owning_building_guid = 80, terminal_guid = 1066)
@ -1229,7 +1228,7 @@ object Map13 {
Building10()
def Building10(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 81, MapID: 10
def Building10() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 81, MapID: 10
LocalBuilding(81, 10, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3724f, 2588f, 90.85265f))))
LocalObject(1067, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 81)
LocalObject(712, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3724.024f, 2587.853f, 89.38165f), Vector3(0, 0, 181)), owning_building_guid = 81, terminal_guid = 1067)
@ -1237,7 +1236,7 @@ object Map13 {
Building16()
def Building16(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 82, MapID: 16
def Building16() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 82, MapID: 16
LocalBuilding(82, 16, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3878f, 2824f, 90.8536f))))
LocalObject(1068, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 82)
LocalObject(713, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(3878.147f, 2824.024f, 89.3826f), Vector3(0, 0, 91)), owning_building_guid = 82, terminal_guid = 1068)
@ -1245,7 +1244,7 @@ object Map13 {
Building55()
def Building55(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 83, MapID: 55
def Building55() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 83, MapID: 55
LocalBuilding(83, 55, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5420f, 4174f, 103.2318f))))
LocalObject(1069, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 83)
LocalObject(714, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5419.853f, 4173.976f, 101.7608f), Vector3(0, 0, -89)), owning_building_guid = 83, terminal_guid = 1069)
@ -1253,7 +1252,7 @@ object Map13 {
Building43()
def Building43(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 84, MapID: 43
def Building43() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 84, MapID: 43
LocalBuilding(84, 43, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5420f, 4298f, 103.2333f))))
LocalObject(1070, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 84)
LocalObject(715, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5419.853f, 4297.976f, 101.7623f), Vector3(0, 0, -89)), owning_building_guid = 84, terminal_guid = 1070)
@ -1261,7 +1260,7 @@ object Map13 {
Building54()
def Building54(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 85, MapID: 54
def Building54() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 85, MapID: 54
LocalBuilding(85, 54, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5686f, 4420f, 103.2329f))))
LocalObject(1071, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 85)
LocalObject(716, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5686.085f, 4420.123f, 101.7619f), Vector3(0, 0, 45)), owning_building_guid = 85, terminal_guid = 1071)
@ -1269,7 +1268,7 @@ object Map13 {
Building57()
def Building57(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 86, MapID: 57
def Building57() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 86, MapID: 57
LocalBuilding(86, 57, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5710f, 4046f, 103.2289f))))
LocalObject(1072, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 86)
LocalObject(717, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5710.123f, 4045.915f, 101.7579f), Vector3(0, 0, 135)), owning_building_guid = 86, terminal_guid = 1072)
@ -1277,7 +1276,7 @@ object Map13 {
Building53()
def Building53(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 87, MapID: 53
def Building53() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 87, MapID: 53
LocalBuilding(87, 53, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5752f, 4088f, 103.2289f))))
LocalObject(1073, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 87)
LocalObject(718, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5752.123f, 4087.915f, 101.7579f), Vector3(0, 0, 135)), owning_building_guid = 87, terminal_guid = 1073)
@ -1285,10 +1284,22 @@ object Map13 {
Building56()
def Building56(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 88, MapID: 56
def Building56() : Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 88, MapID: 56
LocalBuilding(88, 56, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5794f, 4132f, 103.2289f))))
LocalObject(1074, Terminal.Constructor(ground_vehicle_terminal), owning_building_guid = 88)
LocalObject(719, VehicleSpawnPad.Constructor(mb_pad_creation, Vector3(5794.123f, 4131.915f, 101.7579f), Vector3(0, 0, 135)), owning_building_guid = 88, terminal_guid = 1074)
}
Building1()
def Building1() : Unit = { // Name: ??? Type: ??? GUID: 90, MapID: 1
LocalBuilding(90, 1, FoundationBuilder(WarpGate.Structure(Vector3(2514.6094f, 5311.7656f, 65.984375f))))
}
Building3()
def Building3() : Unit = { // Name: ??? Type: ??? GUID: 89, MapID: 3
LocalBuilding(89, 3, FoundationBuilder(WarpGate.Structure(Vector3(4175.6484f, 2402.8125f, 163.9375f))))
}
}
}